Posts mit dem Label OEL werden angezeigt. Alle Posts anzeigen
Posts mit dem Label OEL werden angezeigt. Alle Posts anzeigen

Mittwoch, 30. November 2011

Oracle Enterprise Linux und VirtualBox: den richtigen Kernel wählen

Wer in letzter Zeit regelmässig sein Oracle Enterprise Linux Image und seine VirtualBox aktualisiert hat, z.B. das Image aus dem 'BPMN und SOA Governance Handson Workshop', hat möglicherweise eine böse Überraschung erlebt.
Zum Installieren der Gasterweiterungen wird im Menü der VirtualBox unter 'Geräte' der Punkt 'Gasterweiterungen Installieren' ausgewählt.


Beim Installieren der VBox-Extensions nach Kernel- oder VBox-Update z.B. per
sh /media/VBOXADDITIONS_4.1.6_74713/VBoxLinuxAdditions.run
bricht das Skript mit folgender Fehlermeldung ab

[root@oel5r5 ~]# sh /media/VBOXADDITIONS_4.1.6_74713/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.1.6 Guest Additions for Linux.........
VirtualBox Guest Additions installer
Removing installed version 4.1.6 of VirtualBox Guest Additions...
Removing existing VirtualBox DKMS kernel modules        [  OK  ]
Removing existing VirtualBox non-DKMS kernel modules    [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-200.23.1.el5uek

Building the main Guest Additions module                [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

Doing non-kernel setup of the Guest Additions           [  OK  ]
Installing the Window System drivers
Installing X.Org 7.1 modules                            [  OK  ]
Setting up the Window System to use the Guest Additions [  OK  ]
You may need to restart the hal service and the Window System (or just restart
the guest system) to enable the Guest Additions.

Installing graphics libraries and desktop services componen[  OK  ]
Das zum Übersetzen der VBox-Extensions benötigte Packet kernel-devel-2.6.32-200.23.1.el5uek fehlt also. Leider führt die vorgeschlagene Lösung, das Packet einfach per yum nachzuinstallieren auch nicht zum Erfolg:

[root@oel5r5 ~]# yum install kernel-devel-2.6.32-200.23.1.el5uek
Loaded plugins: security
file:///media/Enterprise%20Linux%20dvd%2020100405/Server/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] No such file or directory: '/media/Enterprise Linux dvd 20100405/Server/repodata/repomd.xml'
Trying other mirror.
Setting up Install Process
No package kernel-devel-2.6.32-200.23.1.el5uek available.
Nothing to do

Im Repository Repository von Oracle liegt also kein Developer-Package für den Kernel, der mit el5uek bezeichnet ist. Hintergrund ist, dass Oracle für Enterprise Linux 5.7 als Alternative zum relativ alten Kernel 2.6.18, der auch von RedHat Linux benutzt wird, auch einen aktuelleren Kernel 2.6.32 anbietet. Einzelheiten  dazu finden sich auf Oracle.com. Dieser Kernel wurde nun im Rahmen der Updates installiert, aber es gibt zumindest in Oracle's Repository kein dazu passendes devel-package, so dass sich die VBox-Extensions nicht mehr übersetzen lassen. Andererseits sind die Optimierungen des UEK für ein Entwicklungs-/Testsystem in einer VBox ohnehin nicht relevant, so hier einfach weiter der Kernel 2.6.18 genutzt werden kann.
Hierzu muss einfach in der Datei /boot/grub/grub.conf der zu verwendende Kernel ausgewählt werden. Ich habe den (ggf. sind auch mehrere Einträge vorhanden) 2.6.32 Kernel einfach an das Ende der Liste wie folgt verschoben.

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.18-274.7.1.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-274.7.1.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-274.7.1.0.1.el5.img
title Oracle Linux Server (2.6.18-274.0.0.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-274.0.0.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-274.0.0.0.1.el5.img
title Oracle Linux Server (2.6.18-238.19.1.0.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-238.19.1.0.1.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    initrd /initrd-2.6.18-238.19.1.0.1.el5.img
title Oracle Linux Server (2.6.32-200.23.1.el5uek)
   root (hd0,0)
   kernel /vmlinuz-2.6.32-200.23.1.el5uek ro root=/dev/VolGroup00/LogVol00 rhgb quiet
   initrd /initrd-2.6.32-200.23.1.el5uek.img
Der Eintrag default=0 sorgt dafür, dass der erste Eintrag der Liste, in diesem Fall der Kernel 2.6.18-274.7.1.0.1.el5 automatisch gestartet wird. Kommentiert man die Zeile hiddenmenu aus, kann man auch beim Startvorgang auswählen, welcher Kernel verwendet werden soll.



Mit dem 2.6.18er Kernel und dem dafür vorhandenen devel-package lassen sich dann (nach Reboot) auch die VBox-Extensions wieder übersetzen.

--- UPDATE ---

Warum einfach, wenn es auch kompliziert geht ;-)
Es hätte auch gereicht, einfach das zum Kernel passende 'kernel-uek-devel...' Packet zu installieren. Danke an Lorenz Keller für den Hinweis.

Dienstag, 2. August 2011

Oracle Enterprise Linux 5.5 in VirtualBox 4.1: root-Partition vergrössern

Will man die SOA-Suite in einer virtuellen Umgebung patchen, wie z.B. das VBox-Image aus dem BPM & SOA-Governance Training, kann man in das Problem laufen, dass einem der virtuelle Platz auf dem root-Volume ausgeht, da während das Patchens der Platz für die SOA-Suite doppelt benötigt wird. Um das Volume zu vergrössern sind die folgenden Schritte nötig:

Zunächst muss die Grösse für das Virtual Disk Image (vdi) erhöht werden.

e:\VBox\Machines\SOA-11114-Klein>dir
...
02.08.2011  16:11   

02.08.2011  16:11    26.469.335.040 SOA-11114-Klein-disk1.vdi
02.08.2011  16:11            10.243 SOA-11114-Klein.vbox
2 File(s) 26.469.345.283 bytes 
2 Dir(s)  20.660.883.456 bytes free 

Die Größe für das VDI lässt sich mit VBoxManage erhöhen via 

e:\VBox\Machines\SOA-11114-Klein>VBoxManage modifyhd SOA-11114-Klein-disk1.vdi -
-resize 40000
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% 

Hierbei wird die Datei nicht wirklich vergrößert, sondern nur die maximale Größe neu gesetzt, wie ein Blick auf die Datei zeigt.

e:\VBox\Machines\SOA-11114-Klein>dir
Volume in drive E is DriveBay
Volume Serial Number is ACDD-ABAA

Directory of e:\VBox\Machines\SOA-11114-Klein

02.08.2011  16:11              .
02.08.2011  16:11             ..
02.08.2011  16:16    26.470.383.616 SOA-11114-Klein-disk1.vdi
02.08.2011  16:11            10.243 SOA-11114-Klein.vbox

2 File(s) 26.470.393.859 bytes 
2 Dir(s)  20.659.834.880 bytes free 

Das Betriebssystem in der VBox hat davon natürlich nichts mitbekommen. Als nächstes muss daher die zu ändernde VM hochgefahren werden. Dann kann man als root per fdisk die Partitionierung anzeigen lassen:

[root@oel5r5 ~]# fdisk -l
Disk /dev/sda: 41.9 GB, 41943040000 bytes
255 heads, 63 sectors/track, 5099 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        4000    32025577+  8e  Linux LVM


Disk /dev/dm-0: 29.6 GB, 29662117888 bytes
255 heads, 63 sectors/track, 3606 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Hier kann man sehen, dass die Platte /dev/sda über 5099 Zylinder verfügt, die Partition /dev/sda2 aber bereits 4000 endet. Per fdisk kann das Ende von /dev/sda2 auf 5099 erhöht werden. Wichtig ist, die Hierzu wird fdisk mit der zu partitionierenden Platte aufgerufen:


fdisk /dev/sda

Über das Kommando p (print the partition table) kann man sich die Partitionierung noch einmal ansehen. Dann muss die zweite Partition /dev/sda2 gelöscht werden mit dem Kommando d:


Command (m for help): d
Partition number (1-4): 2

Als nächstes muss die Partition wieder neu angelegt werden mit dem Kommando n und den Parametern p (primary partition) und 2 (zweite Partition):


Command (m for help): n
Command action
e   extended
p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (14-5099, default 14):
Using default value 14
Last cylinder or +size or +sizeM or +sizeK (14-5099, default 5099):
Using default value 5099

Für die Werte für first und last cylinder sind die defaults richtig gesetzt und können so übernommen werden. Schaut man sich mit p die Partitionierung an, sieht man dass die Partition-Id noch nicht richtig gesetzt ist.


Command (m for help): p


Disk /dev/sda: 41.9 GB, 41943040000 bytes
255 heads, 63 sectors/track, 5099 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        5099    40853295   83  Linux

Diese kann mit dem Kommando t wieder auf den ursprünglichen Wert (hier: 8e) gesetzt werden


Command (m for help): t


Partition number (1-4): 2
Hex code (type L to list codes): 8e
Changed system type of partition 2 to 8e (Linux LVM)
Command (m for help): p


Disk /dev/sda: 41.9 GB, 41943040000 bytes
255 heads, 63 sectors/track, 5099 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes


Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        5099    40853295   8e  Linux LVM

Ein Blick in die Partitionierungstabelle zeigt, dass jetzt alles korrekt ist. Um die Werte zu speichern wird fdisk mit dem Kommando w verlassen.


Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.


WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Wie von fdisk vorgeschlagen wird die VM jetzt rebootet. Danach muss dem Logical Volume Manager (lvm) die Grössenänderung des physical volumes mitgeteilt werden. Dies geht über


[root@oel5r5 ~]# pvresize /dev/sda2


/dev/cdrom: open failed: No medium found
Physical volume "/dev/sda2" changed
1 physical volume(s) resized / 0 physical volume(s) not resized

Die Fehlermeldung zu /dev/cdrom kann ignoriert werden, wichtig ist '1 physical volume(s) resized'. Der Rest kann dann auch über das grafische Frontend erledigt werden, bei Oracle Enterprise Linux über System/Administration/Logical Volume Management.



Betrachtet man dort die Physical View /dev/sda, Partition 2 sieht man rechts jetzt Unused Space. Um diesen zu nutzen, wählt man unter Logical View LogVol00 und klickt dort den Button 'Edit Properties'.


Hier reicht es einfach, den Schieber für die Größe ganz nach rechts zu ziehen oder alternativ den Button 'Use remaining' zu benutzen und mit OK den Dialog zu beenden. Kommt an dieser Stelle die Fehlermeldung "Logical volume is not mounted but is in use. Please close all applications using this device (eg iscsi)", dann fehlen dem OEL Patches. Hier muss einfach das System mit einem Update-Server verbunden werden und alles installiert werden was vorgeschlagen wird, stand heute funktioniert dann alles.
Danach kann der lvm geschlossen werden und der zusätzliche Speicherplatz steht dem OEL in der VM zur Verfügung.

An dieser Stelle vielen Dank an meinen Kollegen Dirk Wriedt für die Unterstützung.