Multiboot OpenBSD süsteemi uuendamine

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Multiboot OpenBSD süsteem tähendab seda, et ühte arvutisse on paigaldatud mitu üksteisest sõltumatut OpenBSD operatsioonisüsteemi eksemplari, nt erinevatele kõvaketastele või sama kõvaketta erinevatele nn OpenBSD partitsioonidele (mitte erinevatele fdisk partitsioonidele).

Eesmärk

OpenBSD operatsioonisüsteemi saab uuendada mitmel viisil, käesolevat varianti iseloomustavad sellised asjaolud

  • uue süsteemi ettevalmistamiseks ei kasutata installerit, selle asemel pakitakse vajalikud file set arhiivid lahti ning kohendatakse olulisi seadistusfaile
  • uuendamise protseduuri saab läbi viia suhteliselt väikese katkestusega süsteemi töös
  • uuendatud süsteemi eksemplarilt saab hõlpsasti pöörduda tagasi viimati töötanud eksmplarile reboodiga

Kirjeldatud uuendamise käigus võib muuta ka arhitektuuri, nt i386 -> amd64. Sisuliselt tekitatakse mitme OpenBSD eksemplariga multiboot arvuti, mida saab hõlpsasti vajadusel bootida töötanud olekusse tagasi kui uuendatud süsteem vajab veel kohendamist. Arvuti konsoolile (serial konsoolile) on vajalik ligi pääseda.

Protseduur koosneb järgmistest sammudest

  1. Arvuti töötab ja on kasutada üks failisüsteem, mis on piisavalt suur ja mis pole parasjagu kasutusega koormatud (nt /tmp) ning mis tuleb ühendada lahti ning külge /mnt kataloogi ilma mount option'iteta
  2. Pakkida /mnt kataloogi lahti olulised failide komplektid (etc50.tgz, base50.tgz jt) ning tuum (bsd)
  3. Moodustada uuele süsteemile seadmefailid öeldes /mnt/dev all './MAKEDEV all'
  4. vaadata diff -r /etc /mnt/etc abil üle erinevused (tõenäoliselt mõniteist nö tundud konfifaili, fstab, motd, hosts, hostname.if jne)
  5. rebootida süsteem ning kosoolil boot> prompt'ist bootida uue tuumaga uus süsteem

Kui OpenBSD töötab tulemüürina, siis lisaks kaasneb eelis, et arvutis jääb füüsiliste võrguseadmete, MAC ja ip aadresside vastavas samaks erinevate keskkondade vahel liikumisel, erinevalt kahe erineva füüsilise arvuti kasutamisest.

Ettevalmistused

Lähtepunktiks on töötav OpenBSD arvuti, näiteks selliste partitsioonidega

 # df -h
 Filesystem     Size    Used   Avail Capacity  Mounted on
 /dev/sd0a      367M   43.7M    305M    13%    /
 /dev/sd0d      982M    2.0K    933M     0%    /tmp
 /dev/sd0e      490M    149M    317M    32%    /home
 /dev/sd0f     12.2G    2.5G    9.1G    22%    /usr
 /dev/sd0g     51.8G    504M   48.7G     1%    /var

Kopeeriga kataloogi /root/install-50 vajalikud failide komplektid (ingl. k. file sets, binary distribution sets) ja tuum, näiteks failid

 base51.tgz
 bsd
 comp51.tgz
 etc51.tgz
 game51.tgz
 man51.tgz

.iso tõmmise monteerimiseks sobib öelda

# vnconfig vnd0 install51.iso
# mount -t cd9660 /dev/vnd0c /mnt/cd0

ja lähti monteerimiseks

# umount /mnt/cd0
# vnconfig -u vnd0

Uue keskkonna moodustamine

Ühendage /tmp failisüsteem lahti, ühendage /mnt alla külge ning pakkida kataloogi /mnt arhiivid lahti sellises järjekorras (sama järjekorda kasutatakse ka süsteemi traditsioonilisel viisil paigaldades)

 # cp bsd /mnt
 # cp bsd.rd /mnt
 # tar -C /mnt -xzphf base51.tgz
 # tar -C /mnt -xzphf etc51.tgz
 # tar -C /mnt -xzphf comp51.tgz
 # tar -C /mnt -xzphf man51.tgz
 # tar -C /mnt -xzphf game51.tgz

/etc/fstab failist tuleks seejärel /tmp välja kommenteerida, samas peab veenduma, et allesjäänud /tmp kataloogi loabitid on endised, vajadusel kohendada

 # chmod 1777 /tmp

ning et juurfailisüsteemis on mõistlikul hulgal vaba ruumi.

Seejärel tekitada seadmefailid

# cd /mnt/dev
# ./MAKEDEV all

Kohendada /mnt/etc kataloogis olulisi faile, tõenäoliselt tuleb tähelepanu pöörata järgmistele failidele

