Kernel (rendszermag) fordítás, virtualizáció – az utolsó próbakő :)

Linux alatt fordíthatunk saját beállításokkal egyedi rendszermagot. A kernel teljesen testreszabható. Mivel a saját Linux-omat gyári maggal használom, ezért a fordítás bemutatásához először is telepítem a virtualbox szoftvercsomagot, hogy a virtuális gépben telepíthessek egy sandbox (játék) Linux-ot. 🙂

https://tecadmin.net/install-virtualbox-on-debian-10-buster/

Beszéljünk még egy dologról. Általában root-ként, rendszergazdaként alig használjuk a gépet, ennek biztonsági okai vannak (a távoli elérés ilyen módon általában tiltva is van). Viszont a felhasználónk lehet rendszergazda jogú, erre való a sudo parancs. Ennek leírását magyarul is elolvashatjuk.

https://hu.wikipedia.org/wiki/Sudo

A sudo jogosultság nagy felelősség! Erről árulkodik a legelső használatkor kapott figyelmeztető üzenet.

gvamosi@sandbox1:~$ sudo su -
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
1) Respect the privacy of others.
2) Think before you type.
3) With great power comes great responsibility.
[sudo] password for gvamosi:
root@sandbox1:~#

VirtualBox a debian-testing-amd64-netinst.iso file-lal 🙂

Miután a virtualbox-ot elindítottam, létrehoztam egy virtuális gépet, 1 GB memóriával és 20 GB-nyi, dinamikusan növekedő “lemezkapacitással”. A kernel forrás, a lib-ek és a c fordító miatt kelleni fog a hely! A Debian 10 netes telepítőjét az alábbi helyről töltöm le.

https://cdimage.debian.org/cdimage/daily-builds/daily/arch-latest/amd64/iso-cd/

A virtuáis gép elindítása után a grafikus telepítést választva telepítem a Debian 10 rendszert. 🙂 Ezt nem részletezném, csupán annyit, hogy 2GB (a memória kétszerese) a swap, illetve a maradék ext4 filerendszerű root “/” kötet.

De nézzük a kernel fordítást. Első lépés a kernel forrás és néhány kiegészítő dolog letöltése (a sandbox Linux-onkon).

root@sandbox1:~# apt-get install build-essential linux-source bc kmod cpio flex cpio libncurses5-dev

A build-essential a fordításhoz kell, a linux-source a kernel forrás, míg a libncurses5-dev a menüvezérelt konfigurációhoz (fordítás előtt szükséges elvégezni). Következő lépés a forrás kibontása.

root@sandbox1:~# cd /usr/src/
root@sandbox1:/usr/src# tar xavf linux-source-5.2.tar.xz

Ezután jön a konfiguráció.

root@sandbox1:/usr/src# cd linux-source-5.2/
root@sandbox1:/usr/src/linux-source-5.2# make ARCH=x86_64 defconfig
vagy menuconfig

A menüvezérelt felületen részletesen beállítható minden kernel konfigurációs opció “menuconfig” választása esetén.

Kell még néhány függőséget telepíteni, míg végül jöhet a build, és lehet is installálni. Szerencsére az egész Linux-sandbox nem foglalt többet 5,5 GB-nál. Maga a fordítás még sok processzornál is eltart jónéhány percig. 🙂

root@sandbox1:/usr/src/linux-source-5.2# apt-get install libelf-dev libssl-dev:native
root@sandbox1:/usr/src/linux-source-5.2# make -jnproc bindeb-pkg

A “klasszikus” kernel fordítás lépései az alábbi link alatt érhetőek el. Ez már 20 éve is hasonlóan nézett ki. 🙂

https://www.linux.com/tutorials/how-compile-linux-kernel-0/

Mi fán terem a / – azaz a gyökér vagy root könyvtár – avagy bevezetés a Linux könyvtárstruktúra alapjaiba

Linux alatt, akár az Android telefonokon nincsenek C: D: E: satöbbi “meghajtók”, csupán egy, a gyökér “/” alól elágazó könyvtárfa. 🙂

gvamosi@gergo1:~$ ls -l /
total 408
drwxr-xr-x 2 root root 4096 Jun 28 21:09 bin
drwxr-xr-x 4 root root 4096 Jun 27 06:47 boot
drwxr-xr-x 20 root root 3380 Aug 27 04:49 dev
drwxr-xr-x 153 root root 12288 Sep 2 13:33 etc
drwxr-xr-x 4 root root 4096 Jun 7 03:22 home
lrwxrwxrwx 1 root root 30 Jun 19 03:55 initrd.img -> boot/initrd.img-4.19.0-5-amd64
lrwxrwxrwx 1 root root 29 Jun 19 03:55 initrd.img.old -> boot/initrd.img-4.9.0-9-amd64
drwxr-xr-x 18 root root 4096 Jun 19 03:50 lib
drwxr-xr-x 2 root root 12288 Jun 19 03:33 lib32
drwxr-xr-x 2 root root 4096 Jun 19 03:32 lib64
drwxr-xr-x 2 root root 12288 Jun 19 03:33 libx32
drwx------ 2 root root 16384 Aug 26 2017 lost+found
drwxr-xr-x 4 root root 4096 Aug 26 2017 media
drwxr-xr-x 2 root root 4096 Jul 23 2017 mnt
drwxr-xr-x 7 root root 4096 Aug 22 03:33 opt
dr-xr-xr-x 289 root root 0 Aug 27 01:11 proc
drwxr-xr-x 15 root root 4096 Aug 22 03:34 root
drwxr-xr-x 29 root root 860 Sep 2 13:33 run
drwxr-xr-x 2 root root 12288 Jun 27 17:34 sbin
drwxr-xr-x 2 root root 4096 Jul 23 2017 srv
dr-xr-xr-x 13 root root 0 Sep 2 13:36 sys
drwxrwxrwt 26 root root 299008 Sep 2 13:38 tmp
drwxr-xr-x 13 root root 4096 Jun 19 03:46 usr
drwxr-xr-x 12 root root 4096 Aug 28 2017 var
lrwxrwxrwx 1 root root 27 Jun 19 03:55 vmlinuz -> boot/vmlinuz-4.19.0-5-amd64
lrwxrwxrwx 1 root root 26 Jun 19 03:55 vmlinuz.old -> boot/vmlinuz-4.9.0-9-amd64

Mit takarnak a gyökérből nyíló könyvtárnevek? Alább olvasható a teljesség igénye nélkül egy rövid ismertető.

bin: fontos binárisok, azaz “futtatható” programok könyvtára
etc: rendszerbeállítások könyvtára
home: felhasználók “otthon” könyvtárai
lib: rendszerkönyvtárak
media, mnt: külső kötetek, pl. egy pendrive “helye”
root: a rendszergazda “otthon” könyvtára 🙂
sbin: fontos rendszer binárisok
tmp: ideiglenes file-ok könyvtára
usr: felhasználói programok és könyvtárak
var: adatok

Megjegyzés: a merevlemez (HDD) vagy SSD (Solid State Disk) minden partíciójának (fdisk parancs) saját filerendszere van. Filerendszer ellenőrzésére és javítására az e2fsck parancs használatos. Segítségével ext2, ext3 és ext4 filerendszereket vizsgálhatunk. Ezek a Linux saját filerendszerei. Jelenleg a legújabb ext4-es filerendszert használom én is. Filerendszert vizsgálni általában csak olvasható módban mount-olt köteten lehetséges (mount parancs leírása később).

https://wiki.archlinux.org/index.php/File_systems_(Magyar)