wiki:Software/fImages/cBuildingCustomOS

Version 7 (modified by seskar, 13 years ago) ( diff )

Go back —> Documentation

Creating custom OS images

In order to use an OS other than the ones provided with stock images (Ubuntu based images), you can either provide your own (frisbee) image of the OS of your choice (that was prepared off-site) or use the netboot method on ORBIT infrastructure. Regardless of the method, the resulting image should support:

  • a serial console (@115K, 8, n, 1) on the first serial port
  • driver support for 2 gigabit network card
  • and dhcp on the 2nd wired gigabit network interface

Installing custom OS with PXE netboot method

The metod is based on Preboot Execution Environment (PXE) which is using a combination of DHCP and tftp services to download initial installation package (network installer software and it's configuration) onto the node. Once the installation package is downloaded, the control transfers to the installer.

Please be sure the installer for the OS of your choice provides a serial console on the first serial port (@115K,8,n,1) and has appropriate network drivers.

We will illustrate this process on the natty

  • The XML interface is self explanatory.
  • Copy your boot script to your tftp server (e.g. /tftpboot on repository1)
  • Configure the boot behavior of your node via the PXE aggregate manager.

The PXE aggregate manager at:

http://pxe:5052/pxe

will show you all of the available URLs. What you need to use is:

http://pxe:5052/pxe/nodeSetBootImage?img="image_file_name"&nodes="set-of-nodes"

and:

http://pxe:5052/pxe/nodeSetClearBootImage?img="image_file_name"&nodes="set-of-nodes"

You have to come from the domain console to use this service (i.e. if you are working with the node in sb1 you have to issue this on console.sb1).

To interact with your node, follow the instructions on our FAQ concerning interaction via serial consoles

After you have an image, simply use

omf save x,y

to save the image of the node in our repository for further use

Ubunty natty installation example

Create /tftpboot/ubuntu-natty direcotry and download network appropriate installation files:

guest@repository1.:/tftpboot# mkdir ubuntu-natty
guest@repository1.:/tftpboot# cd ubuntu-natty
guest@repository1.:/tftpboot/ubuntu-natty# wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux
--2011-09-13 10:00:46--  http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/linux
Resolving archive.ubuntu.com... 91.189.92.170, 91.189.88.31, 91.189.88.40, ...
Connecting to archive.ubuntu.com|91.189.92.170|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4521296 (4.3M) [text/plain]
Saving to: `linux'

100%[========================================>] 4,521,296   1.46M/s   in 2.9s    

2011-09-13 10:00:49 (1.46 MB/s) - `linux' saved [4521296/4521296]

guest@repository1.:/tftpboot/ubuntu-natty# wget http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz
--2011-09-13 10:00:59--  http://archive.ubuntu.com/ubuntu/dists/natty/main/installer-i386/current/images/netboot/ubuntu-installer/i386/initrd.gz
Resolving archive.ubuntu.com... 91.189.92.169, 91.189.92.170, 91.189.88.31, ...
Connecting to archive.ubuntu.com|91.189.92.169|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7987143 (7.6M) [application/x-gzip]
Saving to: `initrd.gz'

100%[========================================>] 7,987,143   2.26M/s   in 3.4s    

2011-09-13 10:01:03 (2.26 MB/s) - `initrd.gz' saved [7987143/7987143]

guest@repository1.:/tftpboot/ubuntu-natty# 

Create pxe configuraiton file in /tftpboot/pxelinux.cfg/ubuntu-natty that instruct PXE process to download installer kernel and filesystem from /tftpboot/ubunty-natty directory:

SERIAL 0 115000 0
DEFAULT linux
LABEL ubuntu-natty
# ubuntu installer is installed in /tftpboot/ubuntu-natty (linux and initrd.gz).
KERNEL ubuntu-natty/linux
APPEND initrd=ubuntu-natty/initrd.gz ramdisk_size=32768 root=/dev/rd/0 rw contrpre
seed/locale=en_US kbd-chooser/method=us netcfg/choose_interface=eth1 --
PROMPT 0
Note: See TracWiki for help on using the wiki.