Автор Тема: Преместване на root файлова система  (Прочетена 3684 пъти)

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Здравейте,

имам следният проблем - искам да преместя руут файловата система от мястото където текущо си се намира на твърд диск който е монтиран вече в системата. Да обясня проблема по -подробно:
това е Ембедед (базирана на PowerPC) система, която бутва от РОМ по следния начин:
1.Зарежда се боутлодър ( Das U-Boot ) от flash памет.
2. бутлодъра зарежда линукс кернела (2.6.12) и ром-имидж с елементарна файлова система и BusyBox пак от flash паметта. BusyBox-a всъщност е шел който съдържа основните команди (ls, sd, mkdir .....). Така се получава работеща минимална линукс конфигурация.
За системата има закачен SATA диск, който едва след зареждането на кернела бива разпознат. Посредством NFS копирах нужната ми файлова структура (която е дадена от производителя на платката за бутване по мрежата през tftp или NFS) на диска, но проблема ми е как да премествам root file system от мястото където е монтирана текущо в /mnt където е монтиран SATA диска.
Няма проблем платката да си зарежда от мрежата, но на мен ми трябва през твърдия диск. Проблема е че бут-лоадера не разпознава САТА и затова не може да става автоматично директно от диска пускането на Линукса-а.
Аз опитах с piwot_root, като преди това демонтирах "/" ,но дава грешка "pivot_root: Device or resource busy"
Някой да има идея как да преместя.
мерси за отзовалите се '<img'>
Активен

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
Преместване на root файлова система
« Отговор #1 -: Nov 04, 2005, 13:08 »
С intrd файл с необходимите модули или с кернел в който са компилирани небходимите магии. Евентуално със симлинк може да стане.
Активен

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Преместване на root файлова система
« Отговор #2 -: Nov 04, 2005, 14:35 »
Нека разясним:

Имаш някакъв (микро?)процесор (или цяла машина ?) на базата на PowerPC.
Този процесор има вкаран bootlooader във flash паметта, който зарежда Linux (ядро) пак от flash-a + някакъв shell , който ти осигурява минимална система.
След като всичко това се зареди може да видиш и достъпиш до закачен SATA хард диск.

Искаш системата да се зарежда от SATA хард диска.
----

проблема е , че доста ти е специализиран софтуера.

Сменяш ядрото (във флаша) с подръжка на сата и /root дяла се намира на sda (SATA хадр диска).

от там просто редактираш конфига на bootloader-a, кое му е root (въпреки че не мога да разбера за микропроцесор ли говориме или за просто едно PowerPC ?).

