Start Linuxu ze souboru s NTFS

Start Linuxu ze souboru s NTFS
« kdy: 30. 11. 2010, 23:28:13 »
Dobrý večer,

Snažím se vyrobit si linux, terý by jako root používal soubor na disku, jmenovitě NTFS.
Známé téma, že... Poraďte mi prosím, kde dělám chybu.

zavaděč předá jádru (doma kopilovanému) parametr určující disk na němž je soubor s linuxem (root.ext2) a parametr root=/dev/loop0

initrrd(vlastní výroby) používá skript /linuxrc, který připojí disk podle parametru a pomocí losetup nastaví že /dev/loop0 je navázaný na root.ext2

vše běží normálně, až na to že se při každém startu disk (tedy soubor root.ext2) kontroluje. A při vypínání dostanu spoustu chybových hlášek o /dev/loop0 (I/O error), nebo tak něco. (nevím, co,nevím totiž kde nalézt loggy vypínání systému)
soubor root.ext2 obsahuje základní systém debianu, jen se změnou v fstab že root je /dev/loop0

za odpovědi děkuji
Hanousek Vít

(jak to tu sepisuji, tak mě napadá, zda není chyba v tom že se pužívá udev, a ten při vypnutí drahý /dev/loop0 zlikviduje, je to možné?)
« Poslední změna: 01. 12. 2010, 00:57:32 od Petr Krčmář »


trubicoid2

Re: Start Linuxu ze souboru s NTFS
« Odpověď #1 kdy: 01. 12. 2010, 11:19:34 »
no a co vypnout kontrolu pomoci tune2fs -c0 -i0 root.ext2 ?
mozna je dobry udelat kontrolu rucne e2fsck -f -y -D root.ext2

Re: Start Linuxu ze souboru s NTFS
« Odpověď #2 kdy: 01. 12. 2010, 14:19:22 »
Což o to, to mne napadlo, ale není to řešení problému..... protože se ten disk při vypnutí špatně odpojí..

přidání loop0 do /lib/udev/devices také nepomohlo.. (nebo jak jinak vytvořit statickou položku v udev?)

Jenda

Re: Start Linuxu ze souboru s NTFS
« Odpověď #3 kdy: 01. 12. 2010, 14:30:09 »
Přibal si do initramdisku dash (nebo takový ten prťavý shell z busyboxu), před připojením ho spusť a zkus ručně examinovat situaci. Já takhle po asi hodině trápení zjistil, že mi chybí modul pro ext4, kterýžto FS mám na svém disku :-).

Re: Start Linuxu ze souboru s NTFS
« Odpověď #4 kdy: 01. 12. 2010, 15:01:53 »
Já tam mám plnohodnotné bnárky z debianu... a pokusy jsem dělal (včetně věcí jako pivot_root, ale to dopadá naprosto stejně..) problém je dle mého soudu kdesi ve vypnutí ale nemohu přijít na to kde...


trubicoid2

Re: Start Linuxu ze souboru s NTFS
« Odpověď #5 kdy: 01. 12. 2010, 20:57:04 »
no a co pouzivat staticky /dev a ne udev?
anebo pohlidat, aby se udev vypnul az po remount ro / ?

Re: Start Linuxu ze souboru s NTFS
« Odpověď #6 kdy: 06. 12. 2010, 21:32:38 »
No, nevím, jak odsunout vypnutí udev. ono se asi vypíná vrámci vypnutí všech procesů.
Když jsem zkusil pustit bash před odpojováním disků (že jsem jej přidal na začátek skriptu který toto odpojuje) tak už to vypisuje:

lost page write due to I/O error on loop0
Buffer I/O error on device loop0, logical block 327788 

A dělá to na mě dojen, že už ten obraz připojený není, a jen se pohybuji ve vyrovnávací paměti v jádře.. (je tam adresářová struktura, ale když rovedu změny (smazat soubor) tak to vysype ještě jiné chyby, a pak je daná sožka nečitelná, po restartu to zase funguje,a změny neproběhly)

