Qemu, busybox, linux kernel - 1. rész, összeszerelés, kicsomagolt

Az induláshoz töltse le a Busybox-ot:

A szükséges Linux kernel:

Annak ellenére, hogy a grafikus héjak és a "barátságos" interfészek burjánzó növekedése ellenére elképzelhetetlen a UNIX nélküli parancssori és alapilletékek napjainkban. Számos tolmács és alapvető rendszerellátás nem áll meg, fejlődik és fejlődik, ami elkerülhetetlenül növeli a kötetet. Ugyanakkor vannak olyan tevékenységi területek, amelyeknél az alkalmazások tömörsége nyilvánvaló okok miatt nagyon fontos, például beágyazott eszközök esetén. Ugyanakkor sok esetben az alapvető "általános célú" segédprogramokban rejlő funkciók nagy része nem szükséges.

A problémák megoldására a 90-es évek közepén Bruce Perens létrehozta a BusyBox csomagot. Most a projekt "svájci kés a beágyazott Linux rendszerekhez" helyezkedik el, és elsősorban a GNU / Linux kisebb terjesztéseire irányul. A GNU GPL licenc második verziója alatt terjeszthető.

A BusyBox az egyetlen végrehajtható fájl, amely egy teljes parancs interfészt indít. Ahogy a BusyBox hivatalos dokumentációja olvasható. A GNU / Linux minimális verziójának létrehozásához csak az operációs rendszermagot és az / etc, / dev könyvtárakat kell hozzáadni.

A BusyBox fejlesztőinek egyik fő célja. - optimalizált és kompakt kód - a korlátozott memória kiszámítása. Ez nemcsak a beágyazott eszközökben való használatának előnyeit ismeri fel, hanem a UNIX-módszer szellemében egy másik megközelítéssel is megegyezik. magas szintű testreszabás (csak a szükséges komponensek vehetők fel a BusyBox bináris fájlba).

Az összeállítás szakaszában (vagy inkább maga a felépítési folyamat előtt) csak azokat az alapvető segédprogramokat választhatja ki, amelyekre szükség van. Ez a Linux kernel hangolásának stílusában valósul meg. Az automake alkalmazásokból a BusyBox előtelepítéséhez szükséges "konfigurálás" parancsfájlban gyűjtött gyakoribb módszer helyett az alábbi parancsok egyikét kell végrehajtani:

Az érv a „config„kezdeményezi a dob”kérdőív" egy listát a rendelkezésre álló lehetőségeket, és az alapvető közművek, mely feltünteti «Y» vagy «N» helyén szükséges és felesleges funkciók, ill.

Az "menuconfig" argumentum sokkal kényelmesebb konfigurációt eredményez, mint egy átmenetekkel ellátott interfészen.

Az "defconfig" argumentum automatikusan tartalmazza az összes rendelkezésre álló opciót, amely a BusyBox "általános célú" összeállítására készül.

Ugyanúgy, mint a Linux kernel. A konfigurálás után létrehozza a .config konfigurációs fájlt. amelyet azután a parancs visszaküldhet:

Ez igaz, amikor egy újabb változata BusyBoxból a régi konfigurációt (úgy, hogy konfigurációs munkát csak megjelent a következő kiadás a lehetőségek).

Alapértelmezés szerint, ha a "make menuconfig" hívás előtt nem volt .config fájl. A make automatikusan inicializálódik az "defconfig" argumentummal. Így a felhasználónak csak a felesleges funkciókat kell letiltania. Van egy fordított opció is: az "allnoconfig" parancsfájl futtatása letiltja az összes beállítást, így utána csak azt választhatja ki, amire szüksége van.

Továbbá minden a hagyományos:

Amellett, hogy a másik csoport coreutils (ls, cat, mv, cp, rm, chmod, df, ln, időpontját, wc, szép, teszt ...) A BusyBox magában foglalja a különböző egyéb programok.

Széles körben bemutatott hálózati eszközök: ügyfél és kiszolgáló. A démonok közül kiválasztom a httpd, dnsd, telnetd, inetd, udhcpd. Az FTP esetében létezik ftpget, ftpput és a tftp kliens. Ezenkívül van egy GNUwget natív verziója is. A többi szabványos segédprogram: ifconfig, útvonal, traceroute, ping / ping6, netstat, nslookup, arp és arping.

