Üdv mindenkinek!
A problémaval régóta kűzdök, eléggé megszenvedtem vele, és ahogy a netet olvastam más is küzd hasonlóval ezért írom új témába annak ellenére, hogy egyszer már leírtam a dolgot egy válaszban.
A hardware lényege, hogy a vinyók USB-sek 2 van belőlük egy rakat vingyógy egy root meg egy swap az elsőn /home meg az ntfs "Adatok" a másodikon.
Ubi install után automatikusan kitöltötte az fstab-ot mindenki a helyén minden particióra UUID-vel hivatkozik. A rendszer nem működött rendesen, mert bootolásnál az fsck-t nem tudta megcsinálni a 2 vinyón lévő particióknál. Az fstab-ban kikapcsoltam az fsck-t így működött a dolog egészen csütörtökig, amikor is megbolondult az egész rendszer.
Valami miatt a rendszer nem tudta felmountolni boot közben se a /home-ot se az "Adatok"-at. Arra tippeltem, hogy a boot közben a műveletek sorrendje egyszerűen rossz, és az /etc/rsS-ben át kell írni a számokat és megoldódik a dolog.
A gond az volt, hogy 4 nap alatt sem sikerült rájönnöm ki az és hol van, aki az USB-s cuccokat a /media alá bepakolja. Mert amikor nem volt /home-om meg az "Adatok" nem a helyére került, akkor miután feljött a rendszer a /media alatt ott volt az "Adatok" is meh a /home is "disk" néven. Tehát az USB-s ismeretlen megtalálta mind a 2 particiót és betette őket rossz helyre. (A /home nak a /media/disk nagyon rossz hely)
(Csinálhattam volna egy "/home" nevű linket a /media/disk-re ami egészen addig működhetett volna, amig valaki benn nem felejt egy pendrive-ot a gépben, és akkor már a "/home" partició /media/disk2-nek jön fel, és megint borul az egész.)
Amikor azt írom megbolondult a rendszer, azon azt értem, hogy folyamatosan ujrabootoltam, és véletlenszerűen vagy /home volt vagy /media/disk.
Első lépésben kivettem az fstab-ból a /home-ot meg az "Adatok" at és megpróbáltam a bootprocess legvégére betenni, gondoltam addigra minden megvan, működni fog.
Az /etc/init.d/rc script-ben azt láttam, hogy a legvégén elindít egy /sbin/setup.sh nevű scriptet, ha van. Én azt gondoltam, ez az utolsó, ami történik, ide írtam be a 2 mount parancsot. Nem segített.
Arra a következtetésre jutottam, hogy a boot alatt legalább 2 szál fut, és ezek nincsenek szinkronizálva. az egyik szál a boot, ami az fstab-ot is olvassa, meg az rc scriptet futtatja. A másik meg az USB-s cuccokkal molyol. Ha ez a második szál még nem találta meg a 2. vinyómat mire az első mountolna (akár az fstab-ban akár az /sbin/setup.sh script-ben) akkor borul az egész boot. Ez 2 külön szál és mint a lóversenyen lehet fogadni melyik ér be előbb.
A megoldás egy script ami addig vár, amig a /dev/disk/by-uuid ben meg nem jelenik a particióm azonosítója. De amikor ezt beleírtam a /sbin/setup.sh-ba akkor vagy végtelen ciklusban várt a rendszer, vagy azonnal bebootolt, mert már megvoltak a partíciók.
Tehát a /sbin/setup.sh-ban most csak az van hogy
/sbin/Mountoljad_a_cuccaimat &
Így &-el a végén, hogy a hattérben molyoljon és ne akassza meg a boot-ot.
A Mountoljad_a_cuccaimat scriptben meg olyan ciklusok vannak hogy:
grp=""
while [ "$grp" = "" ]
do
grp='ls -lah /dev/disk/by-uuid | grep '
done
mount -v -t ext3 -U /home
egy ciklus a /home-nak egy az "Adatok" nak, és ez a script a háttérben felhozza a /home-ot is meg az "Adatok"-at is a helyére mire a bejelentkező képernyő feljön.
Írtam bele számlálót meg logfile-t is, olyan 1500-2000 while ciklus fut le, mire a
/dev/disk/by-uuid-ben megjelennek a particióim.
Következtetés:
Ezt most így megdrótoztam, hogy megy, de ezt rendesen meg kéne csinálni. Egyre több USB-s cucc kerül a gépekbe, és amig ezeknek a ki-be csatolgatását külön szálak végzik, addik a boot-ot szinkronizálni kellene ezekkel a szálakkal, főleg az fstab-ot, különben instabil az egész rendszer.