Asennus: konsolit
- Virtuaalikonsolia käytettäessä voi asennuslokia seurata reaaliajassa neljännessä konsoli-ikkunassa (Alt-F4 tai Ctrl-Alt-F4, graafisen virtuaalikonsolin kanssa Send key/Ctrl+Alt+F4) tai tutkia taaksepäin toisessa ja kolmannessa (Alt-F2, Alt-F3), esim.
- more /var/log/syslog.log
Asennus: konsolit
- Sarjaporttikonsolin kanssa käytettävissä ei ole useampia konsoli-ikkunoita, mutta asennusvalikossa on “Execute a shell”, johon joskus pääsee...
- Lokissa on yleensä aina virheeltä näyttäviä viestejä jotka eivät oikeasti ole vakavia; kannattaa tutkia onnistuneidenkin asennusten lokeja
Asennus: konsolit
- Konsoleita voi olla useita, erityisesti sekä sarjaporttikonsoli että (virtuaalinen) graafinen konsoli; --extra-args -optiolla (tai -x) annetuista console= -asetuksista viimeinen on ensisijainen (/dev/console); esim.
- -x 'console=tty0 console=/dev/ttyS0,115200n8 serial'
- -x (--extra-args) ei toimi --cdrom -option kanssa, mutta roottina voi tehdä --location /jotain/ubuntux.iso -x ...
Asennus: konsolit
- Jos virt-install -komennolle määrittelee sarjaporttikonsolin mutta ei '--graphics none', konsoliviestit saattavat kuitenkin mennä graafiseen virtuaalikonsoliin; jos X-yhteyttä ei ole, siihen voi ottaa yhteyden virt-viewer -komennolla toisesta ikkunasta; joskus taas voi olla tarpeen avata uusi sarjaporttikonsoli komennolla virsh console kone
Asennus: konsolit
- Toisen konsolin voi lisätä myös jälkikäteen (virsh edit...) ja se on yleensä parempi ratkaisu, asennus kahden konsolin kanssa käyttäytyy joskus oudosti. Sarjaporttikonsoli on helpompi lisätä jälkeenpäin kuin graafinen.
Asennus: konsolit
- Sarjaporttikonsolin määritys xml:ssä:
- <serial type='pty'>
- <target type='serial' port='0'>
- </serial>
- <console type='pty'>
- <target type='serial' port='0'>
- </console>
Asennus: konsolit
- Ubuntu 16.4:ssä (ainakin) sarjaporttikonsoli tulee xml:ään aina, se vain pitää aktivoida VM:ssä:
- Em. säädöt saattaa joutua tekemään (ssh-yhteyden yli) vaikka asennusvaiheessa olisi jo käytetty sarjakonsolia
Asennus: konsolit
- Grub sarjaporttikonsolin kanssa: /etc/default/grub
- GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"
- GRUB_TERMINAL=serial
- GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no –stop=1"
- Kaikki “HIDDEN_TIMEOUT” -rivit kannattaa myös kommentoida pois ja GRUB_TIMEOUT -aikaa ehkä pidentää
- Editoinnin jälkeen update-grub
Asennus: konsolit
- Graafisen konsolin määritys xml:ssä (pci slot-osoitteita voi joutua vaihtamaan):
- <channel type='spicevmc'>
- <target type='virtio' name='com.redhat.spice.0' state='disconnected'/>
- <alias name='channel0'/>
- <address type='virtio-serial' controller='0' bus='0' port='1'/>
- </channel>
- <input type='mouse' bus='ps2'/>
- <input type='keyboard' bus='ps2'/>
- <graphics type='spice' port='5905' autoport='yes' listen='127.0.0.1'>
- <listen type='address' address='127.0.0.1'/>
- <image compression='off'/>
- </graphics>
Asennus: konsolit
- <video>
- <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1'/>
- <alias name='video0'/>
- <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
- </video>
- <redirdev bus='usb' type='spicevmc'>
- <alias name='redir0'/>
- </redirdev>
- <redirdev bus='usb' type='spicevmc'>
- <alias name='redir1'/>
- </redirdev>
Asennus: konsolit
- Sarjaporttikonsoliin voi kytkeytyä uudesta ikkunasta:
- tai etänä alustakoneeseen host lisäämällä optio
- --connect qemu+ssh://host/system
Asennusongelmia: lokit
- Asennuksen keskeytyessä outoon virheeseen:
- grep -i error /var/log/syslog |more
- grep -i “no space” /var/log/syslog
- grep -i failed /var/log/syslog
- dmesg | more
Asennusongelmia: lokit
- Kannattaa etsiä lisätietoa grepillä löydetyn virheen ympäriltä; jos (vanhan) busyboxin grep ei tunne -A ja -B optioita eikä sen more /-hakua, usein joutuu greppaamaan aikaleimaa tms
Asennusongelmia: levytila
- Levytilan täyttyminen voi aiheuttaa hyvin monenlaisia virheitä ja aiheutua satunnaisista tekijöistä (käytetty repository, vaihtelu verkon nopeudessa, jopa koneen nimi – pitempi nimi tuottaa enemmän tekstiä lokiin!)
Asennusongelmia: levytila
- Asennuksen keskeytyessä täyttynyt levy ei ehkä enää olekaan täynnä (erityisesti /var), virheilmoitusta kannattaa etsiä lokista
- Jos jokin levyosio täyttyy, asennus on yleensä aloitettava alusta tai ainakin levyosioinnista; joskus loogisen volumen laajennus “lennosta” riittää
Asennusongelmia: RAM
- Keskusmuistin loppuminen kesken asennuksen saattaa aiheuttaa outoja virheitä.
- Jos muistia ei voi lisätä, joskus auttaa kun asentaa vähemmän paketteja (ja toivoo niiden asentamisen onnistuvan myöhemmin).
- Graafinen konsoli syö enemmän muistia kuin sarjaportti (--graphics none säästää hieman).
Disaster recovery: /usr lost
- Rikotaan /usr (oletetaan ettei se ole oma tiedostojärjestelmänsä):
- sudo mv /usr /oldusr
- # sudo ei enää toimi!
Disaster recovery: /usr lost
- Pelastus jos on sudo alustakoneessa:
- virsh destroy tt1 # shutdown ei toimine
- losetup -f # palauttaa (esim.) /dev/loop1
- losetup /dev/loop1 ~tt/tt1.img
Disaster recovery: /usr lost
- kpartx -a /dev/loop1
- mkdir -p /mnt/tmp
- mount /dev/mapper/loop1p1 /mnt/tmp
- mv /mnt/tmp/oldusr /mnt/tmp/usr
Disaster recovery: /usr lost
- umount /mnt/tmp
- kpartx -d /dev/loop1
- losetup -d /dev/loop1
- virsh start tt1
/usr lost, ratkaisu 2
- Ei roottia alustakoneessa, käytetään toista virtuaalikonetta apuna:
- virsh destroy tt1
- virsh attach-disk tt2 ~/tt1.img vdb
- --driver qemu --subdriver qcow2 # jos qcow2
/usr lost, ratkaisu 2
- tt2:ssa (tarvittaessa ensin reboot, jolloin myös --persistent yllä):
- mkdir -p /mnt/tmp
- fsck /dev/vbd1
- mount /dev/vdb1 /mnt/tmp
- mv /mnt/tmp/oldusr /mnt/tmp/usr
- umount /mnt/tmp
/usr lost, ratkaisu 2
- Lopuksi taas alustakoneessa:
- virsh detach-disk tt2 vdb
- virsh start tt1
/usr lost, ratkaisu 3
- Käynnistetään virtuaalikone recovery-tilaan:
- virsh destroy tt1
- virt-viewer --wait tt1 &
- virsh start tt1
- nopeasti grub-menu kiinni, recovery mode
/usr lost, ratkaisu 3
- recovery-boot valikosta ”root shell prompt”
- mv /oldusr /usr; exit
- resume normal boot
- Edellyttää graafista konsolia ja nopeaa yhteyttä ja nopeita refleksejä, ellei grubia ole säädetty hitaammalle
/usr lost, ratkaisu 3b
- Recovery-tila sarjaporttikonsolilla, grub on määritetty käyttämään sarjaporttia (/etc/default/grub):
- eri ikkunoissa nopeasti peräkkäin:
- virsh start tt1 virsh console tt1
- konsoli-ikkunassa recovery boot kuten edellä &c
/usr lost, ratkaisu 4
- Bootataan virtuaalikone CD-imagelta (tai oikealta CD:ltä) root-oikeuksin alustakoneessa:
- virsh destroy tt1
- sudo kvm -name tt1 -m 256 -hda ~tt/tt1.img -cdrom /srv/ftp/iso/ubuntu...iso -boot d
- valitaan ”rescue broken system”…
/usr lost, ratkaisu 4
- CD-imagen pitää tässä olla sopiva - erityisesti jos VM:ssä ei ole graafista konsolia, normaalit asennus-CD:t eivät toimi.
- Huom. kvm-komennon optiot erilaisia kuin virt-install jne (ks. man qemu-system)
/usr lost, ratkaisu 5
- Bootataan CD-imagelta ilman root-oikeuksia alustakoneessa:
- virsh destroy tt1
- virsh dumpxml tt1 >tt1.xml
/usr lost, ratkaisu 5
- virsh edit tt1
- lisätään cd-rom (image):
- <disk type='file' device='cdrom'>
- <driver name='qemu' type='raw'>
- <target dev='hda' bus='ide'>
- <readonly>
- </disk>
/usr lost, ratkaisu 5
- vaihdetaan boottilaitteeksi cd:
- <os>
- ...
- <boot dev='cdrom'/>
- </os>
/usr lost, ratkaisu 5
- virsh start tt1 # rescue broken system...
- virsh shutdown tt1
- virsh undefine tt1
- virsh define tt1.xml
dd - copy & convert
- kopioi dataa ”raakana” tiedostorajoista välittämättä
- poikkeuksellinen syntaksi:
- dd keyword=value [keyword=value...]
- yleisimmät optiot:
- if=syöttötiedosto
- of=tulostiedosto
dd - copy & convert
- bs=lohkokoko (tavuja); myös ibs=... ja obs=...
- count=lohkomäärä (syötteestä)
- skip=ohitettava lohkomäärä syötteestä
- seek=ohitettava lohkomäärä tulostiedostossa
- oflags=... (joukko kopiointiin vaikuttavia asetuksia)
- conv=... (joukko harvoin tarvittavia konversio-optioita, big-endian vs. little-endian jne)
Esimerkki: monen partition muutos
- Levyllä kolme partitiota, root, swap ja /home. Suurennettava root-partitiota, levyä jo suurennettu ts. levyn lopussa on riittävästi tyhjää.
- poistetaan swap ja /home käytöstä (swapoff, umount)
- muutetaan partitiotaulua (fdisk tai parted)
- siirretään /home'n sisältö uuteen paikkaan dd:llä (useana palana jos osittain päällekkäin vanhan kanssa!), bootataan
Esimerkki: monen partition muutos
- suurennetaan root-tiedostojärjestelmä (fsck, resize2fs)
- alustetaan swap-osio uusiksi (mkswap)
- päivitetään boot loader (update-grub)
- päivitetään initramfs (update-initramfs -u)
- Hidasta, vaikeaa ja virhealtista
cron: /etc/crontab
- #m h dom mon dow user command
- joka päivä kello 03:17:
- 17 3 * * * root /root/komento
- joka sunnuntai kello 7:15 ja 17:15:
- 15 7,17 * * 0 root /root/komento
cron: /etc/crontab
- joka kolmas tasatunti:
- 0 */3 * * * root /root/komento
- 15 yli parillisten tuntien 8-16 arkisin:
- 15 8-16/2 * * 1-5 root /root/komento
- joka sunnuntai ja aina kuukauden 15. päivä kello 10:00:
- 0 10 15 * 7 root /root/komento
/etc/cron.*, crontab
- /etc/cron.d: syntaksi kuten /etc/crontab
- käyttäjän crontab: muuten sama mutta käyttäjäkenttä puuttuu, sijainti vapaa, konventionaalinen $HOME/.crontab
- asetetaan komennolla crontab file
/etc/cron.*, crontab
- voidaan rajoittaa keille crontab sallittu:
- /etc/cron.{allow,deny}
- /etc/cron.{hourly,daily,weekly,monthly}
- suoritettavat komennot (skriptit) sellaisinaan
at, batch
- echo komento | at aika
- at -f file aika
- aika voidaan antaa monella tavalla, esim. ”08:15”, ”midnight”, ”noon tomorrow”, ”now + 3 weeks”...
- atq, atrm
- /etc/at.{allow,deny}
- echo komento | batch