Mi a lényege
Helló Talán, ha Linuxot használsz, akkor hallottam mindenféle rémtörténetet újjáépítése a kernel és szeretne többet megtudni az a tény, hogy egy ilyen magot. Ebben a cikkben megpróbálom menni részletesen ebben a témában.

A kernel található a / boot könyvtárba, és általában egy nevet, mint vmlinuz-linux. Loader indítás során betölti, és átadja az irányítást a csomagtartó. De a vezető darab vas nem a kernelben, különben nem lesz túl egészséges. Éppen ezért a Linux dinamikusan betölthető rendszermag modulok, amelyek gyakran szükséges kernel modulokat túl dinamikus a rendszer elindításához. Ez azt jelenti, hogy a rendszer nem olyan könnyű letölteni: szükség van, hogy a járművezetők betöltése mechanizmusa merevlemezek, fájlrendszerek, stb
Egy ilyen esetben el van látva egy tipikus elosztó initrd (eredetileg RAM lemez). initrd - ez a fájlrendszer, ahol minimális UNIX elegendő a kernel betöltéséhez szükséges modulokat dolgoznak lemezek, fájlrendszerek, felmászik a merevlemez partíciós a telepített operációs rendszer a gyökér és az indító folyamat folytatásához csatolja a partíciót. Ez - init daemon, héj, parancssori segédprogramok (általában busybox) és kernel modulok. A létrehozott rendszer vagy frissítés initrd kernel automatikusan gyűjtött, és ennek eredményeként, vannak modulok, ami kellett.
Most, hogy tudjuk, a ramdisk, próbálja meg rendezni a boot folyamat, a másik, a rendszertöltő betölti a kernelt, betölti a ramdisk, és nincs egy szabványos megadja a kernel ezt a lemezt, majd átadja a vezérlést a kernelnek. A kernel démon indul indításkor. Mint általában az a / bin / init, a hajó modulok mutat szép képet a boot Ubuntu (Fedora, menta ...) csatlakoztatja a merevlemezt és ott dolgozik.
Bizonyosodjunk meg róla, hogy ez így van. Együtt fut a parancs
cat / etc / mtab
Ha a rendszer valóban betöltve keresztül initrd, látni fogjuk, az első sorban, valami ilyesmit:
rootfs / rootfs rw 0 0
Miután a rootfs a gyökér fájlrendszert partíciót a merevlemezen. Ahogy az várható volt, miután a merevlemez beszereléséhez nem lehet látni, mi van a rootfs, de fel van szerelve a gyökere előtte.
initrd található a / boot könyvtárba, és az én esetemben, az úgynevezett initramfs-linux.img.
Ha nem találja a kernel vagy ramdisk tanácsot megjelenik a letöltési eljárást a loader konfigurációk. Ha a boot loader - GRUB 2, akkor tegye a következőket:
macska /boot/grub/grub.cfg
Amennyiben modulok?
A modulok a / boot, akkor nem keresnek, ezek a / lib / modules. Ha van egy pár mag, akkor nem lesz több mappa. Ahhoz, hogy megtalálja azt a mappát a futó kernel típusát a következő parancsot:
uname -r
Kernel modulok kiterjesztése * .ko és csomagolni archívum.
Menjünk!
- make menuconfig - fit, ha nem engedhetjük meg magunknak azt a luxust, a grafikus felhasználói felület (például mi nem telepíthető X, vagy nem fogy ki a kernel konfigurációban és dolgozunk SSH, míg gyűjtése a lényege udalenke elég furcsa). Interface fogják bemutatni pszeudografikus ahol tudunk segítségével Claudia megjegyezte a kívánt jelölőnégyzeteket.
- make xconfig - ha megvan a luxust, hogy egy grafikus felület, és használja a Qt könyvtárat.
- Márka gconfig - mi van a luxust, hogy egy grafikus felület, hanem egy furcsa véletlen, amit használ GNOME helyett KDE.
- Márka oldconfig - egészíti ki a régi konfiguráció az új beállításokat kér néhány kérdést.
- Márka defconfig - beállítások alapértelmezés szerint.
Mi megy át a következő: forgalmazási szerző gondosan kiválasztott kernel konfigurációban és tudja, hogy a rendszer működik velük. Mi lesz a beállításokat az operációs rendszer. Ha engedélyezte config.gz találunk ezt a fájlt a / proc fájlrendszer a konfigurációs:
cp /proc/config.gz.
gzip -d config.gz
mv config a.config
Márka oldconfig
Következő, mi lesz a konfigurációs paramétereket is érdekelte. Először is, nem volt rossz tudni, hogy melyik modulokat a rendszer jelenleg betöltött. lsmod parancs felsorolja a modulok három oszlopban:
- Modul - modul neve
- A méret nem érdekel minket.
- Használt lényegében két oszlopot. Az első - a függőségek számát ebben a modulban. A második - ezek a modulok használatára.
Ha az alkalmazott oszlop közötti különbség a modulok száma és a függőségek számát nem nulla, akkor a mag van valami, amit használ, és akkor nem tudja eltávolítani a modul nélkül a rendszerbe belépő működésképtelen. Ez azt jelenti, hogy nem távolítja el a merevlemez-meghajtót, hogy már fel van szerelve, mint, és amelyen az éppen futó operációs rendszer. Ezen kívül, azt modulokat, amelyek függenek - ezek nem lapozható modulokat. Az összes többi akkor egyébként lehet feltölteni a futási típusú parancs modprobe -r valami, és a rendszer valószínűleg marad egy egészséges állapot. Ez a rendszer betöltésekor nélkül ramdisk akkor legalább meg kell építeni a nem lapozható kernel modulokat. Ha azt szeretnénk, hogy ingyenesen letölthető néhány másodpercig, hogy egy monolitikus kernel, beágyazni minden, amit látsz a kipufogó lsmod. Folytassa beállítani:
make menuconfig
Ne felejtsük el, hogy nevezze át a kernel keresni a rendeltetésszerű használatra keresési lehetőségeket. Ne feledje, hogy nem mindig találni a lehetőséget, amely felelős egy adott egység, ebben az esetben segít a Google (vagy Yandex, Bing, поиск@mail.ru, attól, hogy mit használ).
Ezután, meg mindent létre, meg kell fordítani és telepíteni a kernelt modulok:
csinál
Pihenjen, hogy egy teát. Van egy pár órát a szabad időt, mielőtt a telepítés végrehajtásához:
make install modules_install
Az új mag van beállítva, hogy a / boot / vmlinuz. Nevezze át a vmlinuz-mykern, a nucleus találtak GRUB'om. Ezen felül, ezt meg kell gyűjteni az initrd, akkor is, ha úgy gondolja, hogy a rendszer elindul anélkül, hogy megbizonyosodjon arról, hogy betöltődjön-legalábbis vele. A boróka csinálom ezt így
mkinitcpio -g /boot/initramfs-mykern.img -k 3.18.6-MYKERN (azt feltételezték, hogy adott a kernel nevét -MYKERN)
Továbbra is a számunkra, hogy frissítse a GRUB config és Reload rendszert. Legyen óvatos, ne távolítsa el a magját a disztró, mint a kernel valószínűleg, csak nem működik, és szükség lesz ebben az esetben, hogy egy boot lemezt, felmászik a kemény megy chroot környezetben, és újra telepíteni a kernelt (ha nem tudja, hogyan kell csinálni, akkor még korai újjáépíteni a kernel).
grub-mkconfig -o /boot/grub/grub.cfg
újraindítás
ahelyett, hogy a következtetés
Ez arra a következtetésre jutott egy ilyen részletes beszámolót újrafordítani a rendszermagot. Beszéltem arról, hogyan kell kernelt fordítani, mint egy leírást, hogyan kell összeszerelni valamit adja a legjobb leírást, mivel ez az, ami működik, milyen diagram.
Próbáld ki, győződjön meg arról, hogy ez nem is olyan nehéz összeállítani egy megfelelő kernel, a harmadik próbálkozás, kísérlet, és megtanulják a rendszer.