定制Ubuntu Installer的详细信息指南


9

我尝试通读预置自定义指南,但我不了解如何以及在何处修改哪些选项。我只能通过实际示例轻松地学习,对此我提出了这个问题。

我正在研究预播和自定义解决方案以仅执行一些特定任务:

  • 完全重写默认情况下安装的软件包,这与最小安装和带有--no-install-recommends标记非常相似apt-get
  • 将一些专有应用程序添加到默认安装列表
  • 在安装和实时会话中自动安装和安装专有驱动程序
  • 编辑默认安装的应用程序的默认配置文件
  • 指定分区以及权限
  • 修改安装程序媒体(CD / DVD / USB)中的软件包池,最好使用类似于apt-get和的命令行工具aptitude

谁能告诉我如何配置预置选项以仅执行上述操作?

注意:在池中添加/删除软件包后,我不理解GPG部分。

PS第三点特别重要。


为了清楚起见,“ Ubuntu安装程序”是指图形(唯一性)安装程序还是备用(debian-installer)安装程序?
komputes,2011年

@komputes,都可以。
Oxwivi 2011年

Answers:


6

有关前面的参考,您可能想参考Installation-guide-i386,其中包含以下前面的示例:

  /usr/share/doc/installation-guide-i386/example-preseed.txt.gz
  • 完全重写默认安装的软件包,就像最小化安装一样
  • 将一些专有应用程序添加到默认安装列表

要提供要安装的软件包的列表,您可能需要寻找以下行:

  tasksel tasksel/first   multiselect ubuntu-desktop

可以为任意数量的软件包或元软件包更改“ ubuntu-desktop”。

  • 在安装和实时会话中自动安装和安装专有驱动程序

除了指定所需的软件包(专用驱动程序)以外,我不确定如何实现。附带说明,您“装载”一个分区,您“装载”一个内核模块/驱动程序。

  • 编辑默认安装的应用程序的默认配置文件

要进行这些脚本化的更改,您可能需要研究以下内容:

  d-i preseed/late_command string ...

可以用诸如sed -i之类的任意命令替换“ ...”。

  • 指定分区以及权限

前面提到的示例中有一个分区部分。

随处可见

Casper支持预先设定,普遍存在可以预先设定许多值。以下是可以预见的与普遍性相关的一些变量:

ubiquity countrychooser/shortlist select US
ubiquity languagechooser/language-name select English
ubiquity localechooser/supported-locales multiselect en_US.UTF-8
ubiquity ubiquity/summary note
ubiquity ubiquity/reboot boolean true
ubiquity ubiquity/poweroff boolean true
ubiquity ubiquity/success_command string ...

如果“ ...”包含与上述提及的late_command相同的内容,则ubiquity读取success_command,di读取late_command。


有没有办法事先更改配置文件?如何防止安装推荐的软件包?如何添加专有软件包以进行脱机安装?
Oxwivi 2011年

听起来像您想创建自定义映像,如下所述: help.ubuntu.com/community/LiveCDCustomization 该映像还可以包含一个预置文件,您可以在其中更改配置文件,如前所述。另一种方法是,您还可以为某些定制创建自己的包。
komputes,2011年

好的,忘记更改配置,我是否需要自定义CD说明以包括默认情况下磁盘中不存在的软件包?
Oxwivi 2011年

我安装了映像,将内容复制到目录,修改了Ubiquity参数。如何定案?
Oxwivi 2011年

要完成/构建ISO图像追随题为“生产的光盘映像”在这里喋喋不休:help.ubuntu.com/community/LiveCDCustomization
komputes

3

以下内容将创建修改后的启动映像。将其刻录到CD,或将ISO插入VM以对其进行测试。您将需要cpiogenisoimage(这是软件包和可执行文件的名称)。

以下是Makefile的形式,但可以交互输入。${IN_ISO}指的是原始ISO映像(我使用的是该-alternative版本,建议您也这样做),并${OUT_ISO}指向所需的ISO名称。

# Extract the ISO image to mount/ and copy it to cdroot/
cdroot:
    mkdir -p mount
    sudo mount -o loop ${IN_ISO} mount
    mkdir cdroot
    cd cdroot && tar cf - ../mount --transform 's,^mount/,,' | tar xf -
    sudo umount mount && rm -r mount
    chmod -R a+rw cdroot

