I’ve been having a lot of fun recently with doing a bare metal restore of an Exadata compute node. This process is reasonably well documented in MOS: 1084360.1. However one area where it falls down on, is how to actually image the node.
So here is my guide to building an Exadata Compute Node USB imaging drive. This will use Virtualbox on OS X. Yes, you could build it on an existing Exadata node.
Obtaining Exadata Software
First thing you need to do is download the correct version you are after. Yes, you can grab it from Oracle edelivery, as long as the version you are after is not too old. There are choices for the various versions and separate downloads for compute nodes and storage nodes. You will download a zip file. When unzipped, assuming it is a compute node you are building you will find a computeImageMake_VERSION.tar.zip. You need to uncompress and then untar this as root
You will now have a dl360 directory. Just happens that dl360 is a model of HP server. If you are building a storage node, it will be dl180, also a type of HP Proliant server.
Descending to this newly created directory you will see a readme: README_FOR_FACTORY.txt, which explains how to build the image. You will also see makeImageMedia.sh which actually does the building of the image.
Building the Image
Using a Linux VM and VirtualBox. present the USB stick to the VM. You need at least 2GB in size.
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
14G 11G 2.3G 83% /
/dev/sda1 99M 13M 82M 14% /boot
tmpfs 502M 0 502M 0% /dev/shm
Downloads 297G 210G 88G 71% /media/sf_Downloads
/dev/hdc 43M 43M 0 100% /media/VBOXADDITIONS_4.1.6_74713
/dev/sdb1 3.8G 888K 3.8G 1% /media/UNTITLED
Unmount the device:
[root@localhost ~]# umount /dev/sdb1
Use fdisk to remove the FAT32 formatting and create a partition:
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): p
Disk /dev/sdb: 4041 MB, 4041211904 bytes
255 heads, 63 sectors/track, 491 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 492 3946495 b W95 FAT32
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(1023, 254, 63) logical=(0, 0, 3)
Partition 1 has different physical/logical endings:
phys=(1023, 254, 63) logical=(491, 80, 37)
Command (m for help): d
Selected partition 1
Command (m for help): p
Disk /dev/sdb: 4041 MB, 4041211904 bytes
255 heads, 63 sectors/track, 491 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-491, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-491, default 491):
Using default value 491
Command (m for help): p
Disk /dev/sdb: 4041 MB, 4041211904 bytes
255 heads, 63 sectors/track, 491 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 491 3943926 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
This is the crucial part, the build will fail if it is formatted with FAT when you try and create the image.
Now you are ready to run the makeImageMedia.sh script:
[root@localhost dl360]# ./makeImageMedia.sh
Please wait. Calculating md5 checksums for cellbits ...
Please wait. Making initrd ...
180027 blocks
Please wait. Calculating md5 checksums for boot ...
Choose listed USB devices to set up the Oracle CELL installer
sdb Approximate capacity 3946 MB
Enter the comma separated (no spaces) list of devices or word 'ALL' for to select all: ALL
sdb will be used as the Oracle CELL installer
All data on sdb will be erased. Proceed [y/n]? y
Command (m for help): Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
Command (m for help): Command action
e extended
p primary partition (1-4)
Partition number (1-4): First cylinder (1-491, default 1): Last cylinder or +size or +sizeM or +sizeK (1-491, default 491):
Command (m for help): The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
umount2: Invalid argument
umount: /dev/sdb1: not mounted
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
492032 inodes, 983973 blocks
49198 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1010827264
31 block groups
32768 blocks per group, 32768 fragments per group
15872 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Copying files... will take several minutes
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> Done creation of installation USB for DL360
This will now have built your image on the USB drive. It is now a good idea to test that it really has worked and contains the software you require.
Testing your Image
There are a couple of ways of testing you have the image you want. Thanks to my e-dba colleague, Matthew Walden, for pointing these out.
First off, present again the USB drive to your VM.
On OS X when inserting an Exadata USB image, it is unrecognised by the OS and you see this dialogue box:
You need to choose eject. Then you can attach the USB drive to the VirtualBox VM. Once this is done, the following folder will appear:
You can look inside the image.id file to check what the image was built with:
You can clearly see this is a Compute node and is built with the 11.2.1.2.3 software version.
You can also test that your image will boot using VirtualBox and the plop bootloader. This allows you to select a USB device to boot from in VirtualBox. It downloads to an iso file which you boot a VM from. You then see the following menu:
After presenting your USB drive containing the Exadata image to the VM, you can select the USB device to boot from. Eventually you will see the following splash screen:
The above steps should give you some confidence that the USB image you have created will actually boot and Exadata node.
Note the above is only intended to for bare metal restore or reimaging of an Exadata node. In later software versions mounting an iso image via virtual cdrom on the iLOM works fine and would be my preferred solution.






CH.WAQAS
/ January 17, 2012that’s gr8
jc nars
/ January 23, 2012Hi,
Created a USB image & tried booting the ‘cell node’ (actually a VM session) with the generated image and got this:
[ERROR] get_node_type: Not a supported hardware model Virtualbox. dmidecode -s system-product-name returns invalid value
Ever came across this?
Thanks
knight
/ January 24, 2012I tried creating an ISO image instead USB and it went fine then i mounted the ISO image but got the bellow error :
[ERROR] get_node_type: Not a supported hardware model Virtualbox. dmidecode -s system-product-name returns invalid value
followed by :
login id prompt and password.
I tried using root and welcome1 but no luck.
jarneil
/ January 24, 2012I am only suggesting you use VirtualBox to test that you built a bootable image. Clearly there is a boot check in there to determine that it is running on the supported hardware. the dmidecode is the standard practice for determining what hardware you are running on X4170 etc.
I too have seen this, but when you run the image or indeed ISO on the correct hardware it works. I am only suggesting you run this on Oracle Exadata machines.
jason.