Una delle situazioni più comuni che si devono affrontare quando si amministra un sistema Linux è l’aggiornamento del Kernel, ad esempio perchè è stato trovato un bug di sicurezza nella versione attuale.
Di seguito descriveremo passo passo le operazioni da eseguire per aggiornare una delle nostre VPS, sia nel caso che si utilizzi una distribuzione basata su Debian che una sui pacchetti rpm, come ad esempio Centos.
Centos
Inanzitutto recuperiamo i dati relativi al Kernel attuale:
[root@vps-0072 ~]# uname -a
Linux vps-0072.flarevm.net 2.6.18-194.3.1.el5xen #1 SMP Thu May 13 13:49:53 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
[root@vps-0072 ~]# ls /boot/
System.map-2.6.18-164.el5xen grub symvers-2.6.18-164.el5xen.gz xen-syms-2.6.18-164.el5
System.map-2.6.18-194.3.1.el5xen initrd-2.6.18-164.el5xen.img symvers-2.6.18-194.3.1.el5xen.gz xen-syms-2.6.18-194.3.1.el5
config-2.6.18-164.el5xen initrd-2.6.18-194.3.1.el5xen.img vmlinuz-2.6.18-164.el5xen xen.gz-2.6.18-164.el5
config-2.6.18-194.3.1.el5xen message vmlinuz-2.6.18-194.3.1.el5xen xen.gz-2.6.18-194.3.1.el5
Come potete vedere al momento sulla VPS in esame è installato la versione del Kernel 2.6.18-194.3.1.el5xen e la relativa immagine è contenuta in /boot
Eseguiamo un update dei pacchetti:
[root@vps-0072 ~]# yum update
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: mirrors.prometeus.net
* base: mirrors.prometeus.net
* extras: mirrors.prometeus.net
* updates: mirrors.prometeus.net
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package bzip2-libs.x86_64 0:1.0.3-6.el5_5 set to be updated
---> Package db4.x86_64 0:4.3.29-10.el5_5.2 set to be updated
---> Package device-mapper.x86_64 0:1.02.39-1.el5_5.2 set to be updated
---> Package device-mapper-event.x86_64 0:1.02.39-1.el5_5.2 set to be updated
---> Package device-mapper-multipath.x86_64 0:0.4.7-34.el5_5.6 set to be updated
---> Package e2fsprogs.x86_64 0:1.39-23.el5_5.1 set to be updated
---> Package e2fsprogs-libs.x86_64 0:1.39-23.el5_5.1 set to be updated
---> Package expat.x86_64 0:1.95.8-8.3.el5_5.3 set to be updated
---> Package glibc.x86_64 0:2.5-49.el5_5.7 set to be updated
---> Package glibc-common.x86_64 0:2.5-49.el5_5.7 set to be updated
---> Package initscripts.x86_64 0:8.45.30-3.el5.centos set to be updated
---> Package kernel-xen.x86_64 0:2.6.18-194.32.1.el5 set to be installed
---> Package kpartx.x86_64 0:0.4.7-34.el5_5.6 set to be updated
---> Package krb5-libs.x86_64 0:1.6.1-36.el5_5.6 set to be updated
---> Package libxml2.x86_64 0:2.6.26-2.1.2.8.el5_5.1 set to be updated
---> Package logrotate.x86_64 0:3.7.4-9.el5_5.2 set to be updated
---> Package lvm2.x86_64 0:2.02.56-8.el5_5.6 set to be updated
---> Package mkinitrd.x86_64 0:5.1.19.6-61.el5_5.2 set to be updated
---> Package module-init-tools.x86_64 0:3.3-0.pre3.1.60.el5_5.1 set to be updated
---> Package nash.x86_64 0:5.1.19.6-61.el5_5.2 set to be updated
---> Package nspr.x86_64 0:4.8.6-1.el5_5 set to be updated
---> Package nss.x86_64 0:3.12.8-1.el5.centos set to be updated
---> Package openldap.x86_64 0:2.3.43-12.el5_5.3 set to be updated
---> Package openssl.x86_64 0:0.9.8e-12.el5_5.7 set to be updated
---> Package pam.x86_64 0:0.99.6.2-6.el5_5.2 set to be updated
---> Package popt.x86_64 0:1.10.2.3-20.el5_5.1 set to be updated
---> Package python.x86_64 0:2.4.3-27.el5_5.3 set to be updated
---> Package rpm.x86_64 0:4.4.2.3-20.el5_5.1 set to be updated
---> Package rpm-libs.x86_64 0:4.4.2.3-20.el5_5.1 set to be updated
---> Package rpm-python.x86_64 0:4.4.2.3-20.el5_5.1 set to be updated
---> Package rsyslog.x86_64 0:3.22.1-3.el5_5.1 set to be updated
---> Package tzdata.x86_64 0:2010l-1.el5 set to be updated
---> Package udev.x86_64 0:095-14.21.el5_5.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================
Installing:
kernel-xen x86_64 2.6.18-194.32.1.el5 updates 20 M
Updating:
bzip2-libs x86_64 1.0.3-6.el5_5 updates 35 k
db4 x86_64 4.3.29-10.el5_5.2 updates 899 k
device-mapper x86_64 1.02.39-1.el5_5.2 updates 758 k
device-mapper-event x86_64 1.02.39-1.el5_5.2 updates 21 k
device-mapper-multipath x86_64 0.4.7-34.el5_5.6 updates 3.0 M
e2fsprogs x86_64 1.39-23.el5_5.1 updates 995 k
e2fsprogs-libs x86_64 1.39-23.el5_5.1 updates 118 k
expat x86_64 1.95.8-8.3.el5_5.3 updates 76 k
glibc x86_64 2.5-49.el5_5.7 updates 4.8 M
glibc-common x86_64 2.5-49.el5_5.7 updates 16 M
initscripts x86_64 8.45.30-3.el5.centos updates 1.6 M
kpartx x86_64 0.4.7-34.el5_5.6 updates 434 k
krb5-libs x86_64 1.6.1-36.el5_5.6 updates 675 k
libxml2 x86_64 2.6.26-2.1.2.8.el5_5.1 updates 807 k
logrotate x86_64 3.7.4-9.el5_5.2 updates 41 k
lvm2 x86_64 2.02.56-8.el5_5.6 updates 2.7 M
mkinitrd x86_64 5.1.19.6-61.el5_5.2 updates 454 k
module-init-tools x86_64 3.3-0.pre3.1.60.el5_5.1 updates 443 k
nash x86_64 5.1.19.6-61.el5_5.2 updates 1.1 M
nspr x86_64 4.8.6-1.el5_5 updates 119 k
nss x86_64 3.12.8-1.el5.centos updates 1.1 M
openldap x86_64 2.3.43-12.el5_5.3 updates 303 k
openssl x86_64 0.9.8e-12.el5_5.7 updates 1.4 M
pam x86_64 0.99.6.2-6.el5_5.2 updates 978 k
popt x86_64 1.10.2.3-20.el5_5.1 updates 77 k
python x86_64 2.4.3-27.el5_5.3 updates 6.0 M
rpm x86_64 4.4.2.3-20.el5_5.1 updates 1.2 M
rpm-libs x86_64 4.4.2.3-20.el5_5.1 updates 923 k
rpm-python x86_64 4.4.2.3-20.el5_5.1 updates 63 k
rsyslog x86_64 3.22.1-3.el5_5.1 updates 380 k
tzdata x86_64 2010l-1.el5 updates 796 k
udev x86_64 095-14.21.el5_5.1 updates 2.4 M
Transaction Summary
=======================================================================================================================================
Install 1 Package(s)
Upgrade 32 Package(s)
Total download size: 71 M
Is this ok [y/N]:
Come possiamo vedere è disponibile una nuova versione del Kernel: 2.6.18-194.32.1.el5
Permiamo y e procediamo con l’aggiornamento.
Una volta terminato ricontrolliamo il contenuto della cartella /boot:
[root@vps-0072 ~]# ls /boot/
System.map-2.6.18-164.el5xen grub symvers-2.6.18-194.3.1.el5xen.gz xen-syms-2.6.18-194.3.1.el5
System.map-2.6.18-194.3.1.el5xen initrd-2.6.18-164.el5xen.img symvers-2.6.18-194.32.1.el5xen.gz xen-syms-2.6.18-194.32.1.el5
System.map-2.6.18-194.32.1.el5xen initrd-2.6.18-194.3.1.el5xen.img vmlinuz-2.6.18-164.el5xen xen.gz-2.6.18-164.el5
config-2.6.18-164.el5xen initrd-2.6.18-194.32.1.el5xen.img vmlinuz-2.6.18-194.3.1.el5xen xen.gz-2.6.18-194.3.1.el5
config-2.6.18-194.3.1.el5xen message vmlinuz-2.6.18-194.32.1.el5xen xen.gz-2.6.18-194.32.1.el5
config-2.6.18-194.32.1.el5xen symvers-2.6.18-164.el5xen.gz xen-syms-2.6.18-164.el5
Come potete notare, al suo interno sono stati installati i file relative al nuovo Kernel.
Ora l’ultimo passo: aggiorniamo il boot loader.
nano /boot/grub/menu.lst
Il contenuto dovrebbe essere simile al seguente:
default=0
timeout=5
title xen-domU
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.3.1.el5xen ro root=/dev/xvda2
initrd /boot/initrd-2.6.18-194.3.1.el5xen.img
Modifichiamolo immettendo il percorso dell’immagine del nuovo Kernel:
default=0
timeout=5
title xen-domU
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.32.1.el5xen ro root=/dev/xvda2
initrd /boot/initrd-2.6.18-194.32.1.el5xen.img
Salviamo.
Fate molta attenzione quando modificate questo file, in quanto, in caso di errore, la VPS potrebbe non essere più riavviabile e dovrete qui utilizzare la funzione rescue del nostro pannello per montare i dischi e correggere.
Infine riavviamo:
reboot
Debian
Controlliamo la versione del Kernel installata:
vps-0072:~# uname -a
Linux vps-0072.flarevm.net 2.6.26-2-xen-amd64 #1 SMP Thu Aug 20 00:36:34 UTC 2009 x86_64 GNU/Linux
vps-0072:~# ls /boot/
System.map-2.6.26-2-xen-amd64 grub initrd.img-2.6.26-2-xen-amd64.bak
config-2.6.26-2-xen-amd64 initrd.img-2.6.26-2-xen-amd64 vmlinuz-2.6.26-2-xen-amd64
Aggiorniamo il sistema:
vps-0072:~# apt-get update && apt-get upgrade
Hit http://ftp.it.debian.org lenny Release.gpg
Hit http://ftp.it.debian.org lenny Release
Ign http://ftp.it.debian.org lenny/main Packages/DiffIndex
Ign http://ftp.it.debian.org lenny/contrib Packages/DiffIndex
Ign http://ftp.it.debian.org lenny/non-free Packages/DiffIndex
Ign http://ftp.it.debian.org lenny/main Sources/DiffIndex
Ign http://ftp.it.debian.org lenny/contrib Sources/DiffIndex
Ign http://ftp.it.debian.org lenny/non-free Sources/DiffIndex
Hit http://ftp.it.debian.org lenny/main Packages
Hit http://ftp.it.debian.org lenny/contrib Packages
Hit http://ftp.it.debian.org lenny/non-free Packages
Hit http://ftp.it.debian.org lenny/main Sources
Hit http://ftp.it.debian.org lenny/contrib Sources
Hit http://ftp.it.debian.org lenny/non-free Sources
Reading package lists... Done
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
apt apt-utils base-files cpio debian-archive-keyring dhcp3-client dhcp3-common dpkg gzip iputils-ping libbz2-1.0 libc6
libgnutls26 libkrb53 libnewt0.52 libssl0.9.8 libxext6 linux-image-2.6.26-2-xen-amd64 linux-modules-2.6.26-2-xen-amd64 login
nano passwd tar tzdata wget whiptail
26 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0MB of archives.
After this operation, 2559kB disk space will be freed.
Do you want to continue [Y/n]?
Premiamo y.
Aggiorniamo quindi il bootloader come descritto sopra per CentOS e riavviamo:
reboot