Debiani alglaadimine

Allikas: Kuutõrvaja

Sissejuhatus

Arvuti, õieti operatsioonisüsteemi kasutamine algab arvuti käivitamisega, tavaliselt toite sisselülitamise teel, seejärel toimub operatsioonisüsteemi nn alglaadimine (ingl. k. booting, bootup, boot) ja lõpuks saab kasutaja süsteemi sisse logida ja hakata arvutit nö tavapärasel viisil kasutama.

Käesolevas tekstis on kirjeldatud seda järgnevust, mille arvuti läbib alglaadimisel

  • toite sisselülitamise järel omandab kontrolli püsimälus olev firmware (PC puhul BIOS)
  • BIOS laadib ja käivitab alglaaduri (nt GRUB - GRand Unified Bootloader)
  • alglaadur laadib tuuma ja initrd/initramfs'i (initial ramdisk/initial ram file system)
  • alglaadur käivitab tuuma ning operatsioonisüsteemi käivitamiseks olulised seadmed initsialiseeritakse initramfs'is asuvate programmide abil
  • initramfs annab oma töö lõpuks juhtimise üle operatsioonisüsteemi programmile init
  • operatsioonisüsteemi init käivitab süsteemis protsessid
  • süsteem on kasutamiseks valmis (nt saab kasutaja sisse logida)

Kuigi Debiani kasutamine ei eelda otseselt kasutaja sekkumist alglaadimise protseduuri ja sündmused toimuvad automaatselt, aitab alglaadimisel toimuvatest sündmustest aru saamine paremini tulla toime nt sellistel juhtumitel

  • süsteemi automaatne alglaadimine on tarvis peatada enne lõpulejõudmist (nt millegi kontrolliks soovitakse peatuda enne operatsioonisüsteemi init programmi käivitamist)
  • operatsioonisüsteem on kopeeritud teisele riistvarale, kus ta ei käivitu automaatselt (tõenäoliselt on põhjuseks, et initramfs ei laadi kõvaketta kasutamiseks vajalikke mooduleid)
  • installeeritud operatsioonisüsteemi juurfailisüsteem paigutatakse ümber fdisk partitioonilt LVM voluumile

BIOS

Arvuti alglaadimise seisukohast on BIOS'is (Basic Input Output System) tarvis näidata, milliselt ressursilt toimub alglaaduri kasutamine. Tavaliselt on see lokaalne kõvaketas, kuid võib olla ka nt CD/DVD meedia või PXE võimelise võrgukaardi abil tftp server.

Alglaadur

Alglaaduri (ingl. k. bootloader) ülesanne on laadida sobivate parameetritega operatsioonisüsteemi tuum ja initramfs, st käivitada operatsioonisüsteem. Levinud on mitmeid erinevad alglaadurid, Debiani paigaldamisel pakutakse kasutajale valikut paigaldada GRUB, aga Debiani saab käivitada ka teiste alglaaduritega, nt LILO sh alglaadida võrgust.