защото има разлика м/у bootloader при едно PC и при микропроцесор !
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #3 -: Nov 04, 2005, 16:14 »
Това е едноплатков компютър, базиран на PowerPC процесор. Освен процесора на платка има РАМ памет, флаш-памет, няколко мрежови адатпера, видеоконтролер, УСБ, звук и доста други работи.
Значи самата платформа си им бутлоадер (нещо като ЛИЛО, но се казва Дас У-Боот -  http://sourceforge.net/projects/u-boot ), посредством който първоначално могат да се правят малки диагностики  и след това да се стартира операционата система. Бутлоадера, кернела и руут-файловата система са .bin файлове които си ги качвам през специален програматор на определени адреси във флаша на платката. При РЕСЕТ просесора търси на адреса където е бутлоадера и го стартира и така нататък.
Проблема е че този бутлоадер не направен да разпознава и съответно не разпознава SATA контролера и не знае че там има диск.  Нормално след това се зарежда ОС или през мрежата -NFS или през флаш паметта.
Аз искам обаче да зареждането да става от диска. Знам че няма как да стане директно. За целта съм компилирал кернела да поддържа САТА и след като стартира кернела от флаш-а вече диска се разпознава и мога да си го монтирам. Въпроса ми е как да преместя корена на файловата система, така че началото да е на диска и да мога да си работя нормално. на диска съм копирал вече необходимата ми система - както казах - копирах я директно от мрежовата файлова система.
Засега съм постигнал частичен успех с "chroot".
След като зареди кернела и разпознае диска, монтирам го и му казвам "chroot /mnt" и наистина се премества корена там кадето искам. Монтирам още веднъж proc:  "/bin/mount -t proc proc /proc". Въпроса ми е дали няма по-елегантен начин, щото така ми се струва, че евентуално като почна да се мъча да инсталирам Х и т.н. ще има проблеми.

Пак мерси на отзовалите се  '<img'>
Активен

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Преместване на root файлова система
« Отговор #4 -: Nov 04, 2005, 19:24 »
0.
Ами дал си още полезна информация, но тъкмо почна да се изяснява картинката и спря '<img'>

дай повечко информация относно ядрото и роот файловата система - неговата си какво съдържа.
------

1.
Така.
Относно bootloader-a & flash памета (адресите , ресетите , прочие), в момента се занимавам с PIC (MCUs) и разбирам как стоят нещата с него и възможностите. (поне доколкото в началото нещата с поемат от процесора и ползването на flash паметта).

абе къв е проблема да ползваш flash-a :?
сега като се замислих и ... затова е това а бе ?

хмм така.

20.
Значи ако в това /mnt/sdaX/ си има binuntils , специфичните FS utils, основните библиотеки - glibc, etc. проблем никакъв с chroot '<img'>

-> нямаш 100% гаранция естествено .!

--

да се върнем на бут процеса

както BIOS-a предава управлението на bootloader-a , така и последния прави това на LINUX (линукс е името на ядрото и в случея като такова ще го ползвам).

31.Та ако ядрото (във флаша) има подръжка на SATA и е lilo подобен даваш root=/dev/sdaX , а това се подава на ядрото и то си се оправя '<img'>

та компилираш си ново или същото ядро,но със САТА подръжка и го вкарваш.

32.Другата опция е, ако ядрото във флаша не ти поддържа САТА и не може да набуташ нова версия ядро, защото може твойта версия да е със специфични пачове* може да ползваш initrd. тук следва едно голямо разяснение , това initrd не ти оправя работата със САТА-та. Но ето ми я идеята, все трябва да има някакъв 3d parity или не 3dparity драйвер (максимално) не зависим от версията на ядрото , а само да гледа една основa: примерно от 2.4.х до 2.4.ъ или 2.6.х и 2.6.ъ.

Как ще добавиш initrd подръжка:

 Щом се ползва Линукс , то имаш изходният код, защото Линукс е под GPL (!'<img'>

вземи конфига на това във флаша ,initrd подръжката трябва да е В ядрото , а не като модул (логично де) !
Та просто вкарваш (y) на initrd в конфига, компилираш , initrd IMG-а го записваш къде - в root FS-a на flash-a като указваш в bootloader-a ala lilo initrd=/boot/initrd.img !
и вкарваш подръжката на sata в initrd.
проблема е къв ше е тоя 3d parity или как да го наречем standalone , kernel independat , kernel not version specific driver.

Като цяло предимството на initrd е , че ядрото трябва да е до някаквъ размер, а initrd ти позволява да наблъскаш нещо което ти трябва по време на процеса , но е голямо - точно като нещо като това, което мoже би ще ти се наложи да търсиш за САТА, ако опреш до тоя вариант.

* (дано ако ги има не променя управлението на IDE контролерите , защото това ще повлиае на IDE/SATA и ако не е

--

надявам се не съм те объркал , но се опитвам да бъда изчерпателен.

---

защо криеш модела на туй чудо '<img'>
дай марка, модел , прочие, дай информация !
благодаря ти предварително хахахаха
 'B)'  ':p'  '<img'>
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #5 -: Nov 04, 2005, 19:29 »
Съжалявам сега трябва да тръгвам спешно - не мога да отговоря на въпросите, но в понеделник ще го направя.
Поздрави!
Активен

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #6 -: Nov 07, 2005, 15:41 »
Значи да доизясня - САТА диска се разпознава и работи, но едва след като зареди ядрото и монитра фаиловата система от флаша, т.е. появява се точката /dev/sda. Мога да прекомпилирам кернела и файловата система и да пефлашвам.
Значи намерсих следното опростено сравнение между pivot_root и chroot, цитат:
Цитат

> > Would you be able to explain the difference between pivot_root and chroot?  
> >
> > Sorry, it is not clear to me, from reading the man pages, or google.
>
> The main difference is that pivot_root is intended to switch the complete
> system over to a new root directory and remove dependencies on the old
> one, so that you would be able to unmount the original root directory and
> proceed as if it had never been in use. chroot is intended to apply for
> the lifetime of a single process, with the rest of the system continuing
> to run in the old root dir, and the system being unchanged when the
> chrooted process exits.
>
> The difference is shrinking now that Linux has per-process namespaces
> anyway. If you "chroot" a single init-type process that never exits and
> don't care about unmounting the original root, it's the same for
> practical purposes.


от където стигнах до извода че pivot_root е по-подходящо за мен, но пък ми дава грешка от типа : "Device or resource busy".
Някой да има идея как става номера да демонтирам коректно стария root и да монтирам новия.

zeridon спомена за симлинк - как се работи с него?

Иначе платката е самоделка т.е. използвано е референтен дизайн на IBM и са добавени още работи по нея> до 4 ГБ ДДР РАМ,  4 САТА порта, звук, АТИ Мобилити Радеон - 16МБ РАМ, 3х УСБ-та, 4х гигабитови етернет контролера, всокопрецизен GPS приемник, SD/MMC четец на карти, тъчскриин, аналогови дигитални входове и изходи, сериен порт. ЦПУ-то е на 500MHz и няма ниакакъв охладител по него - дърпа само 4W '<img'>
Активен

nix

  • Напреднали
  • *****
  • Публикации: 442
    • Профил
Преместване на root файлова система
« Отговор #7 -: Nov 07, 2005, 16:26 »
http://www-128.ibm.com/develop....ireBoot
Прочети това надявам се да ти е ползено предлагам ти да си едитнеш initrd.img и linuxrc фаила който е вътре.За информация това става така/не е описано в горната статия/:
<правиш си директория за стария и новият имидж>
#mkdir /boot/newinitrd
#mkdir /boot/oldinitrd
<моунтваш го>
#mount -t cramfs -o loop /boot/initrd.img /boot/oldinitrd
<копираш го за да можеш да го едитваш игнорирай съобщенията за грешки спокойно всичко е ок'<img'>>
#cp /boot/oldinitrd/* /boot/newinitrd/ -rf
<правиш каквото ще правиш в /boot/newinitrd>
<правиш си нов initrd.img>
#mkcramfs /boot/newinitrd.img initrd.img.new
<заместваш initrd.img с initrd.img.new в /boot >
#cp initrd.img.new /boot/initrd.img
Не съм го правил с PowerPC но се надявам да нямаш проблеми '<img'>
Успех'<img'>
Активен

DEBIAN GNU/Linux SID/kernel-2.6.16

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Преместване на root файлова система
« Отговор #8 -: Nov 07, 2005, 16:27 »
Оу само да кажа, че бях забравил да ти напиша userspace кернел вариант '<img'>

а довечера като имам време ще ти прочета отговора '<img'>
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #9 -: Nov 08, 2005, 16:08 »
@nix
Мерси за тип-а '<img'> .аз правя имиджите с genext2fs, след това компресирам и накрая mkimage, но проблема ми е как да си оправя конфигурацонните фаилове  '<img'>
Активен

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Преместване на root файлова система
« Отговор #10 -: Nov 08, 2005, 16:22 »
Цитат (jivkojj @ Ноември 07 2005,16:41)
Значи да доизясня - САТА диска се разпознава и работи, но едва след като зареди ядрото и монитра фаиловата система от флаша, т.е. появява се точката /dev/sda. Мога да прекомпилирам кернела и файловата система и да пефлашвам.
Значи намерсих следното опростено сравнение между pivot_root и chroot, цитат:
Цитат

> > Would you be able to explain the difference between pivot_root and chroot?  
> >
> > Sorry, it is not clear to me, from reading the man pages, or google.
>
> The main difference is that pivot_root is intended to switch the complete
> system over to a new root directory and remove dependencies on the old
> one, so that you would be able to unmount the original root directory and
> proceed as if it had never been in use. chroot is intended to apply for
> the lifetime of a single process, with the rest of the system continuing
> to run in the old root dir, and the system being unchanged when the
> chrooted process exits.
>
> The difference is shrinking now that Linux has per-process namespaces
> anyway. If you "chroot" a single init-type process that never exits and
> don't care about unmounting the original root, it's the same for
> practical purposes.


от където стигнах до извода че pivot_root е по-подходящо за мен, но пък ми дава грешка от типа : "Device or resource busy".
Някой да има идея как става номера да демонтирам коректно стария root и да монтирам новия.

zeridon спомена за симлинк - как се работи с него?

Иначе платката е самоделка т.е. използвано е референтен дизайн на IBM и са добавени още работи по нея> до 4 ГБ ДДР РАМ,  4 САТА порта, звук, АТИ Мобилити Радеон - 16МБ РАМ, 3х УСБ-та, 4х гигабитови етернет контролера, всокопрецизен GPS приемник, SD/MMC четец на карти, тъчскриин, аналогови дигитални входове и изходи, сериен порт. ЦПУ-то е на 500MHz и няма ниакакъв охладител по него - дърпа само 4W '<img'>

Ясно, така:

1. Ти ли си правил тази 'готина' латчица 'B)'

2. Дай точно какви команди и в каква пореденост правиш този privot_root.

Четно да ти кажа за първи път чувам за Privot_root, но щом разликата е само тази - описната горе м/у chroot и него, значи ясно как да действаме.

Значи доколкото разбрах аз: правиш privot_root, т.е сменяш root файловата система и тогава unmount-ваш старта.

#privot_root _COMMAND_
#unmount /dev/OLDROOT

а не unmount / , защото / е вече NEWROOT '<img'>

всъщност ти дай твойте команди , пък аз ще проучя , че интересно и ще се разберем и най-вероятно ще се реши проблема хитро, ти сам добре си се насочил '<img'> '<img'>

едит: но (почти съм сигурен , че ) разбираш , че това няма да е директно бутване от (bootloader-а директно в) САТА-та, ами ще се преместиш след първ. зареждане на САТА-та и всичко ще ти е там '<img'>

А защо искаш да минеш на САТА-та, а не останеш на флаш-а при положение , че и от флаш-а може да достъпваш САТА хард диска '<img'>

-------

Относно кога ти се появява точката за достъп разбирам , че SATA подръжката ти е като модул (?).
Ми добре - компилирай/вкарай я в ядрото, щом можеш да вкараш ново ядро и не се занимавай с гимнастики от типа на privot_root '<img'>

---

кой конф. файлове, конф. файлове би трябвало да са спрямо / (root fs-a) ,ако има зависимости или /dev/...

а ти при положение ,че прехвърляш root-a 1:1 проблеми не би трябвало да имаш , интерфейс-а с у-вата пак ще си е през /dev/, т.е което сочи в /dev/ ще си го намира, т.е не ти разбирал проблема :?
Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #11 -: Nov 09, 2005, 16:54 »
Така, получи се донякъде това което исках, сега тествам да видя какви проблеми могат да изникнат. Ще опиша накратко стъпка по стъпка, ако на някой се наложи евентуално да се бори със същото пък и да ме корегирате ако имам пропуски  '<img'> .
1.монтирам си диска на които ще ми бъде бъдещата файловата система:
# mount -t ext3 /dev/sda1 /mnt
2.създавам си директория на диска където ще се премести старата root файлова система
#mkdir /mnt/old_root
3. демонтирам старата /proc :
#umount /proc
4. Отивам в пътя където ще е новия root. Ако не е текуща новата директория pivot_root връща че ресурса е зает и не може да се изпълни
#cd /mnt
5. Разместване на root:
#pivot_root . /mnt/old_root
6. Монтирам обратно proc:
#/bin/mount -t proc proc /proc

Трябва да отбележа, че предварително съм създал на диска структурата с директориите и файловете. Това горното го направих в скрипт.
Понеже съм много нов в линукс сега тръбва да разбера как да актуализирам новите настройки от /etc
Активен

nix

  • Напреднали
  • *****
  • Публикации: 442
    • Профил
Преместване на root файлова система
« Отговор #12 -: Nov 09, 2005, 17:26 »
Може да не сам те разбрал правилно, но останах с впечатление, че искаш директно да моунтнеш root системата на друг device/още по време на бутващият процес/!Което става с linuxrc там се указва root и с modprobe си дигаш съответното устроиство каквото и да било то!
'<img'>
Активен

DEBIAN GNU/Linux SID/kernel-2.6.16

jivkojj

  • Напреднали
  • *****
  • Публикации: 139
    • Профил
Преместване на root файлова система
« Отговор #13 -: Nov 09, 2005, 17:34 »
Цитат (nix @ Ноември 09 2005,18:26)
Може да не сам те разбрал правилно, но останах с впечатление, че искаш директно да моунтнеш root системата на друг device/още по време на бутващият процес/!Което става с linuxrc там се указва root и с modprobe си дигаш съответното устроиство каквото и да било то!
'<img'>

Точно това искам, но не мога да загрея как става с linuxrc. Това някаква опция при компилиране на ядрото ли е, или след това се стартира?
Активен

the_real_maniac

  • Напреднали
  • *****
  • Публикации: 1258
  • Kernel panic, me - no panic ;-) :-)
    • Профил
Преместване на root файлова система
« Отговор #14 -: Nov 09, 2005, 17:44 »
Това ти го казах по-горе , че root се подава по време на зареждането, но ето го пак '<img'>

Еми подава се аргумент към ядрото root.

ако имаш _kernelName_ = linux-2.4.18
искаш root fs да е на /dev/sda0

linux-2.4.18 root=/dev/sda0

в lilo.conf се описва по следния начин

Примерен код


_cut_

root=/dev/sda0 (това е глобално)

image = /path/to/linux-2.4.18
      label=linux-2.4.18
      otheroptions
#    root = /dev/hda0 (това е локално)
# всяки вариант, койото не е описан определен / локален
#root, приема глобалния;)
#и пак казвам, че го бях казал, така че погледни по-горе
#Успех :)

_cut_

Активен

Powered by Debian GNU / LINUX /// Intel inside ...

„Насилието е последното убежище на некомпетентността“ - Айзък Азимов (1920 — 1992)

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Root фланелка?
Живота, вселената и някакви други глупости
sebastianz55 0 3137 Последна публикация Aug 01, 2004, 11:25
от sebastianz55
Root
Настройка на програми
satir 6 1928 Последна публикация Mar 01, 2008, 20:58
от Bagatur
Root
Настройка на програми
Darks 1 798 Последна публикация Apr 06, 2008, 08:51
от petkoned
Нещо стана с root паролaтa :(
Настройка на програми
panagonov 3 881 Последна публикация May 01, 2008, 19:00
от panagonov
Root via web
Web development
XsPiDeR 3 2527 Последна публикация Nov 05, 2008, 07:18
от luda_glawa