Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

Autor Téma: Načtení OS squashfs  (Přečteno 1075 krát)

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Načtení OS squashfs
« kdy: 19 Listopad 2017, 18:19:01 »
Vím, že báze zaváděného Linuxu je soubor "filesystem.squashfs", který se v odnožích Ubuntu jmenuje stále takto.

Zjistil jsem, že nahradím-li ho třeba v instalačce Xubuntu jakýmkoliv jiným - např. z instalačky Lubuntu - tak to bez problémů najede Lubuntu, Mintu atd.

Dále jsem zjistil, že přejmenuji-li tento soubor úplně jakkoliv při zachování přípony za tečkou (.squashfs), tak bez problémů najede OS též.

Co jsem ani po hodině hraní si z parametry grub.cfg nezjistil, jak vynutit zavedení konkrétního filesystem souboru s konkrétním jménem, mám-li jich ve složce "casper" více (třeba xubu.squashfs a mint.squashfs)

Nevíte to někdo? Popř. jestli by to nešlo pomocí jména souboru, tak jak vynutit načtení filesystem.squashfs z jiné konkrétní složky s konkrétním jménem. Je to nejjednodušší cesta, jak si udělat přehlednou multibootflash ...
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #1 kdy: 19 Listopad 2017, 18:28:39 »
Toto je výchozí zápis:

Kód: [Vybrat]
menuentry "Start Linux Mint 17.3 Xfce 64-bit" {
set gfxpayload=keep
linux /casper/vmlinuz  file=/cdrom/preseed/linuxmint.seed boot=casper quiet splash --
initrd /casper/initrd.lz
}
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #2 kdy: 21 Listopad 2017, 10:16:44 »
Tak jak jsem zjistil toto neridi bootloader. Prikaz boot=casper neznamena odkaz na adresar casper, kde je filesystem.squashfs, ale na modul casper obsazeny v initrd, ktery je tedy treba prekonfigurovat tak, ze se musi initrd rozabalit, modifikovat prislusny konfiguracni soubor a zabalit zpet.

Pokusim se o to.
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #3 kdy: 23 Listopad 2017, 12:29:20 »
Tak jsem se dopracoval k tomu, že po rozbalení initrd.lz jsem vše prozkoumal a ve složce scripts jsem našel základní script casper, kde je možné upravit parametr LIVE_MEDIA_PATH=casper na libovolný adresář - např. LIVE_MEDIA_PATH=lubuntu.

Tedy jsem v rootu základní instalační flashky Ubu14.04-based distra (U mě Mint 17.3) vytvořil adresář lubuntu, do něj nakopíroval obsah složky casper s tím, že soubor initrd.lz jsem nahradil jiným s upravenou cestou přejmenoval pro přehlednost na luburd.lz a původní soubor filesystem.squashfs jsem nahradil jiným z instalačky Lubuntu a přejmenoval pro přehlednost na lubu140432.squashfs. Nakonec upravil cesty v grub.cfg a oba systémy krásně najedou ...

Jediná moucha je, že splashscreen má logo Mintu, že v Lubuntu se účet jmenuje nikoliv lubuntu, ale mint a na ikoně pro instalaci je popisek "Nainstalovat Linux Mint". Tady je však řešení snadné - modifikovat nikoliv initrd.lz z Mintu, ale vzít originál z Lubuntu.

Co se mi však nepovedlo určit konkrétní jméno squashfs souboru. Přestože jsem ve scriptu casper všechny položky v cestách označené *.squashfs nahradil konkrétním jménem (lubu140432.squashfs), vše skončilo hlášením, že systém nebyl nalezen. To je škoda - přišlo by mi ještě elegantnější jen do složky casper sypat různé a různě pojmenované filesystem.squashfs a initrd.lz ... Ale možná, že takhle, když každý OS bude mít svou vlastní a vlastně přejmenovanou casper složku, tak to zabere na flashce více místa, ale bude to přehlednější ...

Ještě musím vyzkoušet, jestli z takto upraveného média půjde spustit i instalace ...

Proč to dělám - multiboot flash, která bootuje rovnou z ISO není univerzálně spolehlivá a na některých strojích nefunguje ...
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #4 kdy: 27 Listopad 2017, 18:21:37 »
Takže instalace takto naroubovaného Lubuntu do instalačky Mintu se nezdařila. Pokus s implementací initrd.lz a vmlinuz z Lubuntu nefungoval vůbec. Ohlášeny neoriginální balíčky. Možná, že to bude fungovat mezi Ubuntu, Xubuntu a Lubuntu.
Jisté je, že je to kolem toho casperu daleko složitější - jak jsem pochopil z popisu Lombarda na fóru Mintu, zbytečná šaškárna - daleko komplexnější a na to už nestačím, abych se dál dopracoval.

Zdá se, že bez pomoci někoho hodně fundovaného, je to slepá větev pouze na zkoušení Live ...
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #5 kdy: 28 Listopad 2017, 14:33:51 »
Takže ještě to nevzdávám.

