Építsünk saját GNU/Linux rendszert! #1

Elhatároztam, hogy építek egy saját GNU/Linux rendszert. (Nem új disztribúciót csinálok, mert nem célom, hogy másokkal megosszam, csak a saját szórakozásomra építem.) Akik kicsit otthonosan mozognak a témában, azok tudják, hogy az Linux From Scratch jó kiindulópont egy ilyen feladathoz. Én már egyszer végigcsináltam az LFS könyvet, és végül sikerült korrektül bebootolnom a rendszerbe. Akkor itt abba is hagytam. Most tovább megyek.

Az LFS, a BLFS és a DIY Linux leírásainak tanulmányozásának eredményeit próbálom ebben a kísérletben összevonni.

32 bites rendszert építek egy 32 bites gépen. Viszont ez alkalommal jóval nagyobb eltéréseket tervezek a könyvtől, mint előző alkalommal.

Főbb tervezett sajátosságok:

  • Továbbra is vim marad az alapértelmezett editor
  • Az LFS-ben bevett gyakorlat szerint nem lesz net-tools (ebben van pl. az ifconfig), hanem csak IPRoute2 (ebben van pl. az ip)
  • bash helyett dash-t fogok használni /bin/sh-ként
  • GNU tar helyett bsdtar/libarchive használata
  • sysklogd helyett metalog lesz a rendszernaplózó
  • fcron (mert az jó) és at fogja az időzített parancsokat végrehajtani
  • Tisztán upstart alapú, teljesen párhuzamosított bootolás (Na ez nem lesz könnyű, meglátjuk, mire jutok vele.)
  • Az alaprendszer csomagjait az Arch Linuxból idecsempészett pacman-nel fogom kezelni. (Ez nem lesz szerintem túl nehéz, csak időigényes, mert minden csomag csomagolásával külön kell majd szöszölni. Viszont cserébe a későbbi eltávolítások/frissítések zökkenőmentesebbek lesznek, mintha egyáltalán nem használnék csomagkezelőt.)
  • Jelenlegi terv szerint a további felhasználó programokat pkgsrc-vel próbálom majd meg rávarázsolni a rendszerre. (Mert a BLFS sokkal időigényesebb, mint az LFS. Kíváncsi vagyok, hogy a saját GNU/Linuxon hogy muzsikál majd a pkgsrc.)

Hát körülbelül ezek a főbb irányvonalak. Az apróbb részleteket majd ezen blogsorozat későbbi részeiben tárgyalom.

Update: Az alábbiakban bővítem a célkitűzéseket! A felsorolt pontok az alaprendszerre vonatkoznak.

  • A rendszernek akkor is teljes mértékben korrektül kell működnie, ha a
    /boot

    ,

    /home

    ,

    /var

    ,

    /tmp

    ,

    /usr

    ,

    /usr/local

    külön partíción

    foglalnak helyet. Ennek érdekében a gyökérpartíción kell lennie minden olyan binárisnak és egyébnek, amely a bootolás korai szakaszában (a többi fájlrendszer felmountolása előtti szakaszában) szükséges. Amennyiben a valamelyik partíció mountolása nem sikerül, a gyökérpartíción ott kell, hogy legyenek azok az eszközök, amelyekkel az alapvető javítások elvégezhetők.
  • Ugyanakkor semmi értelme annak, hogy egy bináris a
    /bin

    -ben vagy

    /sbin

    -ben legyen, ha olyan shared library-k kellenek a működéséhez, melyek a

    /usr

    -ben találhatók. Ezért minden

    /bin

    -ben ill.

    /sbin

    -ben található bináris működéséhez szükséges shared librarynek a

    /lib

    -ben a helye.

  • Ugyanakkor a statikus könyvtáraknak (
    *.a

    ) és libtool fájloknak (

    *.la

    ) semmi keresnivalójuk a

    /lib

    -ben; nekik a fejállományokkal együtt (

    *.h

    ) a

    /usr

    -ben a helyük, mivel csak fordításkor van szükség rájuk.

  • Az alaprendszer nem pakolhat semmit a
    /usr/local

    -ba

    , kivéve az alapvető könyvtárstruktúrát és linkeket.
  • A rendszernek akkor is tökéletesen működnie kell, ha a
    /usr

    csak olvasható

    an van mountolva. Használat közben változó adatoknak a
    /var

    -ban, konfigurációs fájloknak a

    /etc

    -ben a helye. A

    /usr

    -nek csak akkor szabad/kell változnia, ha a csomagtelepítés, -eltávolítás ill. frissítés történik. Ahol csak észreveszek developerek által helytelenül beállított programokat, igyekszem ilyen működésre kényszeríteni.

  • Minden csomag tartalma legalább ránézésre ;) rendezett és áttekinthető legyen.

Hozzászólások

"bash helyett dash-t fogok használni /bin/sh-ként"

ezt ne! dash nagyon bugos regi snapshotja a netbsd ash-nak.
nagyon problemas. inkabb mksh-t rakj bele. van neki MKSMALL opcioja,
ha a kis meret a fontos szamodra.
ez egy nagyon jo shell, interaktiv hasznalatra es scriptelesre is.

--
When in doubt, use brute force.

Nekem csak scriptfuttatásra kell. Nekem Arch és Debian alatt is jól működik a dash. Állítólag Ubuntuban is az megy.

"Dash is a modern replacement for ash in Debian and is expected to be the default /bin/sh for Debian Lenny. Since the 6.10 release in October 2006, dash is also the default /bin/sh in Ubuntu."

Itt pedig van egész friss kiadás is, tehát úgy tűnik azért foglalkoznak azzal a dash-sel.

Pedig az ip valójában jobb. Pl. még madwifi-ng-vel a wifi0 interfésznek az ifconfig valami kötőjeles meg soknullás MAC címet dobott ki, és nem is tudta megváltoztatni. ip pedig rendesen mutatta és meg is lehetett vele változtatni. Ez azért volt (van), mert az ifconfig nem tud valamilyen formátumot, amit az ip igen. Ugyanis az iproute2 a Linux kernelhez készül, még a net-tools-ról fogalmam sincs.

kíváncsian várom a fejleményeket...
LFS-t én elkezdtem, sajnos abbahagytam. ha lesz időm ismét nekiugrok és legyűröm:)

Lesz, csak terv szerint akkor közlök le egy részt, amikor már úgy érzem, hogy nem kell még egyszer oda visszatérni javítani valamit. Most ott tartok, hogy rendesen rá kell hegesztenem a pacman-t az ideiglenes /tools rendszerre, mert míg a pacman hegesztés az ideiglenes fejlesztőgarnitúra készítéséhez tartozik, addig a teszteléséhez előre kell szaladnom az igazi alaprendszer építéséhez.

cuki ez az lfs
kérdés ha mondjuk neki kezdek és tegyük fel lesz valami belőle, akkor el tudom inditani virtualboxon?
vagy egy virtualis gepen?