Alglaadur GRUB koosseisu kuulub mitu komponenti ja alglaaduri töö toimub mitmeastmeliselt

  • esmalt laadib BIOS alglaaduri nn esimene taseme (ingl. k. stage 1) kõvaketta alguses paiknevalt MBR'ilt (ingl. k. Master Boot Record); esimese taseme laadimise järel kasutajal tavaliselt ei ole veel võimalik sekkuda, automaatselt järgneb suundumine teise taseme juurde; selleks loeb esimene taseme alglaadur alglaaduri paigaldamisel kindlaks määratud kohast kõvakettal alglaaduri teise taseme (ingl. k. stage 2); teise taseme paiknemine on kirjas MBR'is ning on määratud nö füüsilise sektori asukohaga, mitte kasutades failisüsteemi mõisteid, kuna esimene tase ei oska kasutada failisüsteemi
  • teise taseme laadimise järel on kasutajal ees /boot/grub/menu.lst faili alusel genereeritud menüü, kust saab teha edasisi valikuid; oluline on tähele panna, et teise taseme juures on alglaaduril oskus kasutada enamlevinud failisüsteeme, sh ext3; teise taseme töö tulemusena saab kasutaja määrata, millist tuuma ja initramfs'i ta kasutama hakkab ning näidata tuuma juures erinevaid parameetreid (reeglina juurfailisüsteemi asukoha)
  • alglaadur annab juhtimise üle operatsioonisüsteemi tuumale, laaditakse tuum; siinkohal on oluline tähele panna, et kui kuni tuuma laadimisele eelnenud perioodil olid kasutuses nn BIOS'i seadmed, siis nüüd kontrollib seadmeid operatsioonisüsteemi tuum (ja tuuma moodulid); sellise asenduse tulemusena võib vahel esineda nähtus, kus kuni tuuma laadimiseni töötas USB klaviatuur ning oli kasutatav CD seade, seejärel aga enam mitte, arusaadavalt on põhjuseks, et tuumas sel juhul puudub vastavate seadmete toetus

Alglaaduri GRUB paketi koosseisu kuuluvate failide nimekirja saab vaadata öeldes

 # dpkg -L grub

Tuum ja initramfs

Kuigi praktiliselt on võimalik süsteem ettevalmistada ka nii, et alglaadur laadib tuuma ning tuuma laadimise lõpus käivitatakse otse operatsioonisüsteemi init programm, toimub reeglina Debiani puhul alglaadimisel selline järgnevus

  • alglaadur laadib tuuma ja initramfs kujutise
  • alglaadur käivitab tuuma
  • tuum pakib initramfs kujutisest mällu lahti spetsiaalselt ettevalmistatud nn. init-failisüsteemi (ingl. k. initramfs)
  • initramfs peal on iseenesest miniatuurse operatsioonisüsteemi juurfailisüsteem, millelt tuum käivitab esialgse init-programmi (nn init-skripti)
  • init skripti töö tulemusena toimub rida täiendavaid initsialiseerimisi (nt plokkseadmete st kõvaketaste, tarkvaralise raidi, krüptitud plokkseadmete või lvm kasutamise jaoks vastavate tuuma moodulite laadimine ja nende ressursside kasutuselevõtmine)
  • initramfs monteerib oma töö käigus nö päris operatsioonisüsteemi juurfailisüsteemi
  • initramfs annab oma töö lõpuks juhtimise üle operatsioonisüsteemi programmile init - operatsioonisüsteemi juurfailisüsteemilt käivitatakse init programm

initrd/initramfs kasutamine on populaarne selliste asjaolude tõttu

  • Linuxi distributsioonid püütakse valmistada ette nii, et neid saaks kasutada võimalikult mitmekesisel riistvaral ning selleks peaks tuuma sisaldama rohkearvuliselt erinevate seadmete draivereid. See aga teeks tuuma väga suureks ja nt ebasobivaks kasutada vähese hulga mäluga arvutitel. Kuna arvutisse tööleseatud operatsioonisüsteemis moodustatakse initramfs tarkvara paigaldamise käigus automaatselt, siis ta sisaldab just selles konkreetses arvutis kasutuses oleva riistvara jaoks vajalikke draivereid (tuuma mooduleid).
  • Mõnel juhtumil on tarvis operatsioonisüsteemi käivitumise suhteliselt varajases faasis ettevalmistada operatsioonisüsteemi jaoks olulised seadmed (nt plokkseade, kus juurfailisüsteem asub krüptitud tarkvaralisel RAID seadmel) ja seda oleks kohmakas teha kerneli käivitamisel etteantavate parameetrite abil.
  • Süsteemi väljatoomisel nn hibernatsioonist peab saama juhtida hibernatsiooni minekul salvestatud kujutise uuesti mällu lugemist (kas saalealalt (ingl. k. swap) või selleks kasutatud failist mõnes failisüsteemis).

