Kirjoittaja Aihe: BTRFS-tiedostojärjestelmän päivitys  (Luettu 634 kertaa)

petteriIII

  • Käyttäjä
  • Viestejä: 596
    • Profiili
BTRFS-tiedostojärjestelmän päivitys
« : 19.12.14 - klo:06.12 »
Päivittämiseen kannattaa tehdä skripti, sillä päivityksessä on monia vaiheita: esimerkiksi kerneleitä kertyy paljon ja ne vievät turhaan kovalevytilaa, noin 100M kerneliä kohden ja varsinkin kehitysversioilla kerneleitä saattaa kertyä niin monia että kone tukehtuu. Päivittämiseen kuuluu turhien kernelien poistamisen lisäksi myös boottaukseen osallistumattomien osioiden tarkistusta ja päivityskelpoisuudesta huolehtimista.

Tämän foorumin sivulla: http://forum.ubuntu-fi.org/index.php?topic=47495.0 esitetty päivitys-skripti ei sovellu käytettäväksi kun tiedostojärjestelmänä on BTRFS ja ainakin toistaiseksi BTRFS kannattaa päivittää omalla skriptillään. Koska BTRFS muuttuu vielä ei täydellistä päivitys-skriptiä kannata tehdä; osioiden tarkistus ja päivityskelpoisuudesta huolehtiminen jäävät toistaiseksi pois. Tällainen on raakile-päivitys-skripti:

Koodia: [Valitse]
#!/bin/bash     
# paivita 18.12.2014 petteriIII

function unmountmnt { # if grep -qs '/mnt/@ /foo' /proc/mounts; then
cd / # umount ei onnistu, jos joku umountattavan kansio on valittuna
sudo echo ""
for mountattu in $(sudo mount | grep /mnt/@  | awk '{print $3}')
do
  if grep -qs $mountattu /proc/mounts; then sudo umount -l $mountattu; fi
done 
echo '/mnt/@ :n mountit on poistettu'
}

function Levy { echo -n $(ls -l /dev/disk/by-id | grep -m 1 '/'${Chrootosio##*/} | awk '{print $9}' | sed "s/-part*//g");}

function paivitaKaikkiOsiot () { # itseensä chroottaus onnistuu ihan kivasti joten tällätavoin voi ihan hyvin päivittää itsensä
# unmountmnt
for Chrootosio in $(sudo blkid | grep btrfs | awk '{print $1}' | sed 's/\://g'); do

  osiontyyppi=$(sudo blkid -o value -s TYPE $Chrootosio)
  sudo mount -t $osiontyyppi $Chrootosio /mnt
  [[ -d /mnt/@ ]] && {
 sudo mount -t sysfs none /mnt/@/sys && sudo mount -t proc none /mnt/@/proc && sudo mount --bind /dev/ /mnt/@/dev &&  sudo mount --bind /dev/pts /mnt/@/dev/pts && sudo mount -o bind /etc/resolv.conf /mnt/@/etc/resolv.conf && sudo mount -o bind /dev/shm /mnt/@/dev/shm

# poistetaan turhat imaget # ei vielä valmis
  for n in $(ls /mnt/@/boot | grep config | grep -v $(ls /mnt/@/boot | grep config | sort | tail -1) | sed 's/config-//g'); do
    echo 'poistan: linux-image-'$n; sudo chroot /mnt/@ apt-get --yes --force-yes purge 'linux-image-'$n # purge -> remove auto-remove
    echo 'poistan: linux-image-extra-'$n; sudo chroot /mnt/@ apt-get --yes --force-yes purge 'linux-image-extra-'$n # muistutuksena siitä mitä tapahtuu.
    echo 'poistan: linux-headers-'$n; sudo chroot /mnt/@ apt-get --yes --force-yes purge 'linux-headers-'$n
  done # Mikäli et halua poistaa imageja kommentoi koodia

  echo; echo -n '********** päivitetään: '$Chrootosio '   levyllä: '; Levy; echo '     tiedostomuoto: '$osiontyyppi; echo
  sudo chroot /mnt/@  apt-get update
  sudo chroot /mnt/@  apt-get -y dist-upgrade
                     }
unmountmnt
done
}

# Pääohjelma
echo ''; sudo echo
hommaalkoi="$(date +%s)"
paivitaKaikkiOsiot
echo -e 'päivitetty: '$(date +"%d-%m-%y %k:%M")'\t ja päivittäminen kesti: '$(date -d@$(echo $(date +%s)-$hommaalkoi-7200 | bc) | awk '{print $3}')

- muuten päivitys toimii myös EFI:llä silloinkin kun on bootattu live-versiolla tai toiselta levyltä. Luullakseni tämä ei ole bugi, ja jos chroot kielletäisiin niin minä menisinkin barrikaadeille.
- myöskään gpt-osiointi hyväksytään.
- live-versiolla bootattaessa pitää avata verkkoyhteys.
« Viimeksi muokattu: 20.12.14 - klo:15.00 kirjoittanut petteriIII »