/etc/hosts
/etc/hostname.*
/etc/mygate
/etc/myname
/etc/resolv.conf
/etc/group
/etc/ipsec.conf
/etc/master.passwd
/etc/rc.conf.local
/etc/rc.local
/etc/pf.*
/etc/ntpd.conf
/etc/ssh/*
/etc/sudoers
/etc/sysctl.conf
/etc/fstab
/etc/joe/joerc
/etc/pwd.db
/etc/spwd.db
/etc/rndc.key
/etc/localtime
/etc/isakmpd/*
/etc/ttys

kusjuures nt pwd.db ja master.passwd faili erinevate versioonide vahel liikudes ei pruugi saada otse kasutusele võtta.

Abiks on võrrelda keskkondi selliselt

 # diff -r /etc /mnt/etc | less

Kui on soov lisada pakettidest või portsudest tarkvara, siis võiks seda teha liikudes chroot abil uude keskkonda

 # chroot /mnt

ning toimetada edasi tavapärasel viisil, nt öeldes

 # pkg_add pftop

Seejuures peab aga uus keskkond olema sama arhitektuuriga.

Uue keskkonna bootimine

Uue keskkonna bootimiseks peab olema ligipääs konsoolile, vanas keskkonnas öelda reboot ning konsoolil boot promptis öelda

 boot> boot hd0d:/bsd -a

Seejärel küsitakse peale tuuma laadimist juurfailisüsteemi ning swap'i asukohta, vaikimisi pakutakse sobivaid väärtusi.

Vana keskkonna asendamine uuega

Kui uus keskkond rahuldab, siis võiks vana keskkonna failisüsteemid puhtaks teha ning kopeerida sinna uue keskkonna failid laiali ning bootida tagasi.

Uuele keskkonnale on tõenäoliselt tarkvara paiku lihtsam rakendada kui keskkond on booditud ja selle seest edasi toimetada.

Probleemid

Kui chroot'i tehes saab teate

 # chroot /mnt/                                                                                                                                                                                             
 /bin/ksh: No controlling tty (open /dev/tty: Device not configured)
 /bin/ksh: warning: won't have full job control

siis see tähendab tõenäoliselt seda, et /mnt on ühendatud külge ebasobivas rezhiimis (nodev), vaatake mount käsuga järele. Kõige parem oleks kui uues keskkond on ettevalmistamise ajal ühendatud külge ilma mount optioneid kasutamata.

Kui liikuda teisele arhitektuurile, siis tuleb bootida uue arhitektuuri cd43.iso pealt ja tema boot promptist edasi liikuda.

Kui bash või wget paigaldamisel saab teate

 # pkg_add bash 
 Can't install gettext-0.14.6p0: lib not found expat.8.0
 Dependencies for gettext-0.14.6p0 resolve to: libiconv-1.9.2p3
 Full dependency tree is libiconv-1.9.2p3
 Can't install bash-3.2.17: can't resolve gettext-0.14.6p0

siis tuleb paigalda xbase42.tgz fail set esmalt, OpenBSD 4.3 puhul sellist vajadust enam pole.

Kui peale crashi püüda failisüsteemi ühendada, siis võib arvuti öelda

 # mount /dev/sd0a /mnt/sd0a                                                                                                            
 mount_ffs: /dev/sd0a on /mnt/sd0a: filesystem must be mounted read-only; you may need to run fsck

Ja nii nagu ta teatab tuleks siis kasutada fsck utiliiti

 # fsck /dev/sd0a                                                                                                           
 ** /dev/rsd0a
 ** Last Mounted on /
 ** Phase 1 - Check Blocks and Sizes
 ** Phase 2 - Check Pathnames
 ** Phase 3 - Check Connectivity
 ** Phase 4 - Check Reference Counts
 ** Phase 5 - Check Cyl groups
 5532 files, 72329 used, 116590 free (30 frags, 14570 blocks, 0.0% fragmentation)
 MARK FILE SYSTEM CLEAN? [Fyn?] y
 ***** FILE SYSTEM WAS MODIFIED *****
 #

Bootloaderi paigaldamiseks tuleb öelda

 # /usr/mdec/installboot -v /mnt/sd0a/usr/mdec/boot /usr/mdec/biosboot sd0    
 boot: /mnt/sd0a/usr/mdec/boot
 proto: /usr/mdec/biosboot
 device: /dev/rsd0c
 /usr/mdec/biosboot: entry point 0
 proto bootblock size 512
 /mnt/sd0a/usr/mdec/boot is 3 blocks x 16384 bytes
 fs block shift 2; part offset 5888032; inode block 1451320, offset 808
 using MBR partition 3: type 166 (0xa6) offset 32 (0x20)

kus

  • /mnt/sd0a/usr/mdec/boot - fail, mille füüsiline asukoht plokkseadmel kirjutatakse MBRi
  • /usr/mdec/biosboot - fail, mis võetakse aluseks MBR muudatuse tekitamisel
  • sd0 - plokkseade, mille MBRi muudetakse

Kasulikud lisamaterjalid