Tavaliselt paigaldatakse tuum ja initramfs operatsioonisüsteemi paigaldamise käigus. Asjassepuutuvate failide nimekirja saab vaadata öeldes nii

 # dpkg -L linux-image-2.6.26-1-xen-amd64
 ...
 /boot/vmlinuz-2.6.26-1-xen-amd64

ja

 # dpkg -L linux-modules-2.6.26-1-xen-amd64
 ...
 /boot/System.map-2.6.26-1-xen-amd64
 /boot/config-2.6.26-1-xen-amd64
 /lib/modules/2.6.26-1-xen-amd64
 ...

Oluline on tähele panne, et initramfs

 /boot/initrd.img-2.6.26-1-xen-amd64

ei paigaldata otseselt paketihaldusest, vaid konstrueeritakse seadistusfailide abil automaatselt kohapeal programmi update-initramfs abil. Samuti võib siit tähele panna, et failinimi on ajaloolistel põhjustel endiselt initrd. Initrd oli varasem viis esialgse juurfailisüsteemi ette andmiseks, mis kasutas mäluketast (ramdisk), tänapäeval on selle asemele tulnud initramfs, mis on mälukasutuse suhtes efektiivsem.

Alltoodud näidetes on kasutatud Debiani paketihalduse tuuma ja mitte füüsilist arvutit, vaid Xeni domU virtuaalset keskkonda.

initramfs init skripti täitmise protseduur

initramfs arhiiv on nn newc formaadis cpio arhiiv, mis on gzip'ga kokku pakitud. Olemasoleva initramfs sisu esitamiseks sobib öelda

# lsinitramfs -l /boot/initrd.img-2.6.32-5-amd64
/boot/initrd.img-2.6.32-5-amd64
drwxr-xr-x   9 root     root            0 Feb 13 11:23 .
drwxr-xr-x   2 root     root            0 Feb 13 11:23 lib64
-rwxr-xr-x   1 root     root       128744 Jan 23 22:30 lib64/ld-linux-x86-64.so.2
drwxr-xr-x   6 root     root            0 Feb 13 11:23 etc
drwxr-xr-x   2 root     root            0 Feb 13 11:23 etc/lvm
...

ning lahtipakkimiseks tuleb öelda

 # mkdir /tmp/initrd && cd /tmp/initrd
 # gunzip -c /boot/initrd.img-2.6.26-1-xen-amd64 | cpio -dmi
 42750 blocks
 # ls -l
 total 36
 drwxr-xr-x 2 root root 4096 2009-04-04 15:50 bin
 drwxr-xr-x 3 root root 4096 2009-04-04 15:50 conf
 drwxr-xr-x 5 root root 4096 2009-04-04 15:50 etc
 -rwxr-xr-x 1 root root 4238 2009-01-07 16:14 init
 drwxr-xr-x 4 root root 4096 2009-04-04 15:50 lib
 drwxr-xr-x 2 root root 4096 2009-04-04 15:50 lib64
 drwxr-xr-x 2 root root 4096 2009-04-04 15:50 sbin
 drwxr-xr-x 7 root root 4096 2009-04-04 15:50 scripts

Kokkupakkimiseks sobib öelda, arusaadavalt peab olema ettevaatlik, et mitte töötavat initramfs arhiivi üle kirjutada

 # find . | cpio -H newc -o | gzip > /boot/initrd.img

uue initramfs ahiivi kasutamiseks tuleb Xeni domU seadistusfailis kasutada rida

 ramdisk='/boot/initrd.img'