Lze nějak používat napůl static dev a udev? (třebas kvůli USB a jinému hardwaru)

Re: Start Linuxu ze souboru s NTFS
« Odpověď #7 kdy: 07. 12. 2010, 10:16:33 »
Máš nějaký dostatečně pádný důvod, proč mountovat root ze souboru a nepoužít normální vyzkoušené a podporované mountování NTFS?

(jestli ono není jednodušší se tohodle požadavku vzdát, než se trápit...)

trubicoid2

Re: Start Linuxu ze souboru s NTFS
« Odpověď #8 kdy: 07. 12. 2010, 10:25:34 »
no to prave jde pouzivat napul static a na pul udev, jestli pouzivas initrd, tak tam stejne nejaky static /dev/ musis mit nez nastartuje udev, ne? akorat pridej loop0

brw-rw---- 1 root disk 7, 0 2010-12-04 13:29 /dev/loop0

> proč mountovat root ze souboru a nepoužít normální vyzkoušené a podporované mountování NTFS

no a nebyl by problem s pravama a linkama a tak na rootu na NTFS?

x22

Re: Start Linuxu ze souboru s NTFS
« Odpověď #9 kdy: 07. 12. 2010, 10:52:14 »
Udev nezlikviduje loop0, moze zmazat subor /dev/loop0, ale samotne zariadenie, sa zrusit neda (kym je primountovane) a nemalo by sa dat odpojit ani ten NTFS, pretoze je na nom otvoreny subor.

Mozno je problem s ntfs-3g (ak ho pouzivas).


Re: Start Linuxu ze souboru s NTFS
« Odpověď #10 kdy: 07. 12. 2010, 10:54:55 »
no a nebyl by problem s pravama a linkama a tak na rootu na NTFS?

Jezkovanoho, ja jsem nejak prehlidl to "T" a mel namysli NFS. Omlouvam se :)

Re: Start Linuxu ze souboru s NTFS
« Odpověď #11 kdy: 07. 12. 2010, 15:54:38 »
ano, používám ntfs-3g, což by problém být mohl, ale jak z toho ven?

(Mimochodem, a to propojení loop0 se souborem, když běží vypnutí procesů, nevypne se to také? Je to jen střela do prázdna, kdysi jsem zkoušel vyrobit vlastní LIVE-CD, defacto obdobným způsobem, jenže tam byl ten obraz root.ext2 ro, takže se chyby při odpojení nepoznaly. )

Kdybych překopal kompletně vypínací skripty,tak jak postutpovat?
Nejprve vypnout procesy, ale ntfs-3g (popř obsluhu loop) nechat (jak?), pak takové věci jako networking, hwclock,atd. Pak remount root read-only, pak remount NTFS disk read-only a vypnout.

jinak v initrd je statický dev a loop0 tam je, udev nabíhá až vlastně při bootu z root.ext2.
 

Re: Start Linuxu ze souboru s NTFS
« Odpověď #12 kdy: 08. 12. 2010, 13:32:41 »
Protože otázka je polovina odpovědi, tak už si mohu odpovědět sám :-) a abych řešení příště našel tak jej sem napíšu.

Aby se nevypla obsluha ntfs-3g tak je třeba zabránit vypnutí mount.ntfs-3g.  To se dá udělat tím že pid tohoto procesu dáme do souboru /var/run/sendsigs.omit. Já to dělám říkazem
pidof mount.ntfs-3g >> /var/run/sendsig.omit
vloženým do /etc/rc.local
(pro jistotu jsem to udělal i pro loop0, ještě jsem nezoušel zda je to potřebači ne)

A poté jsem upravil vypínací skrity (protože předešlá úprava nestačila) způsobem, že jsem vyloučil skrit umountfs a umountroot a nahradil je vlastním skriptem který přopojí root ro a disk ro.

#!/bin/sh
sync
mount -o remount,ro /
mount -o remount,ro /initrd/mnt/disk


(zatím nevím zda se /initrd/mnt/disk opravdu přepojí ro, budu muset ověřit)

Všem děkuji za jejich návrhy a odpovědi