如何创建自定义Ubuntu Server ISO?

我想创建一个自定义的Ubuntu Server 12.04 ISO,但无法找到明确的方法来实现它。 我看到Ubuntu-builder是一个非常好的应用程序来创建自定义的Ubuntu桌面,但是Ubuntu Server呢?

下载

从此位置下载Ubuntu服务器ISO。 您可以选择32位或64位。 服务器版本的文件名将类似于:

ubuntu-13.10-server-i386.iso ubuntu-13.10-server-amd64.iso 

我将在以下说明中假设13.10 64位版本,因此请将命令调整为您所做的下载。 保留下载副本,以便在需要改进项目时从原始下载创建多个新版本。 我还假设我们使用~/Downloads/来完成我们的所有工作。

初始设置

这将在Downloads目录中创建2个目录“iso”和“isoNew”,挂载ISO并将内容从“iso”复制到“isoNew”以启动新项目。

将它放在一个文本文件中,保存它,使其可执行并执行它:

 # Ubuntu custom server # rinzwind askubuntu.com # topic: http://askubuntu.com/questions/409607/how-to-create-a-customized-ubuntu-server-iso/409651#409651 cd ~/Downloads/ mkdir -p iso newIso sudo mount -o loop ./ubuntu-13.10-server-amd64.iso ./iso sudo cp -r ./iso/* ./newIso/ sudo cp -r ./iso/.disk/ ./newIso/ sudo umount ./iso/ cd ~/Downloads/newIso/ 
  • 它将抛出1条错误消息: mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only

示例图像如何:

执行:

执行

结果:

结果

添加引导菜单选项

安装程序的菜单选项存储在isolinux/txt.cfg ,您可以在default installlabel install之间创建新选项。

这将创建一个名为“安装自定义Ubuntu服务器”的新选项,它将添加一个kickstart文件(kickstart文件用于更改选项;如下所述):

 label myownoption menu label ^Install Custom Ubuntu Server kernel /install/vmlinuz append file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/preseed/ks-custom.cfg -- 
  • myownoption只是一个标签,可用于识别您的选项。
  • “安装自定义Ubuntu服务器”是将显示在启动菜单中的文本。
  • 如果要将菜单选项设置为默认选项,则只需将default install更改为default myownoption

例:

在此处输入图像描述

并编辑文件(我使用nano但是如果可用则使用gedit,vim或其他编辑器)。 这是我对此文件的补充,我使用“lampserver”作为标签,我的种子也将命名为“lampserver”。

在此处输入图像描述

Kickstart (以图形方式设置配置文件)

Red Hat Kickstart安装方法主要(但不是唯一)由Red Hat Enterprise Linux操作系统使用,以自动执行无人值守的操作系统安装和配置。

有关Ubuntu预播/ kickstart的文档 。 Ubuntu对kickstart(和preseeding)的支持有限; 缺少的东西之一是用于预播的图形界面。 Kickstart 确实有这方面的选项(见图片),但这些似乎不适用于Ubuntu。 您可以手动执行此操作(请参阅下面的预置)。

安装和启动kickstart:

 sudo apt-get install system-config-kickstart ksconfig 

** 警告 **

kickstart在Ubuntu 13.10中被窃听,当它启动时,它会出错。 这是一个修复 。 将注释中的补丁放入文本文件中,保存(我将其命名为“patch”)并提交它:

在此处输入图像描述

之后ksconfig工作,它将启动一个配置编辑器,允许您操作很多选项。

在此处输入图像描述

在此处输入图像描述

有关您可以设置的所有选项的说明,请参阅Red Hat Linux 7.2:Red Hat Linux官方定制指南 。

完成后,将更改保存到ks.cfg文件并将其复制到我们正在更改的ISO:

 sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg 
  • 如果您在此更改任何内容,安装程序将跳过询问该信息是否有效。 如果您没有更改选项,安装程序仍会要求您回答。
  • 您还可以下载kickstart 文件并将其保存为~/Downloads/newIso/preseed/ ks-custom.cfg

