Portál AbcLinuxu, 30. dubna 2025 23:37

bludné LFS poprvé sem vážně zakys

30.3.2005 11:54 | Přečteno: 1084× | LFS

Minule sem skončil s kompilací a instalací pomocného systému. Po několika dnech, při pokusu pokračovat v načaté práci, mne lfs dovedlo do temnot které zatím neprosvětlily paprsky mého poznání. Pravděpodobně budu muset zvolnit a cosi trošku nastudovat. Ale popořádku.

Minule jsem skončil s diskovým oddílem, kam jsem do adresáře tools zkompiloval několik nástrojů, pomocí kterých chci vybudovat funkční linuxový systém. Jde samozřejmě o gcc, assembler, linker, základní knihovny, hlavičky kernelu a pár dalších věcí.

Napřed je třeba vybrat si vlastní peklo a zvolit úroveň na které se bude pokračovat. Standard (hurt me plenty), využití všech možných optimalizačních nastavení flagů a přepínačů (hardcore) a kompilace a instalace systému nikoliv jako root ale specialní user install, kvůli lepší kontrole nad instalovanými věcmi (nightmare). Poslední dvě volby vedou dle autorů knihy k hlubšímu poznání systému za cenu "náhodných záhadných chyb, které často objevíte až dlouho po kompilaci příslušného tarballu." :-)) Děkuji, někdy příště, stačí mi hurt me plenty.

Protože cílem budování pomocného minisystému bylo odstínění od hostitelské distribuce (v mém případě LFS liveCD), přichází okamžik kdy ze stávajícího adersáře /lfs s nástroji a zdrojáky uděláte root svého nového systému, postavíte adresářovou strukturu a do ní začnete kompilovat finální systém.

A narazil jsem poprvé. před a po chrootu je třeba korektně nastavit a přimontovat filesystémy a zařízení. Používá se udev a spousta vychytávek okolo dev/pts, /dev/shm, ramfs a věci z proc a sys. Jeden kámen úrazu byl v tom, že vím prd jak to přesně funguje a druhý, že liveCD používá filesystémy dílem rozhozené po cd a dílem načtené do RAM. A po chrootu už sem nebyl schopen zjitit jak se dostanu k některým adresářům hostitelské distribuce původně někde v ramfs a samozřejmě přestaly v chrootnutém prostředí fungovat věci instalované zatím pouze na hostovi, tedy třeba vim. Což by ani tak nevadilo, protože pokud jsem se držel návodu, šlo všechno dobře. Po rebootu ale (bylo třeba zaplatit složenky a na livecd neni java nutná pro netbanking) už sem si nebyl jist, co všechno je třeba udělat znovu (přimountovaní virtual kernel filesystems, obecně operace kolem /dev) a co ne. I udělal jsem to podle svého nejlepšího vědomí a schopností, tvářilo se to ok, zkompiloval sem glibc (skoro hodina), ale test suite skončila s chybou (neexistující cosi v /dev/xxx/). Instalace sice tvrdila, že moje nové glibc seems to be ok, ale test před kompilací dalších balíků (gcc a binutils) řekl že "my system has no more ptys", což je údajně špatně a autoři tvrdí že must be solved before continue a prej track back a correct :-) Chyba ukazuje buď někam k /dev/pts a tty a nebo právě glibc (pt_chown). Amatérské pokusy o nápravu nevedly nikam, navíc sem si vrtáním do věcí okolo glibc rozhodil linker, kterej teď neukazuje do kam by měl ale někam do pryč, takže už configure skripty řvou jak pominutý.

Protože byla pokročilá noc, nechal sem toho. Buď začnu znovu od kompilace glibc, nebo do toho budu ještě chvilku šťourat. Nevíte někdo kde bych sehnal zajímavé čtivo k tématu, které jsem popatlal?

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

30.3.2005 13:13 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Mountování
Odpovědět | Sbalit | Link | Blokovat | Admin
Pokud si dobře pamatuju (už je to pár let, co jsem měl čas na takový blbiny jako LFS), tak při chrootování jsem si vždycky /proc a /dev mountoval z hostitelského systému pomocí něčeho jako mount -o bind /dev /mnt/new-root/dev... Ale možná že si to už pamatuju blbě :-)
30.3.2005 13:16 jm
Rozbalit Rozbalit vše Re: Mountování
Nejak takhle:

mount -t proc none /mnt/new-root/proc
30.3.2005 13:33 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Mountování
s /proc je to snadný, s /dev je to horší :-)
30.3.2005 14:30 jm
Rozbalit Rozbalit vše Re: Mountování
Hmm, /dev jsem teda nikdy mountovat do chrootu nepotreboval.
31.3.2005 00:30 prOm3TheuS | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: Mountování
Mně stačilo udělat malinkatej skriptík, který úplně přesně opisuje chrootování a připojování těch virtuálních systémů v knize(taky o tom vím houby, takže jsem to 'logicky' opisoval). Avšak mám stejný problém. Kompilace těch hlavních částí, jako je Glibc, Binutils a GCC se zdá být v pořádku, ale jejich test suite hlásí error jeden za druhým. Také mi to píše, že nemám více PTYs. Zkrachoval jsem u kompilace Perlu, ale asi to bude tím, že jsem použil ty nejnovější tarbally, co jsem natahal z Internetu. Takže bych doporučoval vše smazat a jet znovu a striktně se držet manuálu :-( Né nadarmo píšou, že pro 'first time compilers' nedoporučují experimentovat.
31.3.2005 08:53 estevez | skóre: 4 | blog: bLFSpsvz
Rozbalit Rozbalit vše Re: Mountování
opisování se mi z hloubi duše příčí. nechci tam kopírovat příkazy, které dělají něco nevím co někde nevím kde. ale uvidím. včera sem to uved zpátky do "původního stavu" před chrootem a zkusim to znovu. testy hážou chyby kvůli těm neexistujíccím pseudoterminálům. selská logika říká, že pokud v pomocném systému bylo devpts a potažmo pty v pořádku tak pokud v kapitole použijeme kopii, měla by být v pořádku taky.pokud není chyba v devpts ani v v právech k pt_chown což sou zatim jediné odhalené zdroje možných potíží, budu se do toho muset pustit víc zgruntu.
1.4.2005 23:31 prOm3TheuS | skóre: 18 | Praha
Rozbalit Rozbalit vše Re: Mountování
No jo, ale stejnak to člověk musí opsat tak jako tak. Ač si na tom uživatel může udělat drobné úpravy podle svého, tak postup bude vždy stejný. Například, já se budu držet standardu, ale kompletně vynechám sysV init style boot skripty a pokusim se vyrobit podle návodu BSD-style init. Ve Vašem případě je pravda v tom selském rozumu, že chyba bude někde po chrootu. Takže hodně štěstí a příjemné googlování :-D
30.3.2005 13:17 OldFrog {Ondra Nemecek} | skóre: 36 | blog: Žabákův notes | Praha
Rozbalit Rozbalit vše proc a devpts
Odpovědět | Sbalit | Link | Blokovat | Admin
Ahoj,

prinejmensim je treba mit spravne pripojene proc a devpts:
proc on /proc type proc
devpts on /dev/pts type devpts
-- OldFrog
30.3.2005 13:44 estevez | skóre: 4 | blog: bLFSpsvz
Rozbalit Rozbalit vše Re: proc a devpts
jojo mount něco takovýho píše. taky aby nepsal, určitě sem po tom rebootu dělal:
mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm
ale proc se připojovalo ještě před chrootem:
mount -t proc proc $LFS/proc
po chrootu se jen dělají symlinky:
ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
ln -s /proc/self/fd/1 /dev/stdout
ln -s /proc/self/fd/2 /dev/stderr
ln -s /proc/kcore /dev/core
mimochodem co všechno je v /dev/fd/ ?
Yin avatar 30.3.2005 14:01 Yin | skóre: 39 | blog: Yinotopia | Slovesnko, Košice
Rozbalit Rozbalit vše Re: proc a devpts
v /dev/fd su file-descriptory pre STDIN, STDOUT, STDERR a kedze je symlinkovany na /proc/self/fd vy zera rozne pre kazdy process (kazdy process ma vlastne vstupy a vystupy).

Ak ti mozem poradit... zacni este raz od znovu... a kazdych par krokov si urob zalohu particie...

Alebo si daj gentoo... ale tam sa o OS vela nedozvies...
Nikdy nie je tak zle, aby to jeden poharik nemohol ešte zhorsiť.
Jiří Němec avatar 30.3.2005 16:18 Jiří Němec | skóre: 22 | blog: BluPix | Horní Smrčné
Rozbalit Rozbalit vše --bind
Odpovědět | Sbalit | Link | Blokovat | Admin
V Gentoo si před chrootem vždy připojim /dev a /proc (ted mozna zacnu pripojovat i /sys), normalne --bind a jsem spokojeny. Doporucuju si udelat script. Takhle vypadal treba muj posledni(stavel jsem gentoo pro souseda):
mount --bind /proc/ /mnt/hda3/gentoo/krivanek/proc/
mount --bind /dev/ /mnt/hda3/gentoo/krivanek/dev/

mount --bind /tmp/krivanek/ /mnt/hda3/gentoo/krivanek/tmp/
mount --bind /usr/portage/ /mnt/hda3/gentoo/krivanek/usr/portage/
mount --bind /mnt/hda3/gentoo/distfiles/ /mnt/hda3/gentoo/krivanek/usr/portage/distfiles/
Spock: "Logic, logic, logic. Logic is the beginning of wisdom, not the end.

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.