Lähiverkot -erikoistyökurssi Tutustuminen Debian GNU/Linux –käyttöjärjestelmään Tietoliikenteen laboratorio 6218 13.11.2006 / Ari Happonen
Harjoituksen aiheet Linux kernelin kääntäminen Ohjelmien asentaminen Harjoitustöiden tarkempi ohjeistus Debian –jakelun työkaluihin tutustuminen
Debian yleistä Virtuaaliterminaalit (terminaalin vaihto näppäinyhdistelmällä: alt + F?) VT1 – VT6 Tekstikonsoleita VT7 Tyypillisesti X –ikkunointijärjestelmän käytössä (graafinen käyttöliittymä) Kernelin kääntövaiheen aikana käytämme toista / toisia virtuaaliterminaaleja muiden harjoitusten tekemiseen
6218 –luokan tietokoneista Koneiden nimeämiskäytäntö: Dell –koneet: officeX, missä X on koneen numero (office1 demo-asennuskone, office5 nurkassa lähellä sohvaa (Dell:n kone)) raid (Suurin mustakoteloinen kone, nurkassa lähellä sohvaa (ISO koteloinen kone) ) dmzX (beige –koteloiset koneet, 1 takanurkan kone (kytkinlaitteiden vieressä), juokseva numerointi pitkin ikkunaseinää) SpyBox, kone ilman nimeä… Käyttäjätunnukset: Pääkäyttäjän (root) tunnus kerrotaan harjoituksissa Lisäksi käytössä käyttäjätunnus lahi
Debian asennus / Kernel –kääntöharjoitus aptitude on debian –levityspaketin mukana tuleva ohjelmistojen ”asennuspakettien” hallintaohjelmisto Tulet tarvitsemaan aptitude –komentoa myöhemmin omassa linux –työssäsi, joten tutustu siihen jo nyt mahdollisimman hyvin Käytetään joko komentoriviltä käsin tai tekstipohjaisen käyttöliittymän kautta Harjoittelemme oman Linux –ydin version kääntämistä ja käyttöön ottoa Prosessikuvaus: Ytimen lähdekoodin hakeminen ja gzip -paukkauksen purkaminen Voidaan yhtä hyvin käyttää aptitude:n kaltaisia työkaluja, kuin hakea ytimen lähdekoodi käsin Ytimen konfigurointi (valitaan ladattavat ajurit ja tapa, jolla ne ladataan osaksi ydintä) Ytimen kääntäminen Ytimen vieminen ”sopivaan” paikkaan hakemistorakenteessa, sekä käynnistyksessä ytimen lataavan boot loaderin uudelleen konfigurointi Kiintolevyn boot lohkon päivittäminen uudella boot loader koodilla
Debian asennus / Kernel -kääntöharjoitus Lähdekoodin etsiminen aptitude:lla # aptitude search kernel # aptitude search kernel-source # aptitude show kernel-source-2.6.8 # aptitude install kernel-source-2.6.8 (tehty valmiiksi harjoitusten nopeuttamiseksi) Kuten ”kernel-source-2.6.8” paketin kuvauksessa luki on kyseessä pelkästään ytimen lähdekoodi, joka sisältää debian distribuutiokohtaiset muutokset
Debian asennus / Kernel -kääntöharjoitus Aptitude:lla asennettaessa lataa aptitude ko. paketin /usr/src kansioon Paketin kokoluokka on noin 35 Mt, joten lataaminen voi viedä hetken. Purettuna kernel paketti on hieman yli 200 Mt. Lataaminen on tehty valmiiksi harjoitusten nopeuttamiseksi Seuraavaksi puramme ko. paketin # cd /usr/src # ls # tar -xvvjf kernel-source-2.6.8.tar.bz2
Käännösohjeita Eli käytännössä sinulta puuttuu ncurses -paketit Muokataan ytimen kuvausta niin että se erottuu ”standardi” ytimistä editoi Makefile -tiedostoa (/usr/src/kernel-source-2.6.8/Makefile) esimerkiksi nano –editorilla # nano Makefile EXTRAVERSION=custom Aloita kernelin konfigurointi komennolla: # make menuconfig => saat virheilmoituksen: ”Unable to find the Ncurses libraries” Tarkasta mitä kernel-source-2.6.8 paketin kuvauksessa luki # aptitude show kernel-source-2.6.8 Eli käytännössä sinulta puuttuu ncurses -paketit
Käännösohjeita Tarkistetaan libncurses5-dev –paketin kuvaus Etsitään ncurses paketit # aptitude search ncurses Tarkistetaan libncurses5-dev –paketin kuvaus # aptitude show libncurses5-dev Asennetaan libncurses5-dev # aptitude install libncurses5-dev Ajetaan interaktiivinen kernelin konfigurointiohjelma uudestaan (make menuconfig) ja aloitetaan kernelin asetusten muokkaaminen
Käännösohjeita Aloita kernelin konfigurointi komennolla (ajetaan /usr/src/kernel-source-2.6.8 – hakemistossa): # make menuconfig Lisää IDE-tuki suoraan kerneliin (built-in) Device Drivers ---> ATA/ATAPI/MFM/RLL support ---> alipuu ATA/ATAPI/MFM/RLL support Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support Include IDE/ATA-2 DISK support generic/default IDE chipset support Lisää ecx2 ja ext3 tuki suoraan kerneliin (built-in) File systems ---> Second extended fs support File systems ---> Ext3 journalling file system support konfiguroi sysrq ja kernel hacking päälle Kernel hacking ---> Kernel debugging Kernel hacking ---> Magic SysRq key
Käännösohjeita Lisää kernel konfigurointia: Jätä File systems ---> osioon vain seuraavat kohdat valituiksi Second extended fs support (+ kaikki tämän alta) Ext3 journalling file system support (+ kaikki tämän alta) ROM file system support (rakenna kernelin sisälle) Kernel automounter version 4 support (also supports v3) (rakenna kernelin sisälle) CD-ROM/DVD Filesystems ---> (älä muuta täältä mitään) Pseudo filesystems ---> (älä muuta täältä mitään) Miscellaneous filesystems ---> (älä muuta täältä mitään) Network File Systems ---> (älä muuta täältä mitään) Native Language Support ---> (älä muuta täältä mitään) Edellisiin alivalikoihin palataan tarkemmin seuraavilla sivuilla
Käännösohjeita Lisää kernel konfigurointia: Code maturity level options ---> Valitaan kaikki käännettäväksi kernelin sisälle (built-in) General setup ---> tänne ei tehdä muutoksia Loadable module support ---> tänne ei tehdä muutoksia Processor type and features ---> kohdasta seuraavat muutokset: HPET Timer Support (päälle) Symmetric multi-processing support (päälle) check for P4 thermal throttling interrupt (pois päältä) Toshiba Laptop support (pois päältä) Dell laptop support (pois päältä) /dev/cpu/microcode - Intel IA32 CPU microcode support (pois päältä)
Käännösohjeita Lisää kernel konfigurointia: Power management options (ACPI, APM) ---> APM (Advanced Power Management) BIOS Support ---> kohdasta poista kaikki valinnat Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> kohdasta poista seuraavat valinnat: ISA support NatSemi SCx200 support PCI Hotplug Support ---> Executable file formats ---> tänne ei tehdä muutoksia
Käännösohjeita Lisää kernel konfigurointia: Device Drivers ---> kohdasta poista kaikki valinnat seuraavien alipuiden alta: Memory Technology Devices (MTD) ---> Parallel port support Multi-device support (RAID and LVM) ---> Fusion MPT device support ---> IEEE 1394 (FireWire) support ---> I2O device support ---> ISDN subsystem ---> Telephony Support ---> Dallas's 1-wire bus ---> Misc devices ---> Sound --->
Käännösohjeita Lisää kernel konfigurointia: Device Drivers ---> Networking support ---> kohdasta poista valinnat: Amateur Radio support ---> IrDA (infrared) subsystem support ---> Bluetooth subsystem support ---> Bonding driver support EQL (serial line load balancing) support FDDI driver support HIPPI driver support (EXPERIMENTAL) PPP (point-to-point protocol) support SLIP (serial line) support Fibre Channel driver support Seuraavista Device Drivers ---> Networking support ---> alla olevista alipuista poista kaikki valinnat: ARCnet devices ---> Ethernet (10000 Mbit) ---> Token Ring devices ---> Wireless LAN (non-hamradio) ---> Wan interfaces ---> ATM Drivers --->
Käännösohjeita Lisää kernel konfigurointia: Device Drivers ---> Multimedia devices ---> kohdasta poista kaikki valinnat: Tarkasta myös kaikki alipuut!! Security options ---> kohdasta poista kaikki valinnat Cryptographic options ---> tänne ei tehdä muutoksia Library routines ---> tänne ei tehdä muutoksia
Käännösohjeita Lisää kernel konfigurointia: Lisäämme kerneliin tarvittavat osat, jotta kernelimme pystyy käynnistymään USB -kiintolevyltä Device Drivers ---> SCSI device support ---> kohdasta sisällytä kerneliin: SCSI device support SCSI disk support Device Drivers ---> USB support ---> kohdasta sisällytä kerneliin: Support for Host-side USB EHCI HCD (USB 2.0) support OHCI HCD support UHCI HCD (most Intel and VIA) support USB Mass Storage support
Käännösohjeita Lopeta konfigurointi ja sammuta konfigurointi –ohjelma Vastaa myöntävästi uusien asetusten tallentamiseen Kun saat itse kääntöprosessin käyntiin (ohje seuraavalla sivulla) seuraa hetki että kaikki menee ”OK” ja vaihda toiseen virtuaalikonsoliin (ALT + F4, tms.)
Kernelin & modulien kääntäminen Selitykset kernel imagen kääntökomennoille: # make bzImage komento luo kernel –imagen, joka tullaan lisäämään myöhemmin LILO:n käynnistyslistalle Kernel itsessään ei riitä, tarvitaan myös laiteajurimoduulit: # make modules komento kääntää ajurimoduulit (moduuleja voidaan ottaa käyttöön lennosta tarpeen mukaan) moduulit kopioidaan paikkaan josta kernel löytää ne: # make modules_install komento kopioi moduulit /lib/modules/<kernel-versio> hakemistoon Suorita itse kääntöprosessi komentoyhdistelmällä # make bzImage && make modules && make modules_install Seuraa käännöksen etenemistä hetki virheilmoitusten varalta ja vaihda sitten toiseen virtuaalikonsoliin (alt + F?)
Debian, ohjelmien asentaminen Ohjelmien asentamiseen liittyviä perusasioita Ohjelman etsiminen: # aptitude search hakusana Ohjelman tarkempi kuvaus # aptitude show ohjelma Ohjelman asennuksen simulointi # aptitude –s install ohjelman Esimerkki asennuksesta # aptitude install screen Kokeile itse asentamalla ohjelma netcat
Debian, ohjelmien asentaminen tcpdump, netcat nano, pico, jed, emacs, vi, vim iperf, nmap, screen gpm Ehdotuksia?
Uuden kernelin kopiointi /boot -hakemistoon Palaa takaisin virtuaaliterminaaliin, johon käynnistit kernelin käännösprosessin Kopioi bzImage /boot –hakemistoon /boot –hakemisto on vakiintunut aikojen saatossa järjestelmän ytimien säilytyspaikkana # cp /usr/src/kernel-source-2.6.8/arch/i386/boot/bzImage /boot/vmlinuz-2.6.8custom nimi erottaa tämän käännöksen muista käännöksistä, kannattaa pitää yhtenäistä nimeämispolitiikkaa muiden image -tiedostojen kanssa, jotta versioiden erojen muistaminen olisi helppoa Tarvitsemme USB –boottausta varten ns. initrd –imagen (initial ramdisk) Vaihda työskentelykansioksi /boot –kansio # cd /boot Komentokehotteessa komento pwd kertoo nykyisen työskentelykansion
Debian, ohjelmien asentaminen Initrd –imagen luonti # mkinitrd -o /boot/initrd.img-2.6.8custom 2.6.8custom Saat varoituksen puuttuvista moduuleista (kyseiset ajurit valittiin käännettäväksi suoraan kerneliin, joten moduuleja ei tämäntakia ole olemassa) Jätä varoitus huomiotta ja jatka eteenpäin
Uuden kernelin lisääminen boot valikkoon Uuden Kernel ja initrd -imagen sijainti on kerrottava boot loaderille (LILO, LInux LOader) Muokkaa (eli lisää tiedoston loppuun) /etc/lilo.conf tiedostoon merkintä uudesta kernel käännöksestä (esim. nano -editorilla) # nano /etc/lilo.conf #oma kernel image=/boot/vmlinuz-2.6.8custom Initrd=/boot/initrd.img-2.6.8custom label=custom read-only Poista myös kommenttimerkki # riviltä 77 sanan prompt edestä editoidessasi lilo.conf -tiedostoa
Uuden kernelin lisääminen boot valikkoon Lopuksi ajamme LILO:n, joka kirjoittaa käynnistyslohkon uusiksi # lilo -v Tarkastele LILO:n tulostetta mahdollisten virheilmoitusten varalta Kysy harjoitustenpitäjältä ohjeita virheiden ilmetessä
Käännöksen testaaminen Uudelleenkäynnistä tietokone komennolla # reboot tai näppäinyhdistelmällä Ctrl + Alt + Del Valitse uusi kernel –image buutattavaksi valikosta custom –valinta LILO:n valikosta, tai kirjoittamalla ”custom” LILO:n kehoitteessa Alt+SysRq+k tappaa käytössä olevasta virtuaaliterminaalista prosessit esim. aja komento ”top” ja kokeile miten käy! alt+sysrq+h: mitä muuta voidaan tehdä
GNU/Linux -hakemistorakenteesta /proc psuedo “tiedostojärjestelmä” # cat /proc/cpuinfo # cat /proc/ide/…… /var Sisältää tyypillisesti väliaikaisteidostoja, logistiedostoja yms. # cat /var/log/messages # cat /var/log/dmesg /etc Konfigurointitiedostot, käynnistys-scriptit… # cat /etc/fstab # cat /etc/motd # cat /etc/lilo.conf # ls /etc/init.d
Debian / Linux aiheisia faq sivustoja Debian - Basic Commands and Tools http://www.debian.org/doc/manuals/user/ch6.html The Debian GNU/Linux FAQ http://www.debian.org/doc/FAQ/ apt-get -> Aptitude http://www.garfieldtech.com/blog/2005/08/19/aptit ude/
Linux harjoitustyö Muistakaa editoida tiedostoa /etc/motd Kysyttävää??
Linux Magic System Request Key Hacks Here is the list of possible values in /proc/sys/kernel/sysrq: 0 - disable sysrq completely 1 - enable all functions of sysrq >1 - bitmask of allowed sysrq functions (see below for detailed function description): 2 - enable control of console logging level 4 - enable control of keyboard (SAK, unraw) 8 - enable debugging dumps of processes etc. 16 - enable sync command 32 - enable remount read-only 64 - enable signalling of processes (term, kill, oom-kill) 128 - allow reboot/poweroff 256 - allow nicing of all RT tasks
Linux Magic System Request Key Hacks ALT-SysRq-<command key> k Secure Access Key (SAK) Kills all programs on the current virtual console. b Will immediately reboot the system without syncing or unmounting your disks. u Will attempt to remount all mounted filesystems read-only. l Send a SIGKILL to all processes, INCLUDING init. (Your system will be non-functional after this.) h Will display help