我有一个任务,在多台装有 Windows 10 的机器上部署 Ubuntu Desktop 16.04。当然,为了高效地完成任务,我需要找到一种自动安装的方法。
我问了谷歌,找到了各种手册,试了所有的手册……这就是我坚持的地方。无论我做什么,我总是有选择安装类型问题。作为奖励,我了解到官方文档已经非常过时,有几种类型的语法,而且它们根本不起作用......
最终,我看到了隧道尽头的光明。为了让其他人不再像我一样挣扎,下面是操作方法。只要满足先决条件,它保证有效。
所以:
一个问题:
如果我有一台或多台已安装系统(例如 Microsoft Windows)的计算机,如何完全自动安装 Ubuntu 16.04?新系统准备就绪后,如何安装我需要的程序?
答案1
首先,您需要满足以下条件,否则不能保证它会起作用,例如,如果您的计算机有两个磁盘或选择 MBR 模式:
- Ubuntu 16.04;
- 机器只有一个磁盘;
- 您不需要其中的内容,因为所有数据都将被删除;
- 选择UEFI模式;
- 机器通过有线方式连接到互联网。如果没有,它会安装,但没有驱动程序和更新。
然后:
下载图片:
wget http://releases.ubuntu.com/16.04.3/ubuntu-16.04.3-desktop-amd64.iso
提取它:
cd folder xorriso -osirrox on -indev ubuntu-16.04.3-desktop-amd64.iso -extract / custom-iso
编辑 GRUB 的配置,例如
nano
:sudo nano boot/grub/grub.cfg
并添加以下内容:
if loadfont /boot/grub/font.pf2 ; then set gfxmode=auto insmod efi_gop insmod efi_uga insmod gfxterm terminal_output gfxterm fi set menu_color_normal=white/black set menu_color_highlight=black/light-gray set default=0 set timeout=1 menuentry "Install Ubuntu" { set gfxpayload=keep linux /casper/vmlinuz.efi file=/cdrom/preseed/ks.seed auto=true priority=critical debian-installer/locale=ru_Ru keyboard-configuration/layoutcode=us ubiquity/reboot=true languagechooser/language-name=Russian countrychooser/shortlist=RU localechooser/supported-locales=ru_RU.UTF-8 boot=casper automatic-ubiquity initrd=/casper/initrd.lz quiet splash noprompt noshell --- initrd /casper/initrd.lz }
注意以下参数区域设置、布局代码、语言选择器等并进行相应的编辑。
创建 Ubuntu 安装程序的配置,例如
nano
:sudo nano preseed/ks.seed
并添加以下内容:
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 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 d-i partman-md/confirm_nooverwrite boolean true d-i partman-lvm/confirm_nooverwrite boolean true d-i partman-efi/non_efi_system boolean true d-i debian-installer/locale string ru_RU d-i console-setup/ask_detect boolean false d-i console-setup/layoutcode string us d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain d-i netcfg/choose_interface select auto d-i clock-setup/utc-auto boolean true d-i clock-setup/utc boolean true d-i time/zone string Europe/Moscow d-i clock-setup/ntp boolean true d-i mirror/country string RU d-i apt-setup/multiverse boolean true d-i apt-setup/restricted boolean true d-i apt-setup/universe boolean true d-i passwd/user-fullname string User d-i passwd/username string user d-i passwd/user-password-crypted password sOlSUKAdMoT5M d-i passwd/user-default-groups string adm audio cdrom dip lpadmin sudo plugdev sambashare video 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 ubiquity ubiquity/success_command \ string echo "auto enp0s3" >> /etc/network/interfaces; \ echo "iface enp0s3 inet dhcp" >> /etc/network/interfaces; \ ifup enp0s3; \ apt-get update -y; \ in-target apt-get install -y openssh-server;
顺便说一句,请注意 Ubiquity 的一个未提及的功能。就在启动 success_command 部分之前它关闭了接口(有趣,对吧?),因此,要从互联网上安装某些东西,您必须先配置一个界面。
忘记提一下,这里用户的密码是“qwerty123”。我强烈建议之后更改它。
最后编译一个新的镜像:
sudo 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 ~/ubuntu/custom-http.iso ~/ubuntu/custom-iso/
您可以出发了。
就这些了。希望这个攻略能帮到大家。特别感谢 Just_a_fake_account 和其他人Linux Mint 论坛,他帮助解决了这个难题。