当前位置: 首页>>技术教程>>正文


如何创建完全无人值守的Ubuntu Desktop 16.04.1 LTS安装?

, ,

问题描述

Purpose

我想完全无人值守地安装Ubuntu Desktop 16.04.1 LTS。放入ISO CD并走开。

Issues

  • 启动参数不正确

  • 问题仍在被问及需要鼠标点击

  • 使用kickstart /preseed的复杂答案

  • 文档示例没有按照规定工作,特别是来自partman和ubunutu

我遇到了这个帖子我如何创建完全无人值守的Ubuntu安装?,它接近我需要的东西,但是因为它是Ubuntu Server而没有完全达到我所需要的。帖子建议使用”non-graphical” Ubuntu安装,但我找不到Ubuntu桌面的non-graphical安装,这是有道理的。我尝试调整这些步骤,让它适用于Ubuntu Desktop 16.04.1 LTS。

使用的文档

我使用了以下所有资源……

显然我不能包括我的所有资源,因为askubuntu不允许超过2个链接。嗯,这不是很有帮助 – 所以这里只是一个列表:

  • AskUbuntu

  • Ubuntu install.en.pdf

  • 预先存在的例子

  • Ubiquity安装程序文档

  • Partman文档和示例

  • 分区配方解释3个数字及其权重

  • 一个更复杂的预定示例

现行解决方案

我目前创建了一个无人参与的安装,但不确定它是否正确 – 这意味着我应该编辑isolinux /isolinux.cfg

我链接的帖子和Ubuntu桌面图片之间存在许多差异。这是我的解决方案:

步骤1

安装Ubuntu ISO,以便我可以将内容复制到另一个目录,然后编辑相关文件。

mkdir -p /mnt/iso
mount -o loop ubuntu.iso /mnt/iso

第2步

然后我将ISO文件复制到另一个目录进行编辑。

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

第3步

我编辑了isolinux/isolinux.cfg文件并用以下内容替换了所有内容:

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

附加行非常长,以便于阅读,以下是我使用的所有选项:

file=/cdrom/ks.preseed 
auto=true 
priority=critical 
debian-installer/locale=en_US 
keyboard-configuration/layoutcode=us 
ubiquity/reboot=true 
languagechooser/language-name=English 
countrychooser/shortlist=US 
localechooser/supported-locales=en_US.UTF-8 
boot=casper 
automatic-ubiquity 
initrd=/casper/initrd.lz 
quiet 
splash 
noprompt 
noshell

我发现所有这些启动参数都需要完全无人值守的安装。对于Ubuntu Server,它可能会有所不同。

第4步

我尝试使用并创建了许多预置文件,但我发现越复杂,出错的可能性就越大。这是我目前使用上述isolinux.cfg文件的简单预置文件。

### Partitioning
d-i partman-auto/disk string /dev/sda
d-i partman-auto/method string regular
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/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

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i base-installer/kernel/override-image string linux-server
d-i base-installer/kernel/override-image string linux-image-amd64
d-i mirror/country string US
d-i mirror/http/proxy string
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true
d-i pkgsel/install-language-support boolean false
tasksel tasksel/first multiselect ubuntu-desktop

# Users
d-i passwd/user-fullname string Liason
d-i passwd/username string liason
d-i passwd/user-password-crypted password [crpyt 3]
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password [crypt 3]
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands

我没有包含加密密码,因此如果您尝试使用此预置文件,请将其更改为加密密码。 Here是3种密码输入方式。

第5步

我从/opt/ubuntuiso/目录创建了新的ISO。

mkisofs -D -r -V ATTENDLESS_UBUNTU -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /opt/autoinstall.iso /opt/ubuntuiso

第6步

我最终使用Virtualbox进行了测试,并创建了一个完全无人值守的安装。

Questions

我应该编辑isolinux/isolinux.cfg文件吗?

在另一篇文章中,似乎他们能够编辑isolinux/txt.cfg文件并且能够使其工作。我尝试使用isolinux/txt.cfg大约一个小时,但它没有用。