Peale tuuma bootimist laaditakse alglaaduri seadistusfailis näidatud initramfs ning käivitatakse sealt skript init. See skript on suhtliselt hästi loetav, üldiselt toimuvad tegevused sellises järjekorras

  • moodustatakse kataloogid /dev, /root, /sys, /proc ja /tmp
  • ühendatakse külge failisüsteemid /sys ja /proc
  • moodustatakse seadmed /dev/console ja /dev/null
  • kirjeldatakse ja algväärtustatakse muutujad ROOT, break, init, BOOT jt
  • laaditakse sisse funktsioonid skriptist ./scripts/functions
  • väärtustatakse veel muutujaid kerneli parameetritega antud andmete abil
  • käivitatakse scripts/init-top skriptid
 scripts/init-top/all_generic_ide
 scripts/init-top/framebuffer
 scripts/init-top/keymap
  • laaditakse tuuma moodulid
  • käivitatakse scripts/init-premount skriptid
 scripts/init-premount/blacklist
 scripts/init-premount/udev
 scripts/init-premount/thermal
  • loetakse sisse funktsioonid skriptist /scripts/${BOOT}, antud juhul /scripts/local
  • ühendatakse külge nö päris juurfailisüsteem
 /scripts/local-top
 /scripts/local-premount
 /scripts/local-bottom
  • käivitatakse /scripts/init-bottom skriptid, tapetakse initramfs udev protsess
 scripts/init-bottom/udev
  • liigutatakse /sys ja /proc failisüsteemid päris juurfailisüsteemi alla
 mount -n -o move /sys ${rootmnt}/sys
 mount -n -o move /proc ${rootmnt}/proc
  • käivitatakse nö päris operatsioonisüsteemi init
 exec run-init ${rootmnt} ${init} "$@" <${rootmnt}/dev/console >${rootmnt}/dev/console

initramfs init skripti täitmisega kaasneb konsoolil selline logi, nagu näha on mõned teated Xeni spetsiifilised, ilmselt aitaks fan ja thermal mooduli blacklistimine

 Loading, please wait...
 Begin: Loading essential drivers ... done.
 Begin: Running /scripts/init-premount ... FATAL: Error inserting fan \
   (/lib/modules/2.6.26-1-xen-amd64/kernel/drivers/acpi/fan.ko): No such device
 WARNING: Error inserting processor (/lib/modules/2.6.26-1-xen-amd64/kernel/drivers/acpi/processor.ko): \
   No such device
 [    1.216595] thermal: Unknown symbol acpi_processor_set_thermal_limit
 FATAL: Error inserting thermal (/lib/modules/2.6.26-1-xen-amd64/kernel/drivers/acpi/thermal.ko): \
   Unknown symbol in module, or unknown parameter (see dmesg)
 done.
 Begin: Mounting root file system ... Begin: Running /scripts/local-top ... 
 [    1.396075] device-mapper: uevent: version 1.0.3
 [    1.396752] device-mapper: ioctl: 4.13.0-ioctl (2007-10-18) initialised: dm-devel@redhat.com
 Volume group "system" not found
 done.
 Begin: Running /scripts/local-premount ... done.
 [    1.537167] kjournald starting.  Commit interval 5 seconds
 [    1.537182] EXT3-fs: mounted filesystem with ordered data mode.
 Begin: Running /scripts/local-bottom ... done.
 done.
 Begin: Running /scripts/init-bottom ... done.
 INIT: version 2.86 booting

initramfs init skripti täitmise peatamine

Üks huvipakkuv initramfs'ga tegelemise rakendus on peatada initramfs täitmine kasutades tuuma parameetrit break. Nt peatame alglaadimise enne initramfs udev protsessi tapmist, kusjuures päris juurikas on siis juba külge ühendatud, selleks tuleb kasutada domU seadistusfailis rida (xencons=tty on Xeni spetsiifiline)

 extra='break=bottom xencons=tty'

Tulemusena jõuame nn initramfs shelli, mis on tegelikult ash shell

 ...
 Begin: Running /scripts/local-bottom ... done.
 done.
 Spawning shell within the initramfs
 
 BusyBox v1.10.2 (Debian 1:1.10.2-2) built-in shell (ash)
 Enter 'help' for a list of built-in commands.
 
 /bin/sh: can't access tty; job control turned off
 (initramfs) 

