Postup
======
-1. Stáhneme [zdrojové kódy][bbgit] projektu [BusyBox][]:
+1. Stáhněte si zdrojové kódy z git repozitáře projektu [BusyBox][]
+ (adresu repozitáře si najděte sami).
- git clone git://busybox.net/busybox.git --reference /usr/src/busybox.git
+ git clone ...
cd busybox
Protože se jedná o aktuální vývojový snapshot, je možné, že se
a můžeme si vybrat verzi, kde se chyba nevyskytuje. Například
- git checkout -f 1_20_2
-
-[bbgit]:http://git.busybox.net/busybox/
+ git checkout -f 1_22_0
2. Zkonfigurujeme jak chceme BusyBox přeložit.
RAM-disk obsahovat i několik položek v adresáři `/dev` pro přístup
k virtuálním terminálům.
- 1. Pokud máte root práva, použijte ke tvorbě RAM-disku následující příkazy:
+ 1. Pokud máte *rootovská* práva, použijte ke tvorbě RAM-disku
+ následující příkazy:
mkdir _install/{dev,etc,proc,sys}
sudo cp -a /dev/tty? _install/dev
Na 64-bitovém systému spustíme emulátor následovně:
- qemu-system-x86_64 -kernel /boot/vmlinuz-2.6.32-5-amd64 -initrd ramdisk
+ qemu-system-x86_64 -kernel /boot/vmlinuz-3.2.0-4-amd64 -initrd ramdisk
Na 32-bitovém systému většinou stačí zkrácený název `qemu`:
Pokud systém nabízí hardwarovou podporu virtualizace, je výhodné
použít [KVM][kvm]. Výsledek pak běží rychleji. Například:
- kvm -kernel /boot/vmlinuz-2.6.32-5-amd64 -initrd ramdisk
+ kvm -kernel /boot/vmlinuz-3.2.0-4-amd64 -initrd ramdisk
[kvm]:http://www.linux-kvm.org/
Možná vylepšení
===============
-Dále můžete provést drobná vylepšení vašeho systému, která vám mohou
-zjednodušit další práci.
+Dále můžete provést drobná (či větší) vylepšení svého nového systému,
+která vám mohou zjednodušit další práci.
1. Můžete připojit souborový systém `/proc`, aby fungovaly příkazy
- jako např. `ps` (výpis běžících procesů). Příkaz spusťte v
- emulátoru, ne na vaší pracovní stanici.
+ jako např. `ps` (výpis běžících procesů). Příkaz spusťte
+ v emulátoru, ne na vaší pracovní stanici.
mount -t proc none /proc
Nyní musíte znovu vytvořit RAM-disk a nabootovat.
-3. Zachytávání zpráv jádra spuštěného v emulátoru QEMU do souboru
- je možné jejich přesměrování na virtuální sériový port.
- Požadavek na jeho vytvoření se předá QEMU zadáním parametru
+3. Zachytávání zpráv jádra spuštěného v emulátoru QEMU do souboru.
+ Zprávy jádra je možné přesměrovat na virtuální sériový port a
+ odtamtud pak například na standardní výstup:
- qemu -serial file:/tmp/virtual_guest.log ...
+ qemu -serial stdio ...
- a jádro spustíme s parametrem `console=ttyS0`
+ a jádru předáme parametr `console=ttyS0`
- qemu -serial file:/tmp/virtual_guest.log -append console=ttyS0 ...
+ qemu -serial stdio -append console=ttyS0 ...
4. Pokud chcete z vašeho systému komunikovat po síti, připojte ho na
- vnější síť s využitím NAT na uživatelské úrovni:
+ vnější síť pomocí <abbr title="Network Address
+ Translation">NAT</abbr> na uživatelské úrovni:
qemu -net nic,vlan=0,model=ne2k_pci -net user,vlan=0 ...
Zadání
======
-Vytvořte jednoduchý jaderný modul, který po zavedení do jádra vypíše
-vaše jméno (objeví se ve výstupu příkazu `dmesg`). Jinak nemusí dělat nic.
-Předveďte činnost vašeho modulu ve vámi vytvořeném systému běžícím v
-emulátoru.
+1. Stáhněte si [[tento program|magic]] ([[32-bitová verze|magic32]]) a
+ zprovozněte ho ve vámi vytvořeném systému. Zprovoznění znamená, že
+ po spuštění program nevypíše žádnou chybu. Nezapomeňte nastavit
+ práva pro spouštění příkazem `chmod +x`.
+
+ Ke zjištění případným problémů by se vám mohl hodit příkaz
+ `strace`, který vypisuje všechna systémová volání vyvolaná daným
+ programem. Například zkuste porovnat výstup následujících příkazů:
-Kdo se bude nudit, může zkusit rozšířit modul tak, aby se jeho jméno
-objevilo v souboru `/proc/myname` nebo vytvořit jednoduchý ovladač,
-který bude vracet vaše jméno při čtení z `/dev/myname`. Návod najdete
-v [tomto článku][henson_drivers] (strany 2 a 3).
+ echo Ahoj
+ strace echo Ahoj
+
+2. Vytvořte jednoduchý jaderný modul, který po zavedení do jádra vypíše
+ vaše jméno (objeví se ve výstupu příkazu `dmesg`). Jinak nemusí dělat nic.
+ Předveďte činnost vašeho modulu ve vámi vytvořeném systému běžícím v
+ emulátoru.
+
+ Kdo se bude nudit, může zkusit rozšířit modul tak, aby se jeho jméno
+ objevilo v souboru `/proc/myname` nebo vytvořit jednoduchý ovladač,
+ který bude vracet vaše jméno při čtení z `/dev/myname`. Návod najdete
+ v [tomto článku][henson_drivers] (strany 2 a 3).
Tipy a triky
============
[LDD3]:http://lwn.net/Kernel/LDD3/
[henson_drivers]:http://linuxdevcenter.com/pub/a/linux/2007/07/05/devhelloworld-a-simple-introduction-to-device-drivers-under-linux.html
-<!-- TODO pro pristi rok: At si najdou kde stahnout busybox sami.
+<!-- TODO pro pristi rok: Pokud i tohle bude moc jednoduché:
Zakladni uloha jen za 3 body, za dalsi dva body uloha bez navodu: dame
jim binarku, ktera bude chctit sdilenou knihovnu a tu budou muset
napsat. -->