diff options
author | Fathi Boudra <fathi.boudra@linaro.org> | 2016-11-24 21:09:58 +0200 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2016-11-24 21:09:58 +0200 |
commit | ea23bcbdea87d82df196d18ff58663cde5853933 (patch) | |
tree | 93181c18f9fbb1aa2ae1b54654206402835fd0b4 | |
parent | 6fec3350a6943cd1edcabc04af944d27efa7f6ae (diff) |
leg-cloud-image: separate shell step into an included builder.sh script
* use include-raw to include builders.sh script
* split d-i preseed and anaconde kickstart configuration in plain text
file
* publish into a separate step to avoid token timeout
* configure libvirt uri_default at runtime
* fix shell expansion syntax in centos ks (dracut call)
Change-Id: I12b9f765210174ce1b92313770c34ceca40c9f41
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
-rw-r--r-- | leg-cloud-image-centos.yaml | 158 | ||||
-rw-r--r-- | leg-cloud-image-debian.yaml | 113 | ||||
-rwxr-xr-x | leg-cloud-image/centos/builders.sh | 60 | ||||
-rw-r--r-- | leg-cloud-image/centos/centos7-aarch64.ks | 95 | ||||
-rwxr-xr-x | leg-cloud-image/debian/builders.sh | 60 | ||||
-rw-r--r-- | leg-cloud-image/debian/preseed.cfg | 50 |
6 files changed, 273 insertions, 263 deletions
diff --git a/leg-cloud-image-centos.yaml b/leg-cloud-image-centos.yaml index b6333d33c4..2462ab0ccb 100644 --- a/leg-cloud-image-centos.yaml +++ b/leg-cloud-image-centos.yaml @@ -21,165 +21,13 @@ wrappers: - timestamps builders: + - shell: + !include-raw: leg-cloud-image/centos/builders.sh - linaro-publish-token: host: builds.96boards.org - shell: | #!/bin/bash - export image_name=centos7-cloud-image - - sudo apt-get -q=2 update - sudo apt-get -q=2 install -y --no-install-recommends qemu-utils virtinst libguestfs-tools libvirt-bin - - echo 'uri_default = "qemu+tcp://172.17.0.1/system"' | sudo tee -a /etc/libvirt/libvirt.conf - - virt-host-validate - - sudo virsh pool-list --all - sudo virsh net-list --all - - set -ex - - trap cleanup_exit INT TERM EXIT - - cleanup_exit() - { - cd ${WORKSPACE} - sudo virsh destroy ${image_name} || true - sudo virsh undefine ${image_name} || true - sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2 - rm -rf out - } - - cat > centos7-aarch64.ks << EOF - reboot - eula --agreed - text - firstboot --disable - ignoredisk --only-use=vda - keyboard --vckeymap=us --xlayouts='us' - lang en_GB.UTF-8 - network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --hostname=localhost.localdomain - repo --name=os --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ - repo --name=extras --baseurl=http://mirror.centos.org/altarch/7/extras/aarch64/ - repo --name=updates --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ - rootpw --plaintext root - user --name centos --plaintext --password centos --homedir /home/centos --groups wheel - timezone Europe/Warsaw --isUtc - bootloader --boot-drive=vda - autopart --type=plain - clearpart --all --initlabel --drives=vda - - %packages - @core - cloud-init - chrony - nfs-utils - rsync - tar - yum-utils - dracut-config-generic - dracut-norescue - -aic94xx-firmware - -alsa-firmware - -alsa-lib - -alsa-tools-firmware - -iprutils - -ivtv-firmware - -iwl100-firmware - -iwl1000-firmware - -iwl105-firmware - -iwl135-firmware - -iwl2000-firmware - -iwl2030-firmware - -iwl3160-firmware - -iwl3945-firmware - -iwl4965-firmware - -iwl5000-firmware - -iwl5150-firmware - -iwl6000-firmware - -iwl6000g2a-firmware - -iwl6000g2b-firmware - -iwl6050-firmware - -iwl7260-firmware - %end - - %post - # Needed for install, not so much for cloud. - yum -C -y remove firewalld --setopt="clean_requirements_on_remove=1" - yum -C -y remove avahi\* Network\* - - cat > /etc/sysconfig/network << EO - NETWORKING=yes - NOZEROCONF=yes - EO - - # Ensure we're not backing in a mac addr. - cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EO - DEVICE="eth0" - BOOTPROTO="dhcp" - ONBOOT="yes" - TYPE="Ethernet" - USERCTL="yes" - PEERDNS="yes" - IPV6INIT="no" - PERSISTENT_DHCLIENT="1" - EO - - # Let mirrors know it's cloud - echo 'genclo' > /etc/yum/vars/infra - - # Fix selinux context - echo "Fixing SELinux contexts." - touch /var/log/cron - touch /var/log/boot.log - mkdir -p /var/cache/yum - /usr/sbin/fixfiles -R -a restore - - # make sure firstboot doesn't start - echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot - - # install updates (including kernel) from Linaro overlay - curl http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo > /etc/yum.repos.d/linaro-overlay.repo - yum update -y --nogpgcheck - - # make sure that resulting initramfs will have virtio storage drivers - echo 'add_drivers+="virtio-blk virtio-scsi"' > /etc/dracut.conf.d/add-virtio-modules.conf - dracut -f /boot/initramfs-`rpm -qa kernel|sed -e "s/kernel-//g"`.img `rpm -qa kernel|sed -e "s/kernel-//g"` - %end - EOF - - sudo virt-install \ - --name ${image_name} \ - --initrd-inject centos7-aarch64.ks \ - --extra-args "ks=file:/centos7-aarch64.ks" \ - --disk=pool=default,size=10,format=qcow2,bus=virtio \ - --memory 2048 \ - --location http://mirror.centos.org/altarch/7/os/aarch64/ \ - --noreboot - - set +ex - while [ true ]; do - sleep 1 - vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l) - [ "${vm_running}" -eq "0" ] && break - done - set -ex - - sudo virsh list --all - sudo virsh pool-list --all - sudo virsh net-list --all - - mkdir out - mv centos7-aarch64.ks out/ - sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 . - sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2 - # extract kernel and initramfs from image - # --unversioned-names may be handy to get vmlinuz/initrd.img names if needed - sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ . - sudo cp -a boot/*-reference.*.aarch64* out/ - sudo chown -R buildslave:buildslave out - # Publish test -d ${HOME}/bin || mkdir ${HOME}/bin wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py @@ -187,6 +35,8 @@ --server ${PUBLISH_SERVER} \ --link-latest \ out snapshots/developer-cloud/centos/cloud-image/${BUILD_NUMBER} + + rm -rf out publishers: - email: recipients: 'fathi.boudra@linaro.org marcin.juszkiewicz@linaro.org' diff --git a/leg-cloud-image-debian.yaml b/leg-cloud-image-debian.yaml index 57df64758a..97fe72b0e7 100644 --- a/leg-cloud-image-debian.yaml +++ b/leg-cloud-image-debian.yaml @@ -21,120 +21,13 @@ wrappers: - timestamps builders: + - shell: + !include-raw: leg-cloud-image/debian/builders.sh - linaro-publish-token: host: builds.96boards.org - shell: | #!/bin/bash - export image_name=debian-cloud-image - - sudo apt-get -q=2 update - sudo apt-get -q=2 install -y --no-install-recommends qemu-utils virtinst libguestfs-tools libvirt-bin - - echo 'uri_default = "qemu+tcp://172.17.0.1/system"' | sudo tee -a /etc/libvirt/libvirt.conf - - virt-host-validate - - sudo virsh pool-list --all - sudo virsh net-list --all - - set -ex - - trap cleanup_exit INT TERM EXIT - - cleanup_exit() - { - cd ${WORKSPACE} - sudo virsh destroy ${image_name} || true - sudo virsh undefine ${image_name} || true - sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2 - rm -rf out - } - - cat > preseed.cfg << EOF - d-i debian-installer/locale string en_US.UTF-8 - d-i localechooser/supported-locales multiselect en_US.UTF-8, en_GB.UTF-8 - d-i keyboard-configuration/xkb-keymap select us - d-i netcfg/choose_interface select auto - d-i netcfg/get_hostname string unassigned-hostname - d-i netcfg/get_domain string unassigned-domain - d-i netcfg/wireless_wep string - d-i mirror/country string manual - d-i mirror/http/hostname string ftp.debian.org - d-i mirror/http/directory string /debian - d-i mirror/http/proxy string - d-i passwd/root-login boolean false - d-i passwd/user-fullname string Debian User - d-i passwd/username string debian - d-i passwd/user-password password insecure - d-i passwd/user-password-again password insecure - d-i clock-setup/utc boolean true - d-i time/zone string UTC - d-i clock-setup/ntp boolean true - 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-lvm/confirm boolean true - d-i partman-lvm/confirm_nooverwrite boolean true - d-i 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 boolean true - 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 apt-setup/services-select multiselect security, updates, backports - d-i apt-setup/local0/repository string http://repo.linaro.org/ubuntu/linaro-overlay jessie main - d-i apt-setup/local0/comment string Linaro Overlay - d-i apt-setup/local0/source boolean true - d-i apt-setup/local0/key string http://repo.linaro.org/ubuntu/linarorepo.key - d-i pkgsel/upgrade select full-upgrade - tasksel tasksel/first multiselect standard - d-i pkgsel/include string openssh-server cloud-init cloud-utils/jessie-backports cloud-initramfs-growroot linux-image-reference-arm64 - popularity-contest popularity-contest/participate boolean false - d-i grub-installer/only_debian boolean true - d-i grub-installer/with_other_os boolean true - d-i grub-installer/bootdev string default - d-i finish-install/reboot_in_progress note - d-i preseed/late_command string \ - mkdir -p /target/boot/efi/EFI/BOOT ; \ - cp /target/boot/efi/EFI/debian/grubaa64.efi /target/boot/efi/EFI/BOOT/BOOTAA64.EFI - EOF - - sudo virt-install \ - --name ${image_name} \ - --initrd-inject preseed.cfg \ - --extra-args "interface=auto noshell auto=true DEBIAN_FRONTEND=text" \ - --disk=pool=default,size=10,format=qcow2,bus=virtio \ - --memory 2048 \ - --location http://ftp.debian.org/debian/dists/stable/main/installer-arm64/ \ - --noreboot - - set +ex - while [ true ]; do - sleep 1 - vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l) - [ "${vm_running}" -eq "0" ] && break - done - set -ex - - sudo virsh list --all - sudo virsh pool-list --all - sudo virsh net-list --all - - mkdir out - mv preseed.cfg out/debian-jessie-arm64-preseed.cfg - sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 . - sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2 - # extract kernel and initramfs from image - # --unversioned-names may be handy to get vmlinuz/initrd.img names if needed - sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ . - sudo cp -a boot/*-arm64 out/ - sudo chown -R buildslave:buildslave out - # Publish test -d ${HOME}/bin || mkdir ${HOME}/bin wget -q https://git.linaro.org/ci/publishing-api.git/blob_plain/HEAD:/linaro-cp.py -O ${HOME}/bin/linaro-cp.py @@ -142,6 +35,8 @@ --server ${PUBLISH_SERVER} \ --link-latest \ out snapshots/developer-cloud/debian/cloud-image/${BUILD_NUMBER} + + rm -rf out publishers: - email: recipients: 'fathi.boudra@linaro.org marcin.juszkiewicz@linaro.org' diff --git a/leg-cloud-image/centos/builders.sh b/leg-cloud-image/centos/builders.sh new file mode 100755 index 0000000000..1b3f06456c --- /dev/null +++ b/leg-cloud-image/centos/builders.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +export image_name=centos7-cloud-image + +sudo apt-get -q=2 update +sudo apt-get -q=2 install -y --no-install-recommends qemu-utils virtinst libguestfs-tools libvirt-bin + +default_gw=$(ip route show default 0.0.0.0/0 | cut -d' ' -f3) +sudo sed -i "/^uri_default/d" /etc/libvirt/libvirt.conf +echo "uri_default = \"qemu+tcp://${default_gw}/system\"" | sudo tee -a /etc/libvirt/libvirt.conf + +virt-host-validate + +sudo virsh pool-list --all +sudo virsh net-list --all + +set -ex + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + cd ${WORKSPACE} + sudo virsh destroy ${image_name} || true + sudo virsh undefine ${image_name} || true + sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2 +} + +wget -q https://git.linaro.org/ci/job/configs.git/blob_plain/HEAD:/leg-cloud-image/centos/centos7-aarch64.ks -O centos7-aarch64.ks + +sudo virt-install \ + --name ${image_name} \ + --initrd-inject centos7-aarch64.ks \ + --extra-args "ks=file:/centos7-aarch64.ks" \ + --disk=pool=default,size=10,format=qcow2,bus=virtio \ + --memory 2048 \ + --location http://mirror.centos.org/altarch/7/os/aarch64/ \ + --noreboot + +set +ex +while [ true ]; do + sleep 1 + vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l) + [ "${vm_running}" -eq "0" ] && break +done +set -ex + +sudo virsh list --all +sudo virsh pool-list --all +sudo virsh net-list --all + +mkdir out +mv centos7-aarch64.ks out/ +sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 . +sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2 +# extract kernel and initramfs from image +# --unversioned-names may be handy to get vmlinuz/initrd.img names if needed +sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ . +sudo cp -a boot/*-reference.*.aarch64* out/ +sudo chown -R buildslave:buildslave out diff --git a/leg-cloud-image/centos/centos7-aarch64.ks b/leg-cloud-image/centos/centos7-aarch64.ks new file mode 100644 index 0000000000..078c6d7d35 --- /dev/null +++ b/leg-cloud-image/centos/centos7-aarch64.ks @@ -0,0 +1,95 @@ +reboot +eula --agreed +text +firstboot --disable +ignoredisk --only-use=vda +keyboard --vckeymap=us --xlayouts='us' +lang en_GB.UTF-8 +network --bootproto=dhcp --device=eth0 --onboot=off --ipv6=auto --hostname=localhost.localdomain +repo --name=os --baseurl=http://mirror.centos.org/altarch/7/os/aarch64/ +repo --name=extras --baseurl=http://mirror.centos.org/altarch/7/extras/aarch64/ +repo --name=updates --baseurl=http://mirror.centos.org/altarch/7/updates/aarch64/ +rootpw --plaintext root +user --name centos --plaintext --password centos --homedir /home/centos --groups wheel +timezone Europe/Warsaw --isUtc +bootloader --boot-drive=vda +autopart --type=plain +clearpart --all --initlabel --drives=vda + +%packages +@core +cloud-init +chrony +nfs-utils +rsync +tar +yum-utils +dracut-config-generic +dracut-norescue +-aic94xx-firmware +-alsa-firmware +-alsa-lib +-alsa-tools-firmware +-iprutils +-ivtv-firmware +-iwl100-firmware +-iwl1000-firmware +-iwl105-firmware +-iwl135-firmware +-iwl2000-firmware +-iwl2030-firmware +-iwl3160-firmware +-iwl3945-firmware +-iwl4965-firmware +-iwl5000-firmware +-iwl5150-firmware +-iwl6000-firmware +-iwl6000g2a-firmware +-iwl6000g2b-firmware +-iwl6050-firmware +-iwl7260-firmware +%end + +%post +# Needed for install, not so much for cloud. +yum -C -y remove firewalld --setopt="clean_requirements_on_remove=1" +yum -C -y remove avahi\* Network\* + +cat > /etc/sysconfig/network << EO +NETWORKING=yes +NOZEROCONF=yes +EO + +# Ensure we're not backing in a mac addr. +cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EO +DEVICE="eth0" +BOOTPROTO="dhcp" +ONBOOT="yes" +TYPE="Ethernet" +USERCTL="yes" +PEERDNS="yes" +IPV6INIT="no" +PERSISTENT_DHCLIENT="1" +EO + +# Let mirrors know it's cloud +echo 'genclo' > /etc/yum/vars/infra + +# Fix selinux context +echo "Fixing SELinux contexts." +touch /var/log/cron +touch /var/log/boot.log +mkdir -p /var/cache/yum +/usr/sbin/fixfiles -R -a restore + +# make sure firstboot doesn't start +echo "RUN_FIRSTBOOT=NO" > /etc/sysconfig/firstboot + +# install updates (including kernel) from Linaro overlay +curl http://repo.linaro.org/rpm/linaro-overlay/centos-7/linaro-overlay.repo > /etc/yum.repos.d/linaro-overlay.repo +yum update -y --nogpgcheck + +# make sure that resulting initramfs will have virtio storage drivers +echo 'add_drivers+="virtio-blk virtio-scsi"' > /etc/dracut.conf.d/add-virtio-modules.conf +dracut -f /boot/initramfs-$(rpm -qa kernel|sed -e "s/kernel-//g").img $(rpm -qa kernel|sed -e "s/kernel-//g") +%end
\ No newline at end of file diff --git a/leg-cloud-image/debian/builders.sh b/leg-cloud-image/debian/builders.sh new file mode 100755 index 0000000000..1392b73d9f --- /dev/null +++ b/leg-cloud-image/debian/builders.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +export image_name=debian-cloud-image + +sudo apt-get -q=2 update +sudo apt-get -q=2 install -y --no-install-recommends qemu-utils virtinst libguestfs-tools libvirt-bin + +default_gw=$(ip route show default 0.0.0.0/0 | cut -d' ' -f3) +sudo sed -i "/^uri_default/d" /etc/libvirt/libvirt.conf +echo "uri_default = \"qemu+tcp://${default_gw}/system\"" | sudo tee -a /etc/libvirt/libvirt.conf + +virt-host-validate + +sudo virsh pool-list --all +sudo virsh net-list --all + +set -ex + +trap cleanup_exit INT TERM EXIT + +cleanup_exit() +{ + cd ${WORKSPACE} + sudo virsh destroy ${image_name} || true + sudo virsh undefine ${image_name} || true + sudo rm -f /var/lib/libvirt/images/${image_name}.qcow2 ${image_name}.qcow2 +} + +wget -q https://git.linaro.org/ci/job/configs.git/blob_plain/HEAD:/leg-cloud-image/debian/preseed.cfg -O preseed.cfg + +sudo virt-install \ + --name ${image_name} \ + --initrd-inject preseed.cfg \ + --extra-args "interface=auto noshell auto=true DEBIAN_FRONTEND=text" \ + --disk=pool=default,size=10,format=qcow2,bus=virtio \ + --memory 2048 \ + --location http://ftp.debian.org/debian/dists/stable/main/installer-arm64/ \ + --noreboot + +set +ex +while [ true ]; do + sleep 1 + vm_running=$(sudo virsh list --name --state-running | grep "^${image_name}" | wc -l) + [ "${vm_running}" -eq "0" ] && break +done +set -ex + +sudo virsh list --all +sudo virsh pool-list --all +sudo virsh net-list --all + +mkdir out +mv preseed.cfg out/debian-jessie-arm64-preseed.cfg +sudo cp -a /var/lib/libvirt/images/${image_name}.qcow2 . +sudo qemu-img convert -c -O qcow2 ${image_name}.qcow2 out/${image_name}.qcow2 +# extract kernel and initramfs from image +# --unversioned-names may be handy to get vmlinuz/initrd.img names if needed +sudo LIBGUESTFS_BACKEND=direct virt-copy-out -a ${image_name}.qcow2 /boot/ . +sudo cp -a boot/*-arm64 out/ +sudo chown -R buildslave:buildslave out diff --git a/leg-cloud-image/debian/preseed.cfg b/leg-cloud-image/debian/preseed.cfg new file mode 100644 index 0000000000..8e2c2c60d5 --- /dev/null +++ b/leg-cloud-image/debian/preseed.cfg @@ -0,0 +1,50 @@ +d-i debian-installer/locale string en_US.UTF-8 +d-i localechooser/supported-locales multiselect en_US.UTF-8, en_GB.UTF-8 +d-i keyboard-configuration/xkb-keymap select us +d-i netcfg/choose_interface select auto +d-i netcfg/get_hostname string unassigned-hostname +d-i netcfg/get_domain string unassigned-domain +d-i netcfg/wireless_wep string +d-i mirror/country string manual +d-i mirror/http/hostname string ftp.debian.org +d-i mirror/http/directory string /debian +d-i mirror/http/proxy string +d-i passwd/root-login boolean false +d-i passwd/user-fullname string Debian User +d-i passwd/username string debian +d-i passwd/user-password password insecure +d-i passwd/user-password-again password insecure +d-i clock-setup/utc boolean true +d-i time/zone string UTC +d-i clock-setup/ntp boolean true +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-lvm/confirm boolean true +d-i partman-lvm/confirm_nooverwrite boolean true +d-i 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 boolean true +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 apt-setup/services-select multiselect security, updates, backports +d-i apt-setup/local0/repository string http://repo.linaro.org/ubuntu/linaro-overlay jessie main +d-i apt-setup/local0/comment string Linaro Overlay +d-i apt-setup/local0/source boolean true +d-i apt-setup/local0/key string http://repo.linaro.org/ubuntu/linarorepo.key +d-i pkgsel/upgrade select full-upgrade +tasksel tasksel/first multiselect standard +d-i pkgsel/include string openssh-server cloud-init cloud-utils/jessie-backports cloud-initramfs-growroot linux-image-reference-arm64 +popularity-contest popularity-contest/participate boolean false +d-i grub-installer/only_debian boolean true +d-i grub-installer/with_other_os boolean true +d-i grub-installer/bootdev string default +d-i finish-install/reboot_in_progress note +d-i preseed/late_command string \ + mkdir -p /target/boot/efi/EFI/BOOT ; \ + cp /target/boot/efi/EFI/debian/grubaa64.efi /target/boot/efi/EFI/BOOT/BOOTAA64.EFI
\ No newline at end of file |