在 Ubuntu 14.04 上创建 kickstart 服务器的步骤

在 Ubuntu 14.04 上创建 kickstart 服务器的步骤

需要在 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-serverftpbuild-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到附加行。您可以删除quietvga=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 文件。

相关内容