Freebsd上架設PXE Boot服務及CloneZilla遠程備份還原服務

火星人 @ 2014-03-12 , reply:0


  

#這篇是很早寫的個人筆記,原文在這裡(PDF 文件)。最近有人問及,所以拿出來再重新貼一下,也許對某些人有用。雖然應用於 FreeBSD 上,沒有涉及到 Ubuntu ,但對於 Ubuntu 及 Linux 用戶來說,方法基本上相通的。

一、概述

現在的桌面機集本都集成了帶有 PXE 模塊的網卡,所以可以有效利用這一功能來進行網路化的系統布置及備份還原。這套方案用到了 VirtualBox ,Freebsd , Clonezilla 等開源操作系統及工具,所有軟體都是免費開源的。

截圖1:

二、設置 DHCP 服務

我的 DHCP 伺服器是現成的,放在 Windows 上,所以只要設置一下 066 和 067 這兩個選項就 OK 了, 在 066 中輸入啟動伺服器 IP 地址,在 067 中輸入 pxelinux.0 ,如下圖。

這樣就可以通過 DHCP 來指定 TFTP 啟動伺服器及啟動文件了。

當然你也可以在 Freebsd 上安裝 DHCP 伺服器

pkg_add -r isc-dhcp31-server

創建 /usr/local/etc/dhcpd.conf 文件

allow booting;
allow bootp;
default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style ad-hoc;
log-facility local7;
option domain-name “home.lan”;
option domain-name-servers 192.168.1.1;
server-name “192.168.1.1″;
server-identifier 192.168.1.1;
next-server 192.168.1.1;
option routers 192.168.1.1;
option root-path “192.168.1.1:/usr/tftpboot”;
filename “pxelinux.0″;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.11;
}

在 /etc/rc.conf 中加入以下行

dhcpd_enable=”YES”

啟動 DHCP

/usr/local/etc/rc.d/isc-dhcpd start

三、架設 PXE Boot 服務

1) 安裝 Freebsd

這個就不必多說了,可以參考 Freebsd 使用手冊-安裝 Freebsd http://www.freebsd.org/doc/zh_CN/books/handbook/install.html

2 ) 設置 PXE Boot Server

編輯 /etc/inetd.conf ,把下面一行的 # 去掉 並把/tftpboot 改為 /usr/tftpboot

#tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /usr/tftpboot

編輯 /etc/rc.conf ,加入下面一行

inetd_enable=”YES”

在 Shell 下輸入以下命令,用來啟動 inetd 及 tftp 進程。

/etc/rc.d/inetd start

在 /usr/ 目錄下創建一個 tftpboot 文件夾

mkdir /usr/tftpboot

在 / 根目錄下創建一個 tftpboot 的目錄鏈接

ln -s /usr/tftpboot /tftpboot

到 http://www.kernel.org/pub/linux/utils/boot/syslinux/ 下載 syslinux,這個文件中包含了用於 pxe 啟動的 pxelinux.0 及 vesamenu.c32 文件。

fetch http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.85.tar.gz

解壓縮

tar zxvf syslinux-3.85.tar.gz

複製 pxelinux.0 到 tftpboot 目錄中

cp syslinux-3.85/core/pxelinux.0 /tftpboot/

複製 vesamenu.c32 到 tftpboot 目錄中

cp syslinux-3.85/com32/menu/vesamenu.c32

回到 /tftpboot 目錄,創建 pxelinux.cfg 目錄

mkdir /tftpboot/pxelinux.cfg

創建 default 文件,代碼如下

