需要在 Ubuntu 14.04 LTS 上建立 kickstart 伺服器的逐步過程
答案1
長話短說;重新打包自訂 iso 後使用 isohybrid
為了製作這個 USB,我使用了安裝了 Ubuntu 14.04 的虛擬機器。這裡的目標是製作一個不需要選擇鍵盤佈局、語言等的可啟動 USB。
我們需要取得要為安裝自訂的 ubuntu 映像。
wget http://releases.ubuntu.com/14.04/ubuntu-14.04.2-server-amd64.iso
我們需要一個地方來掛載解壓縮後的 iso 檔案。
sudo mkdir -p /mnt/iso
為它建立掛載點後,現在我們必須掛載它。這將公開 iso 中保存的文件。不幸的是,這些文件將是唯讀的
。 sudo mount -o 循環 ubuntu-14.04.2-server-amd64.iso /mnt/iso
為了修改文件,我們需要將它們複製到可以修改它們的目錄中,因此我們將建立該目錄,然後將文件複製到其中。
sudo mkdir -p /opt/ubuntuiso sudo cp -rT /mnt/iso /opt/ubuntuiso
我們的新工作目錄將是 /opt/ubuntuiso
cd /opt/ubuntuiso
為了避免在安裝過程中提示選擇語言,我們需要告訴它我們要使用什麼語言。在這個例子中,使用 en 因為我說英語。
echo en | sudo tee isolinux/lang
現在我們實際上將使用一個名為 system-config-kickstart 的程式來建立 kickstart 檔案。所以我們確保它已安裝然後運行它。
sudo apt-get install system-config-kickstart system-config-kickstart
然後將 GUI 中的檔案儲存為
/opt/ubuntuiso/
.這應該會保存一個名為 ks.cfg 的檔案。我的 ks.cfg 如下圖所示#Generated by Kickstart Configurator #platform=AMD64 or Intel EM64T #System language lang en_US #Language modules to install langsupport en_US #System keyboard keyboard us #System mouse mouse #System timezone timezone America/Denver #Root password rootpw --disabled #Initial user user ubuntu --fullname "ubuntu" --iscrypted --password $1$MQ0zGB4W$pwjX8nolgr2RJch2Omamt. #Reboot after installation reboot #Use text mode install text #Install OS instead of upgrade install #Use CDROM installation media cdrom #System bootloader configuration bootloader --location=mbr #Clear the Master Boot Record zerombr yes #Partition clearing information clearpart --all --initlabel #Disk partitioning information part /boot --fstype ext2 --size 100 --asprimary part swap --recommended part / --fstype ext4 --size 1 --grow #System authorization infomation auth --useshadow --enablemd5 #Network information network --bootproto=dhcp --device=eth0 #Firewall configuration firewall --disabled #Do not configure the X Window System skipx %post #!/bin/bash exec < /dev/tty6 > /dev/tty6 chvt 6 echo 'Acquire::http { Proxy "http://10.2.4.27"; };' > /etc/apt/apt.conf.d/02proxy apt-get update apt-get -y upgrade apt-get -y dist-upgrade apt-get install -y git ansible openssh-server vim chvt 1
後記中有一些劫持(後面的所有內容
%post
)。以 exec 開頭的行和下面的行 (chvt 6
) 強制安裝程式顯示此後執行的命令的輸出。原因是安裝過程中載入欄不會移動,並且可能看起來安裝程式已掛起。下面的行執行代理,用於本地網路上的 apt-cache。最後一行 (chvt 1
) 將輸出還原到主安裝程式。現在我們需要新增預置文件,這樣我們就可以避免其他問題。
echo 'd-i partman/confirm_write_new_label boolean true d-i partman/choose_partition \ select Finish partitioning and write changes to disk d-i partman/confirm boolean true' | sudo tee ks.preseed
現在我們需要告訴安裝程式我們剛剛儲存的文件,因此我們需要修改 isolinux/txt.cfg。首先我們需要使文件可寫入。
sudo chmod +w isolinux/txt.cfg
然後我們需要替換以下部分的附加行
label install menu label ^Install Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
將附加行替換為
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
儲存並退出文件。我們還需要確保將檔案恢復到原始狀態,因此刪除寫入權限。
sudo chmod -w isolinux/txt.cfg
現在建立新的 iso 文件,我們將用它來建立可啟動 USB。
sudo mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso
為了最終確定 USB 的可啟動 iso,我們需要對其進行混合。
sudo isohybrid /opt/autoinstall.iso
混合完成後,我們就可以將其推送到U盤了。我的虛擬機器中的 USB 驅動器顯示在 中
/dev/sdb
,但需要使用正確的標籤,因此相應替換 X 確保 USB 驅動器已卸載。sudo umount /dev/sdX
最後將 iso 推送到 USB 隨身碟。 (請注意 **這會破壞目標裝置上的資料 - 確保您知道自己在做什麼)
sudo dd if=/opt/autoinstall.iso of=/dev/sdX
現在您的 USB 隨身碟應該已準備好安裝!
答案2
完整的解決方案:
重新製作 CD,下載非圖形 Ubuntu 安裝 ISO(伺服器或備用安裝 CD)並安裝它。在本例中,您的 Ubuntu 14 ISO。
sudo mkdir -p /mnt/iso
sudo mount -o loop ubuntu.iso /mnt/iso
將相關檔案複製到不同目錄
sudo mkdir -p /opt/ubuntuiso
sudo cp -rT /mnt/iso /opt/ubuntuiso
防止語言選擇選單
cd /opt/ubuntuiso
echo en | sudo tee isolinux/lang
使用GUI程式新增一個名為的kickstart文件ks.cfg
sudo apt-get install system-config-kickstart
system-config-kickstart # save file to ks.cfg
若要新增安裝包,請%package
在 kickstart 檔案中新增一個部分ks.cfg
,並在檔案末尾附加ks.cfg
類似這樣的內容。
%packages
@ ubuntu-server
openssh-server
ftp
build-essential
這將安裝 ubuntu-server“捆綁包”,並添加openssh-server
、ftp
和build-essential
軟體包。
新增預置文件,以抑制其他問題
echo 'd-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition \
select Finish partitioning and write changes to disk
d-i partman/confirm boolean true' | sudo tee ks.preseed
設定引導命令列以使用 kickstart 和 preseed 文件
sudo nano isolinux/txt.cfg
搜尋
label install
menu label ^Install Ubuntu Server
kernel /install/vmlinuz
append file=/cdrom/preseed/ubuntu-server.seed vga=788 initrd=/install/initrd.gz quiet --
將ks=cdrom:/ks.cfg
和添加preseed/file=/cdrom/ks.preseed
到附加行。您可以刪除quiet
和vga=788
字樣。它應該看起來像
append file=/cdrom/preseed/ubuntu-server.seed initrd=/install/initrd.gz ks=cdrom:/ks.cfg preseed/file=/cdrom/ks.preseed --
現在建立一個新的iso
sudo mkisofs -D -r -V "ATTENDLESS_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso
就是這樣。您將擁有一張 CD,一旦您從 Ubuntu 系統啟動,就可以安裝它,而無需任何輸入。
根據需要調整 ks.cfg 和預置文件。