我想创建一个自定义的 Ubuntu Server 12.04 ISO,但找不到明确的操作方法。我发现 Ubuntu-builder 是一款非常好的应用程序,可以创建自定义的 Ubuntu 桌面,但 Ubuntu Server 呢?
答案1
下载
从以下位置下载 Ubuntu 服务器 ISO此位置。您可以选择 32 位或 64 位。服务器版本的文件名将类似于以下内容:
ubuntu-13.10-server-i386.iso
ubuntu-13.10-server-amd64.iso
在以下说明中,我将假设使用 13.10 64 位版本,因此请根据您下载的内容调整命令。保留下载内容的副本,以便在需要改进项目时可以从原始下载中创建多个新版本。我还假设我们使用它~/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”。
快速启动(图形化设置配置文件)
Red Hat Kickstart 安装方法主要(但不是唯一)由 Red Hat Enterprise Linux 操作系统使用,以自动执行无人值守的操作系统安装和配置。
有关 Ubuntu 的预置/kickstart 的文档Ubuntu 对 kickstart(和预置)的支持有限;缺少的一个功能是用于预置的图形界面。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文件并将其保存
ks-custom.cfg
为~/Downloads/newIso/preseed/
。
我插入凭证的示例。我sudo ksconfig
使用命令行启动它。
并将其保存到项目中:
预播种(手动设置配置文件)
预播种提供了一种设置安装过程中所提问题的答案的方法,而无需在安装运行时手动输入答案。这使得大多数类型的安装完全自动化成为可能,甚至提供一些在正常安装过程中不可用的功能。
将正常安装的预种子复制到您自己的标签上:
sudo cp newIso/preseed/ubuntu-server.seed newIso/preseed/ubuntu-myownoption.seed
- 更改
myownoption
为您所使用的。
现在更改设置。使用debconf-get-selections
您debconf-utils
可以调查哪些参数可用于特定软件。
设置示例:
并添加要使用 taskel 安装的 lamp-server:
如果您想添加包“openssh”和“build-essential”,您可以将其包含在种子文件中:
d-i 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 设置的解释/示例。
- 预置文件示例
- 例子关于:本地化、网络配置、网络控制台、时钟和时间、分区
在预置文件的末尾,你可以添加包(随机示例),如下所示:
%软件包 openssh 服务器 mysql 服务器 apache2
离线安装
如果您添加软件包,而这些软件包不在 ISO 中,安装程序将从存储库下载这些软件包。如果您没有有效的互联网连接,这将会带来问题,因此您需要将所有这些软件包(和依赖项)添加到您的项目中,然后将它们刻录到 DVD 中。幸运的是,普通服务器 ISO 有很多空间,但请注意:CD 和/或 DVD 的大小是有限的。
下载您需要的所有 DEB 包并将它们存储在 中~/Downloads/
。新 ISO 上需要以下 2 个目录:
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/
- 第二行创建一个新的校验和,仅在添加包时需要。
- 第三个是从您的项目中制作一个 ISO,您可以将其刻录到 DVD。
结果:
现在您可以通过实际刻录和安装来试用它。我建议将其用作虚拟机,因为它可以更快地测试最初创建的 ISO(否则您将不断重新启动)。
安装 VirtualBox 后,我得到以下菜单:
漏洞搜寻
安装时遇到1个问题:未选择默认值。
Shadin。从你的种子文件在评论中
### Package Selection
tasksel tasksel/first multiselect Custom-Ubuntu-Server
d-i 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
d-i 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),就放弃使用 taskel 行