DEFAULT vesamenu.c32
MENU TITLE === PXE Boot Server ===
menu color title 1;36;44 #ffffffff #00000000 std
LABEL fog.local
localboot 0
MENU DEFAULT
MENU LABEL Boot from hard disk
TEXT HELP
Boot from the local hard drive.
If you are unsure, select this option.
ENDTEXT
LABEL fog.memtest
kernel fog/memtest/memtest
MENU LABEL Run Memtest86+
TEXT HELP
Run Memtest86+ on the client computer.
ENDTEXT
LABEL fog.centos
kernel centos/vmlinuz
append initrd=centos/initrd.img ip=dhcp dns=8.8.8.8 mode=quickimage keymap=
MENU LABEL Install CentOS 5.4
TEXT HELP
This mode will allow you install Centos 5.4!
ENDTEXT
LABEL fog.freebsd
kernel boot/freebsd.0
MENU LABEL Install Freebsd 8
TEXT HELP
This mode will allow you install Freebsd 8!
ENDTEXT
LABEL fog.clonezilla
kernel clonezilla/vmlinuz
append initrd=clonezilla/initrd.img boot=live union=aufs noswap noprompt vga=788 netboot=nfs nfsroot=192.168.1.1:/usr/data/clonezilla ocs_lang=”zh_CN.UTF-8″ ocs_live_keymap=”NONE”
MENU LABEL Run Clonezilla
TEXT HELP
This mode will allow you run Clonezilla to Backup/Restore OS!
ENDTEXT
PROMPT 0
TIMEOUT 30

default 裡面的設置以後你也可以自已添加其它項目,這裡我已包含了 Clonezilla 的啟動項。

四、設置 CloneZilla 遠程備份服務

下載 clonezilla ISO 文件 http://www.clonezilla.org/download/sourceforge/stable/iso-zip-files.php

載入 ISO 文件

mdconfig -a -t vnode -f /usr/data/clonezilla-live-1.2.4-28-486.iso -u 0
mount -r -t cd9660 /dev/md0 /mnt/clonezilla/

在 /tftpboot 目錄下創建一個 clonezilla 目錄

mkdir /tftpboot/clonezilla

複製光碟 /live 目錄下的 initrd.img 及 vmlinuz 到 /tftpboot/clonezilla 目錄下

cp /mnt/clonezilla/live/vmlinuz /tftpboot/clonezilla/
cp /mnt/clonezilla/live/initrd.img /tftpboot/clonezilla/

五、設置 NFS 服務

在 /etc/rc.conf 中加入以下幾行

nfs_server_enable=”YES”
mountd_enable=”yes”
rpcbind_enable=”YES”

在 /etc 目錄下創建 exports 文件,並加入以下一行

/usr/data/clonezilla /usr/data/freebsd -ro

在 /usr/data 目錄創建 clonezilla 目錄

mkdir /usr/data/clonezilla

把之前載入到 /mnt/clonezilla 下的 ISO 光碟中的內容全都複製到 /usr/data/clonezilla 目錄中

