Petri Asikainen
Blog entry by Petri Asikainen
Kun päivitin xen-palvelimen alustan (dom0) yksi virtuallikoneista (opensuse 11.4) ei enää käynnistynyt. Kaatuessaan se aiheutti dom0 tasolla virheen lohkolaitteden käsittelyssä. Ko kone oli jäänyt päivittämättä ennen päivitystä jotan kyseessä oli jokinlainen yhteensopivuus ongelma xen-versioden kanssa.
Korjatakseni ongelman: Ensiksi päivitin käynnistymättöman koneen
dom0: losetup /dev/loop60 /var/lib/xen/images/ongelmakone/disk0
dom0: kpartx -a /dev/loop60
dom0: mount /dev/mapper/loop60p2 /mnt/ongelma
dom0: cd /mnt/ongelma
dom0: chroot .
dom0: zypper up
Tähän saakka kaikki sujui hyvin, sain kaikki päivityksen koneeseen. mutta johtuen puttuvista /dev /proc rekaenteista ei initrd luominen onnistunut. Joten lopputuloksena oli kone ilman inird-levykuvia. :(
Sitten koitin kopioida vastaavasta virtuaalikoneesta inird-tiedoston, mutta sillä kone ei käynnistynyt koska koneiden osioinnit eivät olleet samanlaisia. Eli inird piti korjata käsin
.
dom0: cp toisenkoneen-initrd /tmp/sourceinitrd.gz
dom0: gunzip /tmp/sourceinitrd.gz
dom0: mkdir /tmp/rd
dom0: cd /tmp/rd
dom0: cpio -id < /tmp/sourceinird
#Nyt initrd oli purettuna tähän kansioon. Sitten etsin vittaukset levyihin:
dom0: grep -R xvd *
Ja editoin löytyneet tiedostot vastaamaan ongelmakonetta. Tämän jälkeen inirdn:n uudeen paketointi ja pakkaus
dom0: cd /tmp/rd
dom0: find . | cpio --create --format='newc' > /tmp/uusiinitrd
dom0: gzip /tmp/uusiinitrd
Tämän jälkeen tarvitsi vain kopioida /tmp/uusiinitrd /boot - kansioon oikealle nimelle ja poistaa lisätyt partitiot ja loop-laite.
dom0: exit #exit chroot
dom0: cd /mnt
dom0: umount /mnt/ongelma
dom0: kpartx -d /dev/loop60
dom0: losetup -d /dev/loop60
Tälläisen operaation jälkeenongelmallinen virtuallikone käynnistyi kivuitta.