ning selles shellis saab kasutada neid käske, mis on initramfs sees toetatud, nt

 (initramfs) ifconfig eth0
 eth0      Link encap:Ethernet  HWaddr 70:01:68:01:00:51  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

või

 (initramfs) df -h  
 Filesystem                Size      Used Available Use% Mounted on
 udev                     10.0M      8.0k     10.0M   0% /dev
 /dev/sda1                31.7G      2.4G     27.8G   8% /root

Kuna päris juurfailisüsteem on ühendatud, siis on võimalik seda kasutada

 (initramfs) mount -t proc /proc /root/proc
 (initramfs) mount -t sysfs /sys /root/sys
 (initramfs) chroot /root

Edasi saab juba täielisemalt arvutit kasutada, nt peale võrgu seadistamist käivitada ssh serveri.

initramfs promptist väljumiseks tuleb valida Ctrl+D või kirjutada nt 'exit', seejärel jätkub init skripti täitmine pooleli jäänud kohast.

Tavaliselt on võimalikud sellised breakpointid

  • break=top - Break before any scripts are run (including usplash)
  • break=modules - Break before any modules are loaded
  • break OR break=premount - Break before the premount scripts are run (ie: udev)
  • break=mount - Break before the root partition is mounted
  • break=bottom - Break before the 'bottom' scripts are run
  • break=init - Break just before control is handed over to /sbin/init

initramfs seadistamine

tuuma versioonile 2.6.26-1-xen-amd64 vastava initramfs genereerimiseks tuleb öelda, eelnevalt võiks olemasoleva initramfs'i liigutada käsitsi muu nime alla, et seda saaks vajadusel kasutada

 # mv /boot/initrd.img-2.6.26-1-xen-amd64 /boot/initrd.img-2.6.26-1-xen-amd64-20090406-tootanud
 # update-initramfs -c -k 2.6.26-1-xen-amd64

initramfs moodustamist saab juhtida näiteks

  • seadistusfailiga /etc/initramfs-tools/initramfs.conf
  • seadistusfailiga /etc/modprobe.d/blacklist
  • kontrollides kataloogi /usr/share/initramfs-tools/scripts sisu

/usr/share/initramfs-tools/scripts kataloogi kopeerivad ka teised paketid oma skripte, nt

 # dpkg -S /usr/share/initramfs-tools/scripts/local-top/mdadm 
 mdadm: /usr/share/initramfs-tools/scripts/local-top/mdadm
 # dpkg -S /usr/share/initramfs-tools/scripts/local-top/lvm2
 lvm2: /usr/share/initramfs-tools/scripts/local-top/lvm2

Näiteks, soovides eemaldada virtuaalarvuti juures kasutatavast initramfs'ist fan ja thermal tuuma moodulid tuleb lisada /etc/modprobe.d/blacklist faili juurde read

 blacklist fan
 blacklist thermal

ning öelda

 # update-initramfs -c -k 2.6.26-1-xen-amd64 -b /tmp
 update-initramfs: Generating /tmp/initrd.img-2.6.26-1-xen-amd64
 # mv /tmp/initrd.img-2.6.26-1-xen-amd64 /boot/initrd.img-2.6.26-1-xen-amd64-domU

ning kasutada seda genereeritud initramfs'i domU seadistusfailis.

/etc/modprobe.d seadistusfailide muutmisel peab arvestama, et neid kasutatakse ka dom0 juures kasutatava initramfs moodustamisel, sh neil juhtudel, kui see protseduur toimub automaatselt, nt tuuma moodulite uuendamisel. Seega üldiselt ei ole hea muuta /etc/modprobe.d kataloogi sisu täpselt teadmata, mida muudatus kaasa toob.

Operatsioonisüsteemi init