# Copy new files to the disk. Content of those files is posted below
prepare: cdroot
    cp isolinux.cfg cdroot/isolinux/isolinux.cfg
    test -e ./initrd.orig.gz || cp cdroot/install/initrd.gz ./initrd.orig.gz
    mkdir -p initrd
    cd initrd && gunzip <../initrd.orig.gz | sudo cpio -i && cd ..
    cp preseed.cfg initrd/preseed.cfg
    cd initrd && find . | cpio -o --format=newc | gzip -9 > ../cdroot/install/initrd.gz && cd ..
    sudo rm -rf initrd

# Create the ISO image. Make sure to use extensions for lower-case filenames    
iso: cdroot prepare
    genisoimage -o ${OUT_ISO} \
        -force-rr -J \
        -b isolinux/isolinux.bin -c isolinux/boot.cat \
        -no-emul-boot -boot-load-size 4 -boot-info-table \
        cdroot

您需要一些其他文件:

isolinux.cfg配置引导加载程序。您只希望它启动,然后自动完成安装过程。它看起来应该像这样:

default install
label install
  menu label ^Install my custom Ubuntu
  kernel /install/vmlinuz
  append auto initrd=/install/initrd.gz --
# Leave 2 seconds to abort or debug
prompt 1
timeout 20

这就是我们在实际配置安装之前所需的所有准备工作。下载前面的示例,并将其命名为preseed.cfg。仔细阅读并编辑任何内容。重要选项是:

# Locale
d-i debian-installer/locale string en_US
d-i time/zone string US/Eastern

# Partitioning. The following settings WILL OVERWRITE ANYTHING
# Don't insert the CD into your boss' computer ...
d-i partman-auto/method string regular
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true

# To create a normal user account.
d-i passwd/user-fullname string Ubuntu User
d-i passwd/username string ubuntu
d-i passwd/user-password password insecure
d-i passwd/user-password-again password insecure
d-i user-setup/allow-password-weak boolean true

# Package selection. Don't include ubuntu-desktop to significantly reduce the content
tasksel tasksel/first multiselect standard

#d-i preseed/early_command string driver installation commands (stuff needed to boot)
#d-i preseed/late_command string driver installation commands, custom software, etc.

但我建议您不要以上述示例为例,而是下载Ubuntu的示例并使用进行配置late_command,您可以从shell进行任何操作,包括下载并执行安装和配置自定义软件的脚本。例如,将此用作late_command

d-i preseed/late_command string in-target sh -c 'wget https://example.com/my/install.sh && sh install.sh'

或者,您可以放置install.sh在上面的initrd中,然后直接执行它。其内容可能如下所示:

#!/bin/sh
aptitude install -y x11-apps any-package-you-want-installed
wget http://proprietary.com/drivers/for/ubuntu.tar.gz -O- | tar xf - && sh drivers/instal.sh

这实际上取决于您专有的驱动程序安装例程的工作方式。


就像我在问题中说的那样,我想要有关如何精确列出所列任务的指导;如何重写将要安装的软件包?自动安装专有驱动程序如何?
Oxwivi 2011年

@Oxwivi编写一个脚本,该脚本将安装所需的所有内容,并使用下载并执行该脚本late_commandPackage selection是您可以用来安装自己的软件包的部分,但是您也可以在脚本中进行安装。
phihag 2011年

1
@Oxwivi您可以安装骑师,以后再aptitude purge jockey在脚本中将其删除。我不确定“安装任何类型的专有驱动程序的通用方法”是什么意思。这是安装任何受限制的驱动程序的通用方法,只需将要安装的驱动程序包放入taskel或aptitude install -y脚本中的脚本中,它将起作用。如果要使映像在多台计算机上工作,则可能必须找到一种方法向骑师询问所有适用的专有驱动程序。...
phihag 2011年

1
@Ocwivi ...但是,安装所有可用的专有驱动程序通常不是一个好主意:专有驱动程序通常是旧的,不受支持的并且需要其他非标准配置。另外,您必须确保在法律上允许您分发非免费的驱动程序。
phihag 2011年

1
@Oxwivi这种信任是没有根据的,因为任何人都可以将任何内容放入非免费存储库中。但是,这个讨论远远超出了这个问题的范围(关于预播)。您应该询问如何获得当前系统适用的专有驱动程序列表。
phihag 2011年
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.