需要在 Ubuntu 14.04 LTS 上创建 kickstart 服务器的分步过程
答案1
总结;重新打包自定义 iso 后使用 isohybrid
为了制作这个 usb,我使用了安装了 Ubuntu 14.04 的虚拟机。这里的目标是制作一个可启动的 usb,不需要选择键盘布局、语言等。我们希望自动安装 Ubuntu 服务器。
我们需要获取将要为我们的安装定制的 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 loop 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
现在创建我们将用于创建可启动 USB 的新 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
为了完成 USB 的可启动 iso,我们需要对其进行混合。
sudo isohybrid /opt/autoinstall.iso
混合后,我们可以将其推送到 USB 驱动器。我的虚拟机中的 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 和 preseed 文件。