Operatsioonisüsteemi init programmi käivitamisel tekib esimene süsteemis töötav protsess, kõik muud protsessid on selle protsessi poolt otseselt või kaudselt käivitatud. init programmi tööd kontrollib seadistusfail /etc/inittab, mille alguses on kirjas

 # egrep -v "^#|^$" /etc/inittab
 id:2:initdefault:
 si::sysinit:/etc/init.d/rcS
 ~~:S:wait:/sbin/sulogin
 l0:0:wait:/etc/init.d/rc 0
 l1:1:wait:/etc/init.d/rc 1
 l2:2:wait:/etc/init.d/rc 2
 l3:3:wait:/etc/init.d/rc 3
 l4:4:wait:/etc/init.d/rc 4
 l5:5:wait:/etc/init.d/rc 5
 l6:6:wait:/etc/init.d/rc 6
 z6:6:respawn:/sbin/sulogin
 ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
 pf::powerwait:/etc/init.d/powerfail start
 pn::powerfailnow:/etc/init.d/powerfail now
 po::powerokwait:/etc/init.d/powerfail stop
 1:2345:respawn:/sbin/getty 38400 tty1
 2:23:respawn:/sbin/getty 38400 tty2
 3:23:respawn:/sbin/getty 38400 tty3
 4:23:respawn:/sbin/getty 38400 tty4
 5:23:respawn:/sbin/getty 38400 tty5
 6:23:respawn:/sbin/getty 38400 tty6

ja mis vaikimisi korraldab sellises järjekorras edasise süngmuste toimumise

  • käivitatakse skript /etc/init.d/rcS
 #! /bin/sh
 #
 # rcS
 #
 # Call all S??* scripts in /etc/rcS.d/ in numerical/alphabetical order
 #
 
 exec /etc/init.d/rc S
  • tähestikulises järjekorras käivitatakse skriptid kataloogist /etc/rcS.d, tegelikult on need lingid /etc/init.d kataloogi skriptidele
 # find /etc/rcS.d -type l | sort
 /etc/rcS.d/S01glibc.sh
 /etc/rcS.d/S02hostname.sh
 /etc/rcS.d/S02mountkernfs.sh
 /etc/rcS.d/S03udev
 /etc/rcS.d/S04mountdevsubfs.sh
 /etc/rcS.d/S05bootlogd
 /etc/rcS.d/S05keymap.sh
 /etc/rcS.d/S08hwclockfirst.sh
 /etc/rcS.d/S10checkroot.sh
 /etc/rcS.d/S11hwclock.sh
 /etc/rcS.d/S12mtab.sh
 /etc/rcS.d/S18ifupdown-clean
 /etc/rcS.d/S20module-init-tools
 /etc/rcS.d/S25mdadm-raid
 /etc/rcS.d/S26cryptdisks-early
 /etc/rcS.d/S26lvm2
 /etc/rcS.d/S28cryptdisks
 /etc/rcS.d/S30checkfs.sh
 /etc/rcS.d/S30procps
 /etc/rcS.d/S35mountall.sh
 /etc/rcS.d/S36mountall-bootclean.sh
 /etc/rcS.d/S36udev-mtab
 /etc/rcS.d/S37mountoverflowtmp
 /etc/rcS.d/S39ifupdown
 /etc/rcS.d/S40networking
 /etc/rcS.d/S43portmap
 /etc/rcS.d/S44nfs-common
 /etc/rcS.d/S45mountnfs.sh
 /etc/rcS.d/S46mountnfs-bootclean.sh
 /etc/rcS.d/S48console-screen.sh
 /etc/rcS.d/S55bootmisc.sh
 /etc/rcS.d/S55urandom
 /etc/rcS.d/S70x11-common
 /etc/rcS.d/S99stop-bootlogd-single
  • tähestikulises järjekorras käivitatakse skriptid kataloogist /etc/rc2.d, tegelikult on need lingid /etc/init.d kataloogi skriptidele
 # find /etc/rc2.d -type l | sort
 /etc/rc2.d/S10rsyslog
 /etc/rc2.d/S12acpid
 /etc/rc2.d/S16ssh
 /etc/rc2.d/S20exim4
 /etc/rc2.d/S20nfs-common
 /etc/rc2.d/S20openbsd-inetd
 /etc/rc2.d/S20rsync
 /etc/rc2.d/S20smartmontools
 /etc/rc2.d/S20sysstat
 /etc/rc2.d/S20xend
 /etc/rc2.d/S23ntp
 /etc/rc2.d/S25mdadm
 /etc/rc2.d/S89atd
 /etc/rc2.d/S89cron
 /etc/rc2.d/S99rc.local
 /etc/rc2.d/S99rmnologin
 /etc/rc2.d/S99stop-bootlogd

