Answers:
下载
从此位置下载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/
mount: block device /discworld/Downloads/ubuntu-13.10-server-amd64.iso is write-protected, mounting read-only
图像示例如下:
执行中:
结果:
添加启动菜单选项
安装程序的菜单选项都存储在isolinux/txt.cfg
您可以创建新的选项之间default install
和label install
。
这将创建一个名为“ Install Custom Ubuntu server”的新选项,并将添加一个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
只是可以用来识别选项的标签。default install
改为default myownoption
。例:
并编辑文件(我使用了nano,但如果可用,请使用gedit,vim或其他编辑器)。这是我对该文件的补充,其中使用“ lampserver”作为标签,我的种子也将命名为“ lampserver”。
Kickstart(以图形方式设置配置文件)
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中存在错误,启动时会出错。这是一个解决方法。将补丁添加到文本文件中,保存(我将其命名为“补丁”)并提交:
完成后,ksconfig
它将启动配置编辑器,使您可以操纵许多选项。
有关可以设置的所有选项的说明,请参见《Red Hat Linux 7.2:Red Hat Linux官方定制指南》。
完成后,将更改保存到ks.cfg
文件中并将其复制到我们要更改的ISO中:
sudo cp ks.cfg ~/Downloads/newIso/preseed/ks-custom.cfg
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一起安装的灯服务器:
如果要添加软件包“ 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
。
在预置文件的末尾,您可以像这样添加软件包(随机示例):
%packages openssh-server mysql-server apache2
离线安装
如果您添加了软件包,但这些软件包不在ISO中,则安装程序将从软件包中下载这些软件包。如果没有有效的Internet连接,则将出现问题,因此您需要将所有这些软件包(和依赖项)添加到项目中,然后将其刻录到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/
结果:
现在,您可以通过实际刻录和安装来尝试一下。我建议您将其用作虚拟机,因为它可以更快地测试最初创建的ISO(否则您将一直重启)。
在安装VirtualBox之后,我得到以下菜单:
找虫子
安装时遇到1个问题:未选择默认值。
沙丁 从您的种子文件中进行评论
### 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服务器的taskel行(即Apache,Mysql,Php)