]> rtime.felk.cvut.cz Git - edu/osp-wiki.git/commitdiff
Uprava 2. cviceni inspirovana lonskou diskuzi
authorMichal Sojka <sojkam1@fel.cvut.cz>
Sun, 23 Feb 2014 00:19:24 +0000 (01:19 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Sun, 23 Feb 2014 00:19:24 +0000 (01:19 +0100)
cviceni/2.mdwn
cviceni/2/magic [new file with mode: 0755]
cviceni/2/magic32 [new file with mode: 0755]

index 5c607790bdcfac72868996826636092cf354d5e4..05415b9e9c5a578cc02af22f77d600ad7673b2e8 100644 (file)
@@ -36,9 +36,10 @@ BusyBoxem. Dále si vyzkoušíte naprogramovat jednoduchý modul do jádra.
 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
@@ -49,9 +50,7 @@ Postup
 
     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. 
 
@@ -126,7 +125,8 @@ Postup
    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
@@ -172,7 +172,7 @@ Postup
 
    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`:
 
@@ -181,7 +181,7 @@ Postup
    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/        
 
@@ -195,12 +195,12 @@ Postup
 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
+   emulátoru, ne na vaší pracovní stanici.
 
        mount -t proc none /proc
 
@@ -217,18 +217,19 @@ zjednodušit další práci.
 
    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 ...
 
@@ -313,15 +314,27 @@ modul, který můžete zavést do jádra příkazem
 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
 ============
@@ -363,7 +376,7 @@ Reference
 [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. -->
diff --git a/cviceni/2/magic b/cviceni/2/magic
new file mode 100755 (executable)
index 0000000..89b6998
Binary files /dev/null and b/cviceni/2/magic differ
diff --git a/cviceni/2/magic32 b/cviceni/2/magic32
new file mode 100755 (executable)
index 0000000..3038690
Binary files /dev/null and b/cviceni/2/magic32 differ