而透過網路移植拷備舊有 Linux 系統過來,所需的工作其實很單純,包括以下步驟:
分割硬碟,建立檔案系統
要做到自動化分割硬碟,必須使用 sfdisk。它是讀入一個 input 檔,根據該檔案的描述來做硬碟分割。此設定檔的詳細格式得參考 man sfdisk。以下是簡單的例子:
,2031,83,*
,1354,82,
,1354,83,
,,83,
這個檔案的各欄位是以逗號分隔的,第一欄是 partition 的開頭位置,不填的話預設就是一直接續下去,第二欄是 partition 的大小,不填代表剩下全部的空間,第三欄是 partition / filesystem type,第四欄是 bootable mark。
partition 的大小是以 cylinder 個數為單位,而利用 fdisk -l
如果要分割的硬碟是 /dev/hda,則所需的指令為:
分割完之後,接下來就是 mkswap 來初始化 swap 分割區,mke2fs 來格式化 ext3 filesystem,以及 tune2fs 來設定 ext3 filesystem 的相關參數 (包括 partition label) 等等。要注意的是,新機器上的 /etc/fstab 必須對應目前正確的 partition 分割方式。
除此之外,在新機器上的 /etc/fstab 也要記得將 virtual filesystem mount 上來,包括 /proc,/sys,/dev/pts,以及 /dev/shm 等。
使用 cp -a 可以將 server 端的檔案、目錄、包括權限、時間、所有者等資料全部拷備過來。但在拷備時要注意有些目錄底下的檔案是 kernel 在運作時所產生的虛擬檔案,而不是實際檔案,這些檔案是不能拷過來的,否則的話將會造成 client 這邊系統重開機運作時,kernel 產生不正確的虛擬檔案,而無法運作。因此,對於這些目錄,我們只要準備空目錄就好,包括:
這裡我採用 grub,其指令為:
這裡主要要設新灌好的系統的 IP、hostname、以及其網路介面。IP 與網路介面的設定檔各家 Linux 不同:
這裡包括建立使用者的 user home directories、以及為他們準備一些必要的檔案等。可以參考 /etc/passwd 來為已有帳號的 user 來準備他們所需的環境。
例如 smartd 的設定檔 (修改硬碟的 device)、或者 sendmail 相關的 hostname 設定等。
在重開機前,必須將已 mount 上來的 NFS 及硬碟上的 filesystem 全部 umount 掉。
sfdisk /dev/hda < input_file
其中 input_file 的內容就是上述的 input 檔。
透過 NFS 拷備 Linux 系統
/proc, /sys, selinux, /media (for Fedora), /dev (for udev facility)
設定 boot loader
grub-install --no-floppy --recheck --root-directory=/mnt/new /dev/
設定網路
建立使用者環境
其他 /etc 底下的設定檔調整
工作完成,準備重開機