Nově jsem úmornou detektivní selektivní prací a se štěstím zjistil, že instalačnímu médiu (asi nějakému dočasnému virtuálnímu) casper přiděluje identifikační číslo, které je jednak zapsáno v initrd v souboru uuid.conf a druhak v adresáři .disk v souboru casper-uuid-generic. Tyto čísla se porovnají a nedojde-li ke shodě, tak není identifikována instalační jednotka a je ohlášeno "(initramfs) unable to find a live medium containing a live file system"

Je velice pravděpodobné, že možná pouze na tom kolabuje použití originálního initrd.lz v původní hostitelské instalačce. Použije-li se totiž původní initrd-lz, tak si načte i implementovaný squashfs a najede do live jiného systému, který normálně funguje. Akorát, že při následné instalaci dojde k havárii a ta neproběhne ...

Pokusím se tedy modifikovat hledaný název souboru ve scriptu casper např. na lubuntu-uuid a ve složce .disk tento soubor přejmenovat. Podaří-li se, tak tam může být více takovýchto souborů s různými jmény a nemělo by dojít k nenalezení "live medium containing a live file system"
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #6 kdy: 28 Listopad 2017, 21:31:02 »
Takže empiricky se to jako řešení ukázalo a je to možné. Už mi funguje dualboot Xubuntu 64bit a Lubuntu 32bit a dále se pokusím přidat Mint, který byl původně výchozí. Narazil jsem však na jeden technický problém a tady bych chtěl požádat o zapojení místních zkušených mazáků.

Jak jsem psal, je nejprve třeba rozbalit initrd.lz, tam provést modifikace a následně zabalit zase do souboru .lz. Postupoval jsem dle tohoto návodu:
Citace
Modify the initrd

Extract the contents of the initrd:

mkdir initrd-tmp
cd initrd-tmp
gzip -dc /mnt/casper/initrd.gz | cpio -id

or for Ubuntu 9.10 and later:

lzma -dc -S .lz /mnt/casper/initrd.lz | cpio -id

Modify the files
Repack them into a new initrd:

find . | cpio --quiet --dereference -o -H newc | gzip -9 > ~/new-initrd.gz

or, if you want an initrd.lz (for Ubuntu 9.10 and later):

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/new-initrd.lz

You can now remaster a cd with this new initrd.gz replacing the old /casper/initrd.gz.
Zatímco u initrd z Lubuntu 32bit finální komprimace proběhla s tím, že tam neexistují nějaké 2 soubory v jedné složce, tuším plymouth, nicméně to asi nebylo nic důležitého a tento soubor po zabalení s příslušnou modifikací funguje tak jak má, tak u souboru initrd z Xubuntu 64bit, se objevilo, že neexistují jiné dva soubory, které jsou nejspíš důležitější a takto znovu komprimovaný initrd i bez jakékoliv modifikace již nefunguje. Pokračovat budu s initrd Mintu - tam to balo předtím v pořádku, tak se rýsuje tripleboot ...

Rád bych věděl, proč tomu tak je, že ty soubory neexustují a jestli je jiný spolehlivější nástroj pro rozbalení a zabalení, než lzma či cpio nebo jak se to jmenuje. Popř, jak jinak to vyřešit. Tak prosím o pomoc s tímto technickým problémem.

Ještě zítra dodám přesnější informace a podrobnosti.
« Poslední změna: 28 Listopad 2017, 21:39:05 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #7 kdy: 28 Listopad 2017, 21:52:54 »
Ještě to zkusím s těmito parametry:
Kód: [Vybrat]
Also, I have read a few articles mentioning that Karmic (9.10) uses initrd.lz instead of initrd.gz. I do not know if this is true, but should mention it in case you are not getting the expected results. To unpack the initrd.lz file, you need to do this:

lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

And to re-create the initrd.lz file:

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../initrd.lz

Nebo tohle: https://linuxconfig.org/how-to-extract-and-repackage-initial-ram-disk-initrd
« Poslední změna: 28 Listopad 2017, 22:16:42 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

TIBOR

  • Guru
  • *****
  • Příspěvků: 5832
  • Karma: +432/-20
  • Som uzivatel linuxovej distribucie, som linuxak?
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #8 kdy: 28 Listopad 2017, 22:51:08 »
To sa snaziz vyrobit ako vysledok toto?
https://wiki.archlinux.org/index.php/Multiboot_USB_drive
Asus X751LB-TY014H Ubuntu 16.04 XX 64bit - Mate.
Linus, Lajnas, Línus, Luínus, Lajnus a je mi naozaj jedno, ako ľudia vyslovujú moje meno. Ale "Linux" je vždy "Linux". LINUS TORVALDS, tvorca Linuxového jadra.(V dokumente Revolution OS)

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #9 kdy: 29 Listopad 2017, 09:28:04 »
Ne - tuto variantu s iso soubory se právě snažím obejít, protože to nefunguje vždy korektně . Stává se u nějakých mašin, že se namapovaný iso během fáze vmlinuz nebo initrd odpojí a je ohlášeno nenalezení jednotky a média obsahujícího live fily system. A nevím, jaký má na to vliv použitý zavaděč. Mám spíš pocit, že by to mohla být otázka řadiče USB a nějakého modulu, který Grub2 má, ale to co pak převezme řízení (vmlinuz nebo initrd) už s ním pracovat nedokáže ...