我插入凭据的示例。 我sudo ksconfig开始使用sudo ksconfig

在此处输入图像描述

并将其保存到项目中:

在此处输入图像描述

预置 (手动设置配置文件)

Preseeding提供了一种在安装过程中设置问题答案的方法,而无需在安装运行时手动输入答案。 这使得可以完全自动化大多数类型的安装,甚至提供在正常安装期间不可用的一些function。

将正常安装的preseed复制到您自己的标签:

 sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed 
  • myownoption更改为您使用的。

现在更改设置。 使用debconf-get-selections debconf-utils debconf-get-selections debconf-utils您可以调查可以使用特定软件的参数。

设置示例:

在此处输入图像描述

并添加要与tasksel一起安装的lamp-server:

在此处输入图像描述

  • 如果要添加包“openssh”和“build-essential”,可以将其包含在种子文件中:

     di pkgsel/include string openssh-server build-essential 
  • openssh的一个例子:

     debconf-get-selections | grep openssh openssh-server ssh/vulnerable_host_keys note openssh-server ssh/use_old_init_script boolean true openssh-server ssh/encrypted_host_key_but_no_keygen note openssh-server ssh/disable_cr_auth boolean false 
  • 您可以将这些选项添加到custom-iso/preseed/ubuntu-myownoption.seed

  • 使用debconf设置的说明/示例 。
  • 一个示例预置文件
  • 有关示例 :本地化,网络配置,网络控制台,时钟和时间,分区
  • 在preseed文件的末尾,您可以添加包(随机示例),如下所示:

    %package openssh-server mysql-server apache2

离线安装

如果您添加软件包并且不在ISO中,则安装程序将从存储库中下载这些软件包。 如果您没有活动的互联网连接,这将是有问题的,因此您需要将所有这些包(和依赖项)添加到您的项目并将它们刻录到DVD。 幸运的是,普通的服务器ISO有很大的空间,但要注意:CD和/或DVD的大小有限。

下载所需的所有DEB包并将它们存储在~/Downloads/ 。 新ISO上需要这两个目录:

 mkdir -p ~/Downloads/newIso/dists/stable/extras/binary-i386 mkdir -p ~/Downloads/newIso/pool/extras/ sudo cp ~/Downloads/*.deb newIso/pool/extras/ 

这将使用新包更新我们的项目:

 cd ~/Downloads/newIso sudo apt-ftparchive packages ./pool/extras/ > dists/stable/extras/binary-i386/Packages sudo gzip -c ./dists/stable/extras/binary-i386/Packages | tee ./dists/stable/extras/binary-i386/Packages.gz > /dev/null cd ~/Downloads/ 

创建ISO

 cd ~/Downloads/ sudo md5sum `find ! -name “md5sum.txt” ! -path “./isolinux/*” -follow -type f` > md5sum.txt sudo mkisofs -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-13.10-myowninstall-amd64.iso -joliet-long newIso/ 
  • 第二行创建一个新的校验和,仅在添加包时才需要。
  • 第3个从您的项目中制作ISO,您可以刻录到DVD。

结果:

在此处输入图像描述

现在你可以通过实际刻录和安装来试试它。 我建议使用虚拟机,因为它可以更快地测试初始创建的ISO(否则你继续重启)。

安装VirtualBox后,我得到以下菜单:

在此处输入图像描述

寻找虫子

安装时遇到1个问题:未选择默认值。

Shadin。 来自你的种子文件评论

 ### Package Selection tasksel tasksel/first multiselect Custom-Ubuntu-Server di pkgsel/include string openssh-server build-essential %packages openssh-server postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3 

可能需要像这样:

 ### Package Selection tasksel tasksel/first multiselect lamp-server di pkgsel/include string openssh-server build-essential postgresql-9.1 postgresql-client-9.1 postgresql-contrib-9.1 libpq-dev postgresql-server-dev-9.1 pgadmin3 

抛弃你不需要LAMP服务器的任务线(即Apache,Mysql,Php)