如何创建自定义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 install
和label 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)