Operatsioonisüsteemi juurkasutaja ununenud parooli ülekirjutamine

Alglaadimisel toimuvate sündmuste juhtimisest on abi juhtumil, kui süsteemi juurkasutaja parool on ununenud. Siis tuleb kasutada alglaadimisel tuuma parameetrina lisaks 'init=/bin/bash', nt selliselt

 kernel /vmlinuz-2.6.26-1-686 root=/dev/hda3 ro init=/bin/bash

Kuna GRUB seadistusfaili /boot/grub/menu.lst ei saa tõenäoliselt tavapärasel viisil muuta, tuleb tegutseda nt selliselt

  • GRUB'i menüüst valige muidu töötanud sissekande juures edit, 'e'
  • lisage tuuma reale init=/bin/bash, kokku võiks olla midagi sellist
 kernel /vmlinuz-2.6.26-1-686 root=/dev/hda3 ro init=/bin/bash

Peale juurkasutaja prompti jõudmist ühendage juurfailisüsteem külge kirjutatavana

 # mount -o rw,remount /

Seejärel tuleks ühendada vajadusel külge muud failisüsteemid, nt /usr, et saaks passwd programmi kasutada

 # mount /usr

Muutke parool öeldes

 # passwd

kirjutage puhvrid kettale

 # sync

ühendage külgeühendatud failisüsteemid lahti, ühendage juurfailisüsteem külge ainult lugemiseks ning öelge sync

 # umount /usr
 # mount -o ro,remount /
 # sync

Ning lõpuks alglaadige süsteem uuesti

 # reboot

Tulemusena saab edaspidi süsteemi juurkasutajana sisse logida kasutades uut parooli.

Root-over-NFS Debian Lenniga

Debian v. 5.0 alglaadimiseks juhul, kui juurfailisüsteem tuleb üle võrgu NFS serverilt tuleb teha võrreldes nt varasemate Debiani versioonidega mõned täiendavad sammud

  • Tuleb hoolitseda, et selles arvutis, kus valimistatakse root-over-nfs arvuti juurfailisüsteemi ette ei oleks udev seadistusfailis /etc/udev/rules.d/70-persistent-net.rules sobimatuid sissekandeid (nt võib see fail olla tühi, kuid tuleb arvestada, et pärast juurfailisüsteemi ettevalmistamist oleks taastatud endine seis).
  • Tuleb hoolitseda, et ramdisk kasutaks nfs serverit. Selleks tuleb selles arvutis, kus valmistatakse root-over-nfs arvuti juurfailisüsteemi ette kasutada failis /etc/initramfs-tools/initramfs.conf rida
 BOOT=nfs

ning ehitada uus ramdisk öeldes nt

 # update-initramfs -k 2.6.26-1-686 -c

Ning seejärel jällegi taastada endine initramfs.conf seis.

Muus osas sobib järgida palas http://kuutorvaja.eenet.ee/wiki/NFS-Root_arvuti_tekitamine toodud nõuandeid.

Juurfailisüsteemi liigutamine fdisk partitsioonilt LVM voluumile

