Use this better tutorial: https://gist.github.com/karolba/a3f1c5f8d50c67f5a19e6c8f38e53e12 --------- 1. Reboot into the rescue image 2. Then execute these commands: ``` cd /dev/shm mkdir alpine cd alpine wget https://dl-cdn.alpinelinux.org/alpine/v3.16/releases/x86_64/alpine-minirootfs-3.16.0-x86_64.tar.gz tar xzvf alpine* mount -t proc /proc proc/ mount -t sysfs /sys sys/ mount --rbind /dev dev/ cp /etc/resolv.conf etc/resolv.conf chroot . ash -l apk add alpine-conf nano ``` 3. `nano /sbin/setup-disk` 4. Set return 1 to return 0 for is_efi 5. `nano /sbin/setup-alpine` 6. add `-s 0 -k virt` after `setup-disk` 7. `setup-alpine` 8. Then: ``` exit mount /dev/vda2 /mnt chroot /mnt /bin/ash cd /boot/grub nano grub.cfg ``` 9. Add `console=ttyS0` for line `linux /boot/vmlinuz-virt` 10. Then execute this commands for having a proper boot: ``` rc-update add modules boot rc-update add hostname boot rc-update add dmesg sysinit rc-update add devfs sysinit rc-update add acpid boot rc-update add bootmisc boot rc-update add hwclock boot rc-update add sysctl boot rc-update add syslog boot rc-update add mount-ro shutdown rc-update add mdev sysinit rc-update add killprocs shutdown rc-update add hwdrivers sysinit rc-update add crond rc-update add local ``` 10. Add your key in /mnt/root/.ssh/authorized_keys 11. `umount /mnt` 12. Reboot Extra for correct serial: 1. Add this in `/etc/default/grub`: ``` GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --unit=0 --word=8 --parity=no --speed 38400 --stop=1" ``` 2. Add `console=ttyS0,38400n8d` to `GRUB_CMDLINE_LINUX_DEFAULT` 3. `grub-mkconfig -o /boot/grub/grub.cfg` 4. Add `ttyS0::respawn:/sbin/getty -L ttyS0 38400 vt100` to `/etc/inittab` Source: https://riedstra.dev/2019/09/alpine-gcp