La instalación desatendida de VBoxManage de Debian/Ubuntu espera entrada

La instalación desatendida de VBoxManage de Debian/Ubuntu espera entrada

Cuando inicio una instalación desatendida con VirtualBox y Debian 9/Ubuntu 18.0.4, la instalación se detiene en la pantalla donde se debe seleccionar el país:

Selección de idioma en Debian 9 Selección de idioma en Ubuntu Server 18.0.4 LTS

Esta es mi línea de comando:

VBoxManage unattended install $VMNAME --user=$OSUSERNAME --password=$OSPASSWORD --country=UK --time-zone=UTC --hostname=testserver.local --iso=./build/$ISOFILENAME --install-additions

VBoxManage startvm $VMNAME --type headless

También probé los consejos dados en elDocumentación de VirtualBox, que enumera un parámetro adicional para el idioma:

VBoxManage unattended install $VMNAME --user=$OSUSERNAME --password=$OSPASSWORD --country=UK --time-zone=UTC --hostname=testserver.local --iso=./build/$ISOFILENAME --install-additions --language=en-US

... sin éxito. Este es el resultado de los scripts:

VBoxManage: info: Preparing unattended installation of Ubuntu_64 in machine 'testserver' (e643e8fd-28f9-466b-a390-5ca21df28a8b).
VBoxManage: info: Using values:
                           isoPath = /Users/me/Dev/vboxinstall/build/ubuntu-18.04.2-live-server-amd64.iso
                              user = TEST
                          password = TEST
                      fullUserName = 
                        productKey = 
                  additionsIsoPath = /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso
             installGuestAdditions = true 
              validationKitIsoPath = 
            installTestExecService = false
                            locale = en_US
                           country = US
                          timeZone = EAT
                             proxy = 
                          hostname = testserver.local
       packageSelectionAdjustments = 
                 auxiliaryBasePath = /Users/me/VirtualBox VMs/testserver/Unattended-e643e8fd-28f9-466b-a390-5ca21df28a8b-
                        imageIndex = 1
                scriptTemplatePath = /Applications/VirtualBox.app/Contents/MacOS/UnattendedTemplates/ubuntu_preseed.cfg
     postInstallScriptTemplatePath = /Applications/VirtualBox.app/Contents/MacOS/UnattendedTemplates/debian_postinstall.sh
                postInstallCommand = 
      extraInstallKernelParameters =  auto=true preseed/file=/cdrom/preseed.cfg priority=critical quiet splash noprompt noshell automatic-ubiquity debian-installer/locale=en_US keyboard-configuration/layoutcode=us languagechooser/language-name=English localechooser/supported-locales=en_US.UTF-8 countrychooser/shortlist=KE --
                          language = en-US
                  detectedOSTypeId = 
                 detectedOSVersion = 
                  detectedOSFlavor = 
               detectedOSLanguages = en-US
                   detectedOSHints = 
VBoxManage: info: VM 'testserver' (e643e8fd-28f9-466b-a390-5ca21df28a8b) is ready to be started (e.g. VBoxManage startvm).
Waiting for VM "testserver" to power on...
VM "testserver" has been successfully started.

¿Cómo puedo ejecutar una instalación 100% desatendida de Debian 9 o Ubuntu 18.0.4 LTS en VirtualBox?

Respuesta1

Hay un problema con syslinux en Debian desde Stretch en adelante: inicia automáticamente el instalador gráfico en lugar de iniciar la installentrada del menú.

Puede encontrar más detalles sobre el problema y una solución aquí: https://www.virtualbox.org/ticket/18410

Básicamente, la solución consiste en usar VirtualBox --auxiliary-base-pathpara especificar la ubicación donde Virtualbox debe extraer los archivos isolinux de la ISO y parchearlos.

aux_base_path="$(mktemp -d --tmpdir unattended-install-XXXXX)"

VBoxManage unattended install 'vm-name' --auxiliary-base-path "$aux_base_path"/ ...

( ...es un marcador de posición para sus otras opciones)

Ahora es posible parchear el archivo de configuración principal de isolinux para ejecutar la installentrada del menú de forma predeterminada en lugar del menú VESA:

sed -i 's/^default vesa.*/default install/' "$aux_base_path"/isolinux-isolinux.cfg

Ahora puede iniciar la máquina virtual y debería realizarse la instalación desatendida:

VBoxManage startvm 'vm-name'

Nota: los comandos anteriores son para Unix Shell (Linux y MacOS). Para la consola de Windows, use una ruta de carpeta existente como %UserProfile%/en lugar de "$aux_base_path/"y use:

$f = Get-Content isolinux-isolinux.cfg | %{$_ -replace "^default vesa.*","default install"}
$f > isolinux-isolinux.cfg

información relacionada