Ezután a menüben egy kullancsot tettünk:
-> Busybox beállítások
-> Build opciók
[] Build BusyBox statikus bináris (nincs megosztott libs)

mentés és kilépés.

CONFIG_PREFIX = ./ .. / busybox_rootfs - az apa, ahol a busybox a kimeneti fájlokat fogja elhelyezni.

Az Initrd (a RAM kezdeti RAM lemezének rövidítése a kezdeti inicializáláshoz) egy ideiglenes fájlrendszer, amelyet a Linux kernel használ fel bootoláskor. Az Initrd-ot általában az eredeti "inicializáláshoz" használják, mielőtt az "igazi" fájlrendszereket felszerelné.

A 2.6-os verziótól kezdve az initramf koncepciójához jutottunk. Ez általában egy tömörített cpio archívum, mely otthont busybox mini rendszer, amely ugyanazt a szerepet tölti az initrd.

A beágyazott rendszer bármely funkciójának tesztelésére használhatja - ha csak az egész rendszert memóriába kívánja helyezni, hogy gyorsan működjön, és nem számít, hogy a változtatások az újraindítás után mentésre kerülnek-e.

Az initramf-ok tartalmát cpio-archívum létrehozásával végezzük.

Minden fájl, eszköz, könyvtár, konfigurációs beállítás (ha van ilyen) stb. a cpio archívumba kerülnek. Ezt az archívumot ezután tömöríti a gzip segédprogram, és a Linux kernelhez hasonló helyen tárolja. Ezután a rendszerindító a rendszerindítóban elküldi a Linux kernelnek, hogy a rendszermag tudja, hogy initramfs szükséges.

Ha észleli, a Linux kernel létrehoz egy tmpfs fájlrendszert. bontsa ki az archívum tartalmát, majd futtassa az init parancsfájlt. amely a tmpfs fájlrendszer gyökérkönyvtárában található.

Most készítsd el az initramf-okat a beépített busybox-nal:

Megjegyzés: csomópontot nem lehet létrehozni a mknod segítségével. de másolja át a fő operációs rendszertől.

Ezután mindent átmásoljon a busybox_rootfs mappából a rootfs mappába. Így a Linux megjelenik az initrd-ben. amely végrehajtja a busybox-ot.

Futtathatóvá tesszük:

Létre kell hoznunk az initramf-eket:

A tömörített rendszermag kép / arch / x86_64 / boot / bzImage.

A bzImage és a rootfs.cpio.gz fájlt egy külön könyvtárba másoljuk, bejutunk bele, és

Initrd beépített rendszermag

Ezenkívül össze tudod fordítani az initrd-et a rendszermaggal. Ehhez meg kell adnia a rootfs elérési útját a kernel konfigurálásakor (lásd alább):

A / path_to_rootfs / rootfs fájlban önnek kell a rootfs (/ bin, / dev / dev / sda / dev / console stb. - lásd a fenti leírást). Ne felejtsd el létrehozni és init szkriptet készíteni.

A kernel összeállítása után a qemu az initrd megadása nélkül futtatható:

Váltás az Initrd-ből a rootfs lemezre

Először hozzon létre egy lemezt, amelyre a rootfs kerül:

Itt hozunk létre rootfeket (in / mnt), amint fent leírtuk (/ bin, / dev / dev / sda / dev / console stb. - lásd a fenti leírást). Ne felejtsd el létrehozni és init szkriptet készíteni.

Most van rootfs a HD lemez lemezképére.

A qemu elindításához egy lemezt használjunk. parancsot:

Amikor a kernel az initrd-ből indul. A lemezen található rootf fájlokra való váltáshoz hajtsa végre a következő parancsokat:

Initrd nélküli letöltés

mert y a rootfs-en már a lemezen van, akkor nem szükséges indítani az initrd-ből. Annak érdekében, hogy azonnal betöltse a rootf fájlokat a lemezről, a rendszermag paramétert (a bootloaderben) a root paraméterre kell átvinni.