有没有人有一个更复杂的partman配方直接指定分区?还是工作的LVM设置?我尝试使用一个简单的LVM设置,但它重新启动后它将无法启动,只会坐黑屏。此外,我在文档中列出的预备示例中没有一个工作过。

感谢您的任何帮助。

最佳解决方法

Answering

我给了它一些时间,从最初问我的问题,看看是否有任何其他的解决方案,但它看起来像我提出的解决方案,而等待是我见过的唯一可行的解​​决方案。

Misconception

由于这是很多混乱的根源,我会尽力清理它。当我专门尝试创建无人参与的Ubuntu 16桌面映像安装时,似乎有些答案试图使用Ubuntu 16 Server映像。由于d-i(debian安装程序)和普遍存在的实现差异,出现了这个问题。由于服务器映像会引起注意并使用预置文件中的所有d-i命令,因此我提出的大多数问题都与服务器映像无关。但是,由于无处不在作为Desktop映像的安装程序的实现,许多d-i命令被忽略,并且您非常有限并且缺少大量文档。

找到文档链接

  • Here是Ubiquity的链接忽略了preseed /late_command(我相信它也忽略了preseed /early_command)

  • Here是Ubiquity文档,它讨论哪些安装程序组件不会在Ubiquity中使用,但正如您将注意到的那样,即使在本文档中它也说明了preseed /early_command,但我会对其进行彻底测试以验证它,因为它似乎不起作用我(我承认我没有严格测试early_command所以我可能错了)。

成功的过程

这是我成功创建无人值守的Ubuntu Desktop 16.04 LTS iso的过程。

Mount Ubuntu ISO

您需要安装ISO文件,以便编辑相关文件。

mkdir -p /mnt/iso
mount -o loop ~/Downloads/ubuntu-16.04.1-desktop-amd64.iso /mnt/iso

复制ISO文件

我们需要将挂载的ISO中的文件复制到不同的目录,以便我们编辑它们。随意使用您喜欢的任何目录,由于另一个how-to,我选择了/opt目录,但/tmp可以很容易地使用。

mkdir -p /opt/ubuntuiso
cp -rT /mnt/iso /opt/ubuntuiso

编辑txt.cfg文件

在这里,我们将编辑/opt/ubuntuiso/isolinux/txt.cfg文件并自定义我们的引导参数以获得完全无人参与的安装,其中包括一个预置文件。使用您选择的任何编辑器:

#default live
#label live
#  menu label ^Try Ubuntu without installing
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash ---
#label live-install
#  menu label ^Install Ubuntu
#  kernel /casper/vmlinuz.efi
#  append  file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity initrd=/casper/initrd.lz quiet splash ---
#label check
#  menu label ^Check disc for defects
#  kernel /casper/vmlinuz.efi
#  append  boot=casper integrity-check initrd=/casper/initrd.lz quiet splash ---
#label memtest
#  menu label Test ^memory
#  kernel /install/mt86plus
#label hd 
#  menu label ^Boot from first hard disk
#  localboot 0x80

default live-install
label live-install
  menu label ^Install Ubuntu
  kernel /casper/vmlinuz.efi
  append  file=/cdrom/ks.preseed auto=true priority=critical debian-installer/locale=en_US keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=English countrychooser/shortlist=US localechooser/supported-locales=en_US.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell ---

请注意以下几点:

  • 我注释掉了文件中的所有原始文本。

  • 我添加了所有文本,包括底部的“默认live-install”

  • 我将preseed文件命名为”ks.preseed”,它将位于ISO的顶级目录中(/opt /ubuntuiso)

使用或创建预置文件

请谨慎使用已存在的preseed文件!我还没有发现任何正常工作。这并不是说它们不存在,我只是没有找到任何相当多的搜索。有许多方法可以配置预置文件,但我发现有许多选项可以忽略,在上面链接的Ubiquity文档和preseed /late_command与ubiquity /success_command的链接中概述。我包括我的简单工作preseed文件,该文件适用于上面的txt.cfg文件。