cp -r /mnt/clonezilla/* /usr/data/clonezilla

然後,啟動 nfs 服務

/etc/rc.d/rpcbind start
/etc/rc.d/mountd start
/etc/rc.d/nfsd start

然後通過以下命令來查看輸出情況

showmount -e

結果應該為

Exports list on localhost:
/usr/data/clonezilla Everyone

另外,你也可以通過以下命令來查看 nfs 的運行狀態

nfsstat

注意:如果修改 /etc/exports 后,可通過以下命令進行重新輸出

/etc/rc.d/mountd reload

這裡的NFS 輸出路徑與之前 pxelinux.cfg/default 中的 Label 標籤設置相聯繫,主要是指定了 clonezilla netboot 的 nfs 路徑,所以這兩塊必須相匹配,如下。

LABEL fog.clonezilla
kernel clonezilla/vmlinuz
append initrd=clonezilla/initrd.img boot=live union=aufs noswap noprompt vga=788 netboot=nfs nfsroot=192.168.1.1:/usr/data/clonezilla ocs_lang=”zh_CN.UTF-8″ ocs_live_keymap=”NONE”
MENU LABEL Run Clonezilla
TEXT HELP
This mode will allow you run Clonezilla to Backup/Restore OS!
ENDTEXT

OK ,到這裡所有的配置都完成了,試著從 PXE 啟動一下 Clonezilla 吧,如果成功的話,你就可以通過它來備份還原系統了。

截圖:啟動界面

六、延伸1:設置可通過 PXE 安裝的 CentOS 5

配置 Centos 的PXE 網路安裝非常簡單,只要把CentOS 安裝 ISO 光碟中 /images/pxeboot 目錄下的 vmlinuz 及 initrd.img 這兩個文件放在 /tftpboot/centos 目錄下,然後配置好 pexlinux.cfg/default 的 centos 標籤就OK 了,主要是指定好相應文件地址。如下:

LABEL fog.centos
kernel centos/vmlinuz
append initrd=centos/initrd.img ip=dhcp dns=8.8.8.8 mode=quickimage keymap=
MENU LABEL Install CentOS 5.4
TEXT HELP
This mode will allow you install Centos 5.4!
ENDTEXT

七、延伸2:設置可通過 PXE 安裝的 Freebsd 8

在 pxelinux 環境下通過 pxe 引導 Freebsd 有點複雜,因為不能通過 DHCP 伺服器的 root-path 選項來指定 NFS 引導路徑,所以必須通過 TFTP 來載入 freebsd 的引導文件,而且必須把 pxeboot 這個引導文件改成 filename.0 這樣格式的文件名,否則不能正常載入引導文件,這應該是 pxelinux 的是一種文件格式規定,所以我們需要重新編譯 pxeboot 文件以便可以從 tftp 來載入引導文件,ISO 光碟 /boot/ 目錄下的 pxeboot 只能從 NFS 引導。

設置 nfs 輸出及 tftp

下載 freebsd ISO 安裝盤 下載地址:ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/

fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/8.0/8.0-RELEASE-i386-disc1.iso

掛載安裝盤

mdconfig -a -t vnode -f /usr/data/8.0-RELEASE-i386-disc1.iso
mount_cd9660 /dev/md0 /mnt/freebsd/

複製 boot 目錄到 /tftp 目錄下

cp -r /mnt/freebsd/boot /tftp/

解壓縮 /tftp/boot 目錄中的 mfsroot.gz 文件

cd /tftp/boot
gunzip mfsroot.gz

複製 光碟中所有文件到 /usr/data/freebsd 下

cp -r /mnt/freebsd/* /usr/data/freebsd/

設置 nfs 輸出 ,把 /etc/exprots 文件中

/usr/data/clonezilla -ro

改為

/usr/data/clonezilla /usr/data/freebsd -ro

重新載入 exports

/etc/rc.d/mountd reload

用以下命令查看輸出是否正確

showmount -e

輸出結果應該為

Exports list on localhost:
/usr/data/freebsd Everyone
/usr/data/clonezilla Everyone

重新編譯 pxeboot

獲取 /usr/src 源代碼,然後利用參數編譯引導部分,使 pxeboot 能夠從 tftp 上載入引導文件

cd /usr/src/sys/boot
make -DLOADER_TFTP_SUPPORT=YES

編譯完后,複製 pxeboot 文件到 /tftpboot/boot 目錄中,並改名為 freebsd.0

cp /usr/src/sys/boot/i386/pxeldr/pxeboot /tftpboot/boot/freebsd.0

部署 pxelinux 啟用選項

編輯 /tftp/pxelinux.cfg/default ,加入以下菜單項

LABEL fog.freebsd
kernel boot/freebsd.0
MENU LABEL Install Freebsd 8
TEXT HELP
This mode will allow you install Freebsd 8!
ENDTEXT

OK ,到此整個配置過程就完成了,試著從 pxe 啟動並安裝 freebsd 吧,安裝的時候記得通過 nfs 方式來安裝

截圖:

pxe boot






[火星人 via ] Freebsd上架設PXE Boot服務及CloneZilla遠程備份還原服務已經有366次圍觀

http://www.coctec.com/docs/linux/show-post-65676.html