Rozbalení a zabalení initrd.lz

Zkušenosti, tipy a zlepšováky, které jsou příliš malé pro článek na webu.
Nehledejte zde odpovědi na obecné dotazy.
Zamčeno
Zpráva
Autor
Uživatelský avatar
Ventero1
Příspěvky: 2789
Registrován: 31 říj 2016, 14:17
Bydliště: Sokolov, Olomouc

Rozbalení a zabalení initrd.lz

#1 Příspěvek od Ventero1 »

Pro ty, kteří by si chtěli modifikovat initrd a řešili by stejný problém jsem setavil stručný návod a snad bude nápomocen ...

Během svých pokusů jsem se setkal s tím, že klasickým jednorázovým způsobem zabalením modifikovaného initrd.lz

Kód: Vybrat vše

find . | cpio --quiet --dereference -o -H newc | lzma -7 > ~/xub1464rd.lz
proběhlo s chybovým hlášením, např.

Kód: Vybrat vše

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
a znovu zabalený initrd nebyl funkční.

Hodně mě to natrápilo a hledal jsem různé varianty a různé komprimační a dekomprimační moduly. Vždy to skončilo nefunkčním initrd. Nakonec mě napadlo - ani nevím přesně proč a jak - že zabalení rozdělím do dvou fází a vynechám parametry. Pak už zabalení proběhlo bez jakékoliv chyby a výsledný modifikovaný initrd.lz fungoval správně:

1. vytvořit složku pro rozbalení initrd.lz, např. ~/Linux/initrd-tmp
2. kopírovat ze složky casper inst. média soubor initrd.lz např.
do složky ~/Linux a přejmenovat např. na initrd.old
3. cd ~/Linux/initrd-tmp
4. lzma -dc -S .lz ~/Linux/initrd.old | cpio -id
5. provést chtěnou modifikaci, např. scriptu casper
6. cd ~/Linux/initrd-tmp
7. find | cpio -o -H newc > /home/ng/Linux/initrd_new
- vytvoří se soubor initrd_new typu cpio
8. cd /home/ng/Linux
9. lzma -7 initrd_new
- soubor initrd_new je nahrazen initrd_new.lzma
10. soubor initrd_new.lzma přejmenovat na initrd.lz
11. původní initrd.lz nahradit nově vytvořeným initrd.lz
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Zamčeno