Difference between revisions of "Linux netbooting"

From WirelessAfrica
Jump to navigation Jump to search
Line 37: Line 37:
 
==Create Linux Kernel==
 
==Create Linux Kernel==
  
There are two types of Kernel images you can build. The first is an image which contains all the necessary file system drivers, or even network drivers in the case of NFS, to allow the file systems to mount and let the operating system boot normally. The second type of kernel image puts all the drivers in a file which is mounted in RAM as a RAM disk. This is known as an initrd file. initrd stands for "initial ramdisk"  
+
To get a kernel up and running it needs firstly to boot itself and then run some file system drivers, or even network drivers in the case of NFS, to allow the file systems to mount and let the operating system boot normally. To do this the kernel needs to mount a RAM disk which contains all the drivers necessary for boot up. This RAM disk is called an initrd file or "initial ramdisk file" Below are the steps to firstly create the kernel with the necessary options and secondly the ramdisk file with the required drivers.
  
'''I Create kernel image with module drivers built in'''
+
1) Start the kernel configuration program in /usr/src/<linux kernel version>
 
 
1) Start the kernel configuration program
 
  
 
  sudo make menuconfig
 
  sudo make menuconfig
Line 61: Line 59:
 
   <*> NFS file system support  
 
   <*> NFS file system support  
 
     [*] Root file system on NFS
 
     [*] Root file system on NFS
Loadable module support  --->
 
  [] Enable loadable module support
 
  
 
3) Make the kernel
 
3) Make the kernel
Line 78: Line 74:
 
  scp bzImage djohnson@meshy.dhcp:~/vmlinuz.david
 
  scp bzImage djohnson@meshy.dhcp:~/vmlinuz.david
  
 +
6) Make the kernel module drivers
  
'''II Create kernel image without module drivers built in'''
+
sudo make modules
  
1) Start the kernel configuration program
+
7) Backup your current kernel modules (<current kernel version> is your current kernel e.g. 2.6.10-12
  
  sudo make menuconfig
+
  sudo cp -r /usr/modules/<current kernel version> /usr/modules/<current kernel version>.bak
  
2) Set the following options on the kernel configuration menus
+
8) Install the module drivers (note this will install all the drivers in the directory /lib/modules/<kernel version> If your current kernel version is the same as the kernel source you are building it will overwrite all your current kernel modules but step 7 would have created a backup - after this process however
 
 
Processor type and features  --->
 
  Processor family: Pentium-Classic
 
Device Drivers  --->
 
  Networking support  --->
 
  Networking options  --->
 
    [*]IP: kernel level autoconfiguration                           
 
      [*]    IP: DHCP support
 
      [*]    IP: BOOTP support
 
      [*]    IP: RARP support             
 
File systems  --->
 
  Network File Systems  --->
 
  <*> NFS file system support
 
    [*] Root file system on NFS
 
Loadable module support  --->
 
  [*] Enable loadable module support
 
 
 
3) Make the kernel
 
 
 
sudo make
 
 
 
4) Make the kernel image
 
 
 
sudo make bzImage
 
 
 
This will give you your linix kernel image (bzImage) in /usr/src/linux-source-2.6.12/arch/i386/boot/
 
 
 
5) Copy the kernel image to the server directory where the booting directory is located
 
 
scp bzImage djohnson@meshy.dhcp:/export/tftpboot/vmlinuz.david
 
 
 
6) Make the kernel module drivers
 
 
 
sudo make modules
 
 
 
7) Install the module drivers
 
  
 
  sudo make modules_install
 
  sudo make modules_install
Line 128: Line 89:
  
 
  sudo mkinitrd -o initrd.img-2.6.12 2.6.12
 
  sudo mkinitrd -o initrd.img-2.6.12 2.6.12
 
9)
 

Revision as of 15:09, 25 April 2006

Instructions follow on how to netboot using Ubuntu Linux.

Server Setup

Setup DHCP

/usr/local/etc/dhcp.conf

Setup PXE

Setup Filesystem

Useful information: Building PXE Imager from scratch

1) Use debian debootstrap tool to create basic filesystem.

sudo debootstrap breezy /home/yusuf/ubuntu ftp://ftp.is.co.za/ubuntu/

2) chroot into new filesystem

sudo chroot /home/yusuf/ubuntu/

3) create apt source list

sudo vi /etc/apt/sources.list

4) Add packages

sudo apt-get update
sudo apt-get install ssh olsrd

5) Tar the filesystem

 sudo tar -cvjf ubuntu.tar.gz ./ubuntu/

6) Copy the filesystem to the server and un-tar

 scp ubuntu.tar.gz user@server:

Client Setup

Create Linux Kernel

To get a kernel up and running it needs firstly to boot itself and then run some file system drivers, or even network drivers in the case of NFS, to allow the file systems to mount and let the operating system boot normally. To do this the kernel needs to mount a RAM disk which contains all the drivers necessary for boot up. This RAM disk is called an initrd file or "initial ramdisk file" Below are the steps to firstly create the kernel with the necessary options and secondly the ramdisk file with the required drivers.

1) Start the kernel configuration program in /usr/src/<linux kernel version>

sudo make menuconfig

2) Set the following options on the kernel configuration menus

Processor type and features  --->  
 Processor family: Pentium-Classic
Device Drivers  --->
 Networking support  ---> 
  Networking options  --->
    [*] Packet socket
    [*]IP: kernel level autoconfiguration                             
     [*]     IP: DHCP support
     [*]     IP: BOOTP support
     [*]     IP: RARP support               
File systems  ---> 
 Network File Systems  ---> 
  <*> NFS file system support 
   [*] Root file system on NFS

3) Make the kernel

sudo make

4) Make the kernel image

sudo make bzImage

This will give you your linix kernel image (bzImage) in /usr/src/linux-source-2.6.12/arch/i386/boot/

5) Copy the kernel image to the server

scp bzImage djohnson@meshy.dhcp:~/vmlinuz.david

6) Make the kernel module drivers

sudo make modules

7) Backup your current kernel modules (<current kernel version> is your current kernel e.g. 2.6.10-12

sudo cp -r /usr/modules/<current kernel version> /usr/modules/<current kernel version>.bak

8) Install the module drivers (note this will install all the drivers in the directory /lib/modules/<kernel version> If your current kernel version is the same as the kernel source you are building it will overwrite all your current kernel modules but step 7 would have created a backup - after this process however

sudo make modules_install

8) Create the initrd ramdisk image

sudo mkinitrd -o initrd.img-2.6.12 2.6.12