如何创建自定义的Ubuntu Server ISO?


42

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

Answers:


61

下载

从此位置下载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

这将创建一个名为“ 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 只是可以用来识别选项的标签。
  • “安装自定义Ubuntu服务器”是将显示在引导菜单中的文本。
  • 如果要将菜单选项设置为默认选项,则只需将更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
  • 如果您在此处进行任何更改,安装程序将跳过该信息,以确认该信息是否有效。如果您没有更改选项,安装程序仍会要求您回答。
  • 您也可以下载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一起安装的灯服务器:

在此处输入图片说明

  • 如果要添加软件包“ 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 settings的说明/示例
  • 示例文件
  • 有关以下示例:本地化,网络配置,网络控制台,时钟和时间,分区
  • 在预置文件的末尾,您可以像这样添加软件包(随机示例):

    %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/
  • 第二行创建一个新的校验和,仅在添加软件包时才需要。
  • 3rd从您的项目中制作一个ISO,您可以将其刻录到DVD。

结果:

在此处输入图片说明

现在,您可以通过实际刻录和安装来尝试一下。我建议您将其用作虚拟机,因为它可以更快地测试最初创建的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)


可以用于台式机版本吗?
Braiam 2014年

非常感谢!!我真的很感谢您使此过程变得轻松顺畅!我只有一个问题,在我安装VirtualBox并选择安装我的自定义服务器后,出现了此错误消息!有效的XHTML
Shadin 2014年

是的,我做到了。实际上,我更喜欢您看一下我的种子文件[ megafileupload.com/en/file/493602 / ......我不确定我在文件末尾添加软件包的方式
Shadin

哦!谢谢!我会尽力而为,并尽快回复您。我也想知道在此过程中是否有任何方法可以从映像中删除任何其他服务器,例如邮件服务器,Web服务器,JBOSS ..等。我希望它仅包括postgresql及其软件包。
沙丁2014年

2
@shadin可以,请观看Lucio的工作方式;-)清理注释。Braiam:是的,可以。尽管在台式机上还有很多事情要改变,但这是一个开始(kickstart也可以在您进行修补时起作用,但是Ubuntu仍然支持它)。
Rinzwind 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.