对于netcfg /get_hostname字符串和netcfg /get_domain字符串,您可以放置​​任何您想要的字符串。我使用了unassigned-hostname和unassigned-domain,因为我稍后会通过脚本编写过程对其进行更改。

对于要在安装后运行的任何自定义命令,您需要使用:

ubiquity ubiquity/success_command string

跟随您要运行的任何命令。注意使用”;\”继续使用字符串并使用”/target”更改与安装的新系统有关的任何内容。

# Partitioning
# Old style using d-i command
#d-i partman-auto/disk string /dev/sda
#d-i partman-auto/method string regular
#d-i partman-lvm/device_remove_lvm boolean true
#d-i partman-md/device_remove_md boolean true
#d-i partman-auto/choose_recipe select atomic

# Newer ubiquity command
ubiquity partman-auto/disk string /dev/sda
ubiquity partman-auto/method string regular
ubiquity partman-lvm/device_remove_lvm boolean true
ubiquity partman-md/device_remove_md boolean true
ubiquity partman-auto/choose_recipe select atomic

# This makes partman automatically partition without confirmation
d-i partman-partitioning/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

# Locale
d-i debian-installer/locale string en_US
d-i console-setup/ask_detect boolean false
d-i console-setup/layoutcode string us

# Network
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain
d-i netcfg/choose_interface select auto

# Clock
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
d-i time/zone string US/Pacific
d-i clock-setup/ntp boolean true

# Packages, Mirrors, Image
d-i mirror/country string US
d-i apt-setup/multiverse boolean true
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# Users
d-i passwd/user-fullname string User
d-i passwd/username string user
d-i passwd/user-password-crypted password yourEncryptedPasswd
d-i passwd/user-default-groups string adm audio cdrom dip lpadmin sudo plugdev sambashare video
d-i passwd/root-login boolean true
d-i passwd/root-password-crypted password rootEncryptedPasswd
d-i user-setup/allow-password-weak boolean true

# Grub
d-i grub-installer/grub2_instead_of_grub_legacy boolean true
d-i grub-installer/only_debian boolean true
d-i finish-install/reboot_in_progress note

# Custom Commands
ubiquity ubiquity/success_command string \
  sed -i -e 's/dns=dnsmasq/#dns=dnsmasq/' /target/etc/NetworkManager/NetworkManager.conf ;\
  cp -a /cdrom/scripts/ /target/root/ ;\
  cp -a /cdrom/salt/ /target/root/

请注意这些事情,因为我将它们留在了说明目的,它们在您的预置命令中可能会有所不同。

  • 您需要添加用户/root密码。 Here是显示3种不同方法来生成crypt 3密码的链接。

  • 您可能希望更改用户分配到的组。

  • 你肯定想要改变success_command。我留下它来展示如何格式化以及如何使用/target环境。

创建新的ISO

创建ISO以便您可以测试您的预置文件。如果您使用或自己制作,则需要对其进行测试,因为这可能是您的流程失败的地方。我编写了一个用于快速测试的脚本,但您可以将预置文件指向http://托管的preseed文件,并以这种方式快速测试。

mkisofs -D -r -V "UNATTENDED_UBUNTU" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o /tmp/ubuntu16-desktop-unattended-install.iso /opt/ubuntuiso

您可以随意更改输出名称以及保存它的目录。

烧ISO

我建议在虚拟机等测试,一旦你有它工作,然后将其刻录到DVD。您现在应该有一个无人值守的Ubuntu Desktop 16.04 LTS安装DVD。

反馈,更正,错误

我一次性写完这篇文章,可能会有错误,拼写错误或一路搞砸的事情。如果有人试图这样做,如果您在此过程中遇到错误,请告诉我。请记住,如果你创建自己的preseed文件,我可能无法回答为什么你的无人值守安装被破坏而无法工作,因为普遍存在喜欢忽略而不在预置文件中做某些事情。我希望这对某人有帮助。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2852.html,未经允许,请勿转载。