Jamyy's Weblog

PXE 網路開機實作 - Ubuntu Live CD & RAW Image

by Jamyy on 一月.29, 2013, under Linux

內容:

  • PXE Boot Server 基本環境配置
  • 配置 PXE 網路開機: Ubuntu 12.10 Live CD
  • 配置 PXE 網路開機: Ubuntu 12.04 RAW 映像檔
  • 以 KVM 虛擬機器測試 PXE 網路開機

環境:

  • PXE Boot Server: Fedora 9 / Fedora 14
  • Client (主機板, 啟用 Boot ROM): Asus M3A-H/HDMI, Asus M4A785-M
02

PXE Boot Server 基本環境配置

# yum install dhcp xinetd tftp-server syslinux-tftpboot
# vi /etc/xinetd.d/tftp

disable = no

# service xinetd restart
# vi /etc/dhcp/dhcpd.conf

#假設 PXE Boot Server 的 IP Address 為 192.168.1.1

allow bootp;

subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.10 192.168.1.50;
	option routers 192.168.1.254;
	option domain-name-servers 192.168.1.1;

	option tftp-server-name "192.168.1.1";
	next-server 192.168.1.1;
	filename "pxelinux.0";
}

# cp /tftpboot/pxelinux.0 /var/lib/tftpboot/
# service dhcpd restart

配置 PXE 網路開機: Ubuntu 12.10 Live CD

# mkdir -p /var/lib/tftpboot/livecd/ubuntu-12.10
# mount -o loop /path/to/ubuntu-12.10-desktop-i386.iso \
    /var/lib/tftpboot/livecd/ubuntu-12.10

# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# vi /var/lib/tftpboot/pxelinux.cfg/default

default 1
timeout 20
prompt 0

label 1
	kernel livecd/ubuntu-12.10/casper/vmlinuz
	append initrd=livecd/ubuntu-12.10/casper/initrd.lz boot=casper netboot=nfs root=/dev/nfs nfsroot=192.168.1.1:/var/lib/tftpboot/livecd/ubuntu-12.10

# vi /etc/exports

/var/lib/tftpboot/livecd/ubuntu-12.10	*(ro)

# exportfs -rv

配置 PXE 網路開機: Ubuntu 12.04 RAW 映像檔

# qemu-img create -f raw ubuntu-12.04.raw 20G
# qemu-kvm -hda ubuntu-12.04.raw \
    -cdrom /path/to/ubuntu-12.04-desktop-i386.iso \
    -smp 2 -m 1024 -usb -usbdevice tablet -vnc :1

將整個虛擬硬碟格式化為一個分割區, 用以掛載 / (root)
安裝完成後, 於虛擬機器的操作如下:

$ sudo vi /etc/initramfs-tools/initramfs.conf

MODULES=netboot
BOOT=nfs

$ sudo mkinitramfs -o /boot/initramfs.img
$ sudo cp /etc/fstab /etc/fstab.bak
$ sudo vi /etc/fstab

#內容全部清掉, 改成如下:
proc		/proc		proc	defaults 	0 0
/dev/nfs	/			nfs		defaults	0 0
none		/tmp		tmpfs	defaults	0 0
none		/var/run	tmpfs	defaults	0 0
none		/var/lock	tmpfs	defaults	0 0
none		/var/tmp	tmpfs	defaults	0 0

$ sudo vi /etc/network/interfaces

#auto eth0
#iface eth0 inet dhcp
iface eth0 inet manual

$ sync && sudo init 0

虛擬機器操作結束, 回到 PXE Boot Server
進行 RAW Image 掛載與 PXE Boot 環境設置

# fdisk -l -u s /path/to/ubuntu-12.04.raw

           Device Boot      Start         End      Blocks   Id  System
ubuntu-12.04.raw1   *        2048    39942143    19970048   83  Linux
Partition 1 has different physical/logical endings:
     phys=(1023, 254, 63) logical=(2486, 72, 18)

# mkdir -p /var/lib/tftpboot/vm/ubuntu-12.04
# mount -o loop,offset=$((2048*512)) /path/to/ubuntu-12.04.raw \
    /var/lib/tftpboot/vm/ubuntu-12.04

# vi /var/lib/tftpboot/pxelinux.cfg/default

default 1
timeout 300
prompt 1
display msg

label 1
	kernel livecd/ubuntu-12.10/casper/vmlinuz
	append initrd=livecd/ubuntu-12.10/casper/initrd.lz boot=casper netboot=nfs root=/dev/nfs nfsroot=192.168.1.1:/var/lib/tftpboot/livecd/ubuntu-12.10

label 2
	kernel vm/ubuntu-12.04/vmlinuz
	append initrd=vm/ubuntu-12.04/boot/initramfs.img root=/dev/nfs nfsroot=192.168.1.1:/var/lib/tftpboot/vm/ubuntu-12.04 ip=dhcp rw

# vi /var/lib/tftpboot/msg

1. Ubuntu 12.10 Live CD
2. Ubuntu 12.04 RAW Image

# vi /etc/exports

/var/lib/tftpboot/vm/ubuntu-12.04 *(rw,no_root_squash)

# exportfs -rv

以 KVM 虛擬機器測試 PXE 網路開機

$ sudo qemu-kvm -boot n -net nic -net tap,ifname=tap0 \
    -smp 2 -m 1024 -usb -usbdevice tablet

回顧: Jamyy's Weblog - PXE 網路開機實作 (GeeXboX, Knoppix & 自製迷你 Linux 系統)

Ref:



:, , ,