Kui installeeritud süsteemis on algselt kasutatud ainult nn fdisk partitsioone, sh juurfailisüsteemi jaoks, siis selleks, et viia juurfailisüsteem üle LVM voluumile tuleb lisada initramfs'ile juurde LVM tugi. Selline spetsiifiline tegevus on vajalik seetõttu, et vastasel korral initramfs ei oska alglaadimisel ühendada külge LVMilt juurfailisüsteemi. Tuleks sooritada nt selline järgnevus

  • Lisada süsteemi pakett lvm2 ja moodustada juurfailisüsteem LVM voluumile, nt süsteemi mõnele vabale fdisk partitsioonile LVM moodustamise ja sinna juurfailisüsteemi kopeerimise teel, nt /dev/system/system ehk /dev/mapper/system-system
  • Lisada faili /etc/initramfs-tools/modules rida (kuigi seda vist ei olegi tarvis)
 dm_mod

ja ehitada vanal moel töötavas süsteemis uus initramfs

 # update-initramfs -c -k 2.6.26-2-amd64 -b /tmp
 update-initramfs: Generating /tmp/initrd.img-2.6.26-2-amd64
 # mv /tmp/initrd.img-2.6.26-2-amd64 /boot/initrd.img-2.6.26-2-amd64-lvm

Tulemusena lisatakse initramfs'ile juurde LVM jaoks vajalik moodul sd_mod ning lvm ja vgchange utiliidid.

  • Näidata LVM peal olevas juurfailisüsteemis /etc/fstab failis juurfailisüsteemi nimi korrektselt, nt
 /dev/mapper/system-system
  • Lisada grubi juurfailisüsteemi nimi kasutades tingimata kuju /dev/mapper/nimi, nt
 title           Debian GNU/Linux LVM
 root            (hd0,0)
 kernel          /vmlinuz-2.6.26-2-amd64 root=/dev/mapper/system-system ro
 initrd          /initrd.img-2.6.26-2-amd64-lvm

kexec

kexec (kernel execution) http://en.wikipedia.org/wiki/Kexec võimaldab alglaadida juba töötava operatsioonisüsteemi uue tuumaga. Sellisel võimalusel on mitmeid rakendusi

  • arvuti alglaadimine on oluliselt kiirem (riistvara st bios testid ja alglaaduri (ingl. k. bootloader) kasutamine jäävad ära)
  • esialgu töötanud operatsioonisüsteemi saab kasutada teatud mõttes alglaadijana
  • alglaadida arvuti peale süsteemi crashi spetsiaalselt ettevalmistatud tuumaga ja säilitades mälu sisu, et uurida veasituatsiooni

kexec tarkvara sisaldab kahte komponenti

  • kexec-võimeline tuum
  • kexec-tools, utiliidid kexec funtsionaalsuse kasutamiseks

Tarkvara paigaldamiseks sobib öelda

 # apt-get install kexec-tools

kexec kasutamist kontrollib seadistusfail /etc/default/kexec, mis nt võiks olla sellise sisuga

 LOAD_KEXEC=true
 
 # Kernel and initrd image
 KERNEL_IMAGE="/boot/vmlinuz-2.6.26-2-amd64"
 INITRD="/boot/initrd.img-2.6.26-2-amd64"
 
 # If empty, use current /proc/cmdline
 APPEND=""

kus

  • LOAD_KEXEC - kexec kasutamise sisselülitamine
  • KERNEL_IMAGE - tuum
  • INITRD - initramfs
  • APPEND - tuuma parameetrid

kexec kasutamine toimub nö tavaliseks kasutamiseks automaatselt, peale kexec sisselülitamist öeldes

 # shutdown -r now

arvuti ei initsialiseeri riistvara ja lae alglaadijat vaid laaditakse ainult tuum. Kõigi süsteemis töötanud protsesside töö siiski lõpetatakse ning nad käivitatakse nii nagu arvuti alglaadimisel uuesti.

/sbin/kexec programmi enda kasutamine võiks toimuda nt selliselt

# kexec -l /tmp/tuum --append=root=/dev/sda1 --initrd=/tmp/irfs
# kexec -e

TODO

  • hibernate and resume
  • süsteemi töö lõpetamine

Kasulikud lisamaterjalid