如何在现有操作系统的磁盘上无人值守安装 Ubuntu 16.04

如何在现有操作系统的磁盘上无人值守安装 Ubuntu 16.04

我有一个任务,在多台装有 Windows 10 的机器上部署 Ubuntu Desktop 16.04。当然,为了高效地完成任务,我需要找到一种自动安装的方法。

我问了谷歌,找到了各种手册,试了所有的手册……这就是我坚持的地方。无论我做什么,我总是有选择安装类型问题。作为奖励,我了解到官方文档已经非常过时,有几种类型的语法,而且它们根本不起作用......

最终,我看到了隧道尽头的光明。为了让其他人不再像我一样挣扎,下面是操作方法。只要满足先决条件,它保证有效。

所以:

一个问题

如果我有一台或多台已安装系统(例如 Microsoft Windows)的计算机,如何完全自动安装 Ubuntu 16.04?新系统准备就绪后,如何安装我需要的程序?

答案1

首先,您需要满足以下条件,否则不能保证它会起作用,例如,如果您的计算机有两个磁盘或选择 MBR 模式:

  • Ubuntu 16.04;
  • 机器只有一个磁盘;
  • 您不需要其中的内容,因为所有数据都将被删除;
  • 选择UEFI模式;
  • 机器通过有线方式连接到互联网。如果没有,它会安装,但没有驱动程序和更新。

然后:

  1. 下载图片:

    wget http://releases.ubuntu.com/16.04.3/ubuntu-16.04.3-desktop-amd64.iso
    
  2. 提取它:

    cd folder
    xorriso -osirrox on -indev ubuntu-16.04.3-desktop-amd64.iso -extract / custom-iso
    
  3. 编辑 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  
    }  
    

    注意以下参数区域设置、布局代码、语言选择器等并进行相应的编辑。

  4. 创建 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”。我强烈建议之后更改它。

  5. 最后编译一个新的镜像:

    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 论坛,他帮助解决了这个难题。

相关内容