Noi facem cel mai mic Linux, cu propriile mâini (util pentru studiul sistemului), open source în

Noi facem cel mai mic Linux cu propriile sale mâini (util pentru studiul sistemului)

Cine dintre noi în copilărie nu a făcut o jucărie pentru a vedea ce este în interior. Am fost nici o excepție. A fost doar câțiva ani, iar unul dintre jucării a devenit Linux. Dintr-o dorință abstractă de a „sparge și a vedea“ este formalizat în câteva sarcini foarte specifice, dintre care una a fost de a găsi un fel de punct de pornire - lucru minimal care ar da Georgia și coajă. De câteva ori am început să colecteze LFS, dar sfârșitul nu a sosit. Am citit câteva articole despre dezvoltarea încorporat, dar totul a fost prea serios și matur: după propuneri pentru a construi mediu pentru eco-compila pentru diferite arhitecturi și depanarea la distanță într-o panică tăiat de pe internet. Am examinat mai multe mini-LiveCD, dar toate acestea sau megadrevnie (kernel 2.4 și mai jos), sau în mod necesar cu grafica și DE, deoarece nu se încadrează în ideea mea de minidistre perfect pentru experimente.
Și nu atât de mult timp în urmă, sa întâmplat să știu că ceea ce caut este numit initramfs și se află chiar sub nasul meu.

HOWTO-o parte

Să ne întrebăm sarcina de a obține un pic, uyutnenky și de preferință ceva util de distribuție, fără nici un efort deosebit. În general, avem nevoie de bootloader, kernel-ul și imaginea initramfs. Cel mai simplu mod de a le obține - pentru a trage dintr-o distribuție gata. Pentru a face, deși un pic util pentru a insera Busybox și configura mai multe servicii de rețea. Eu vă va arăta cum se face cu Centos, dar, în principiu, puteți folosi orice. Să începem:

Despachetează undeva initrd-:

mkdir / root / myimage
cd / rădăcină / myimage
gzip -d

Instalați și copiați Busybox pentru a minilinuks noastre (Busybox cu nimic Linke, deci nu ezitați să copiați)

yum install Busybox
cp -a / sbin / Busybox / rădăcină / myimage / bin

Init în rezervă numai minimul necesar: a sysfs și procfs crea, fișiere dispozitiv de bază, încărcați driverul corect (pentru rețeaua mea am nevoie pentru a le copia din distribuția principală / lib) și a alerga un cuplu de servicii. aici:

mount -t proc / proc / proc
mount -t sysfs / sys / sys
mount o- mode = 0755 -t tmpfs / dev / dev
mkdir / dev / pts
mount -t devpts o- GID = 5, mode = 620 / dev / pts / dev / pts
mkdir / dev / SHM
mknod / dev / null c 03 ianuarie
mknod / dev / zero, c 01 mai
mknod / dev / systty c 4 0
mknod / dev / tty c 5 0
mknod / dev / console C 01 mai
mknod / dev / ptmx c 02 mai
mknod / dev / rtc c 10135
mknod / dev / tty0 c 4 0
mkblkdevs
/lib/libphy.ko insmod
/lib/tg3.ko insmod
mkblkdevs
BUN VENIT ecou.
/ Bin / Busybox ln -s / bin / Busybox / bin / cenușă
/ Bin / Busybox ln -s / bin / Busybox / bin / telnetd
/ Bin / Busybox ifconfig eth0 192.168.1.1 255.255.255.0 netmask
/ Bin / Busybox httpd
/ Bin / Busybox inetd /etc/inetd.conf
/ Bin / cenușă

23 flux tcp nowait root / bin / telnetd telnetd -l / bin / cenușă

Initramfs să colecteze și să se întoarcă la locul:

găsi. | cpio -H newc --create --verbose | gzip -9> /boot/initrd-2.6.18-128.el5

Voila. minilinuks noastre gata. Puteți demola totul cu excepția directorul / boot și repornire. Dar, pentru o mai mare fiabilitate vom transfera la o unitate flash USB:

Să presupunem fleshka definit ca un miez / dev / sdb. Pe ea - doar o grăsime-secțiune. Utilizați fdisk pentru a face bootabil

Verificăm dacă este sau nu asterisc la coloana de boot. Dacă nu, apăsați o, apoi w.

Se montează stick-ul undeva și copiați-l / boot

mount / dev / sdb1 / mnt
cp -a / boot / mnt
umount / dev / hdb1

Cu ajutorul grub suprascrie sectorul de boot al stick-

haleală
> Find (hd1,0) / boot / grub / stage2
> Root (hd1,0)
> Setup (hd0)
> quit

Apoi am făcut presupunerea că desțelenirea «a văzut“ o unitate flash, discul 2. Dacă nu, găsiți va genera o eroare (nu se poate găsi / boot). Uită-te la rezultatul find (hd2,0) ... găsi (hd3,0) ... etc. până când găsiți stick-ul.