Koncepce se ukazuje jako možná - teď potřebuji pomoc s technickým problémem ohledně dekomprimace a zpětné komprimace:

Kód: [Vybrat]
ng@ng-esp:~$ cd /home/ng/Linux/initrd-tmp
ng@ng-esp:~/Linux/initrd-tmp$ lzma -dc -S .lz /home/ng/Linux/initrd.lz | cpio -id
152682 bloků
ng@ng-esp:~/Linux/initrd-tmp$ find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/xub1464rd.lz
cpio: ./etc/ld.so.conf.d/x86_64-linux-gnu_GL.conf: Cannot stat: Adresář nebo soubor neexistuje
cpio: ./etc/ld.so.conf.d/x86_64-linux-gnu_EGL.conf: Cannot stat: Adresář nebo soubor neexistuje
ng@ng-esp:~/Linux/initrd-tmp$
Tyto 2 soubory zobrazené ve správci souborů, jako neplatné odkazy jsou během procesu komprimace vyjmuty a v novém souboru initrd již nejsou obsaženy. To bude nejspíše příčina následujícího.

Chyba, která se pak vypíše s tímto pouze rozbaleným a zabaleným initrd, bez jakékoliv modifikaze je:
Kód: [Vybrat]
/init: line 7: /sbin/udevadm: not found
Nejspíše tedy potřebuji nějaký parametr, který vynutí zahrnutí těchto souborů nebo jiný nástroj. Ale může to být úplně jinak - napadá někoho něco?

« Poslední změna: 04 Prosinec 2017, 16:11:39 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #10 kdy: 30 Listopad 2017, 09:44:52 »
Takže i tohle jsem už vyřešil, podařilo se i docílit toho, že oba live systéme korektně naběhly a také z obou systémů proběhla instalace bez havárie. Zatímco Mint, na flashce hostitelský, se nainstaloval a naběhl úplně v pořádku, tak instalace hostujícího Lubuntu sice proběhla bez havárie, ale ukázala se jako špatná - na puvodnim PC boot systému havaroval během initramfs a na druhém PC sice normálně naběhl do lxde, ale prostředí nešlo ovládat ...

Docházejí mi nápady. Ta koncepce Ubuntu-based médií je opravdu zbytečně zhovaděle monstrózní komplex. Namísto, aby to vše bylo obsaženo nějak kompaktně, tak je to postaveno tak, že si kdejakou kravinu čerpá z pomocných souborů s předem definovaným jménem v předem definovaných složkách, takže upravit pouze 2 atributy a sloučit či doplnit balíkové složky nestačí.

Technicky tato koncepce možná je, ale musel by mi pomoc někdo z vývojářů nebo někdo, kdo tu koncepci má zmáklou a ví přesně, kde co hledat. Jinak bych tím strávil opravdu hodně času a energie z nejistým výsledkem. Posledních 5 dní od rána do večera jako ukázka stačí :D
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ****
  • Příspěvků: 1191
  • Karma: +38/-11
    • Zobrazit profil
Re:Načtení OS squashfs
« Odpověď #11 kdy: 03 Prosinec 2017, 21:28:51 »
Takže se to nakonec povedlo.

Jen jsem musel opustit ideu elegantního užití jedné instalačky jako hostitelské a jen tam doplnit přejmenované složky "casper"  - to dělalo neplechu při následné instalaci hostujících instalaček. Buď havaroval instalátor nebo instalovaný OS nebyl plně funkční.

Každý komplet instalátor potřebuje mít vlastní složku, která se dá definovat ve scriptu casper. No a co je nejvtipnější (a původně jsem si to myslel, jen mi to nikdo nepotvrdil, tak jsem se nechal svést), že toto se dá určit i předáním parametru z Grubu a nadefinováním, že se i USB bude pracovně považovat za cd-rom - také  parametrem v grub.cfg. Toto jsem zjistil po týdením úsilí až díky tvůrcům aplikace Sardu ... casper se tedy modifikovat nemusí!

... pak už jen celodenní selekce toho, co který instalátor potřebuje mít v rootu. - Lubuntu třeba nic, zatímco Mint tam něco mít musí - a zkoušení korektnosti jednotlivých instalací ...

Časem bych mohl do nějaké vhodné sekce udělat stručné návody. Jak správně rozbalit a po modifikaci zabalit initrd.lz (může se hodit k tomu, aby flashka z které běží liveOS zůstala nadále zapisovatelná - to se k tomu může dohledat a doplnit - zkusím, až zas bude dost času) a návod, jak vytvořit opravdu spolehlivou multiboot flashku s různými distribucemi (jak jsem zmiňoval, na bázi loop ISO to nefunguje na všech mašinách) a ten by  se dal třeba dát i na wiki ...

Toto vlákno považuji spíše  za svůj poznámkový list během mé práce  ;) , takže se možná může i smazat ...
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...