Repository navigation
Surface Go 4
The device is very similar to previous Surface Go models and almost everything written about these models is relevant here too -- except the UFS drive.
Unlike previous models, The Surface Go 4 uses a UFS drive, which is much more common in phones than computers, so some Linux installers may encounter issues with it under various setups.
Ubuntu and Manjaro installers seem to recognize the disk properly, but in some setups, like when using LUKS disk encryption, the SGO4 is unable to boot after installation.
If you are unable to boot after installation due to "volume not found", try the following:
- Boot from the USB drive you used to install the OS, but instead the installer, open the terminal.
- Mount your disk if needed -- specific instructions for the case of LUKS encryption below.
- Edit
/etc/mkinitcpio.confand configureMODULES=(ufshcd_core ufshcd_pci). -
chrootinto the mounted drive and runmkinitcpio -P.
Once you are able to boot into your designated OS, make sure the changes persist by adding a file like /etc/mkinitcpio.conf.d/10-ufs.conf that will contain a single line MODULES=(ufshcd_core ufshcd_pci).
The above may vary by distro.
Here's a more specific flow that seems to work with Manjaro configured for LUKS encryption, and encountering "error: access denied. error: disk 'cryptouid/006...' not found. Entering rescue mode...".
Disclaimer: I am unsure this is the best or optimal solution, and admit I do not understand all the parts here in depth. I thought it's worth sharing as I reached this after many hours of investigation. SGO4 users who know what they're doing more than I do are encouraged to optimize the process and share.
-
Boot from the USB drive you used to install the OS, but instead the installer, open the terminal.
-
sudo cryptsetup luksOpen /dev/sdXn cryptrootwheresdXnis your device, which you can get withlsblk. -
Mount the relevant directories for
mkinitcpio:
sudo mount /dev/mapper/cryptroot /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
sudo mount --bind /etc /mnt/etc
sudo vi /etc/mkinitcpio.conf- Set
MODULES=(ufshcd_core ufshcd_pci), and underHOOKSaddencryptbeforefilesystemsif it doesn't exist. - Run
sudo chroot /mnt. (You may need to installmanjaro-chroot,arch-chrootor another distro-specific tool for this.) - Run
mkinitcpio -P. exit- Get your cryptdevice UUID using
blkid /dev/sdXn(sdXnbeing the same as before). sudo vi /etc/default/grub- Set
GRUB_CMDLINE_LINUX="cryptdevice=UUID=<UUID of your encrypted partition>:cryptroot root=/dev/mapper/cryptroot" sudo grub-mkconfig -o /boot/grub/grub.cfgsudo vi /etc/fstab- Add the line:
/dev/mapper/cryptroot / ext4 defaults 0 1 -
sudo umount /mnt/dev,sudo umount /mnt/proc,sudo umount /mnt/sys, ... sudo umount /mnt- Reboot and hope for the best.
- Once you are able to boot into your designated OS, make sure the changes persist by adding a file like
/etc/mkinitcpio.conf.d/10-ufs.confthat will contain the two lines you changed:MODULES=(ufshcd_core ufshcd_pci)and the updatedHOOKSline.
- Home
- Installation and Setup
-
Supported Devices and Features
- Surface Book 1
- Surface Book 2
- Surface Book 3
- Surface Laptop Studio
- Surface Laptop Studio 2
- Surface Laptop 1
- Surface Laptop 2
- Surface Laptop 3
- Surface Laptop 4
- Surface Laptop 5
- Surface Laptop 6
- Surface Laptop Go 1
- Surface Laptop Go 2
- Surface Laptop Go 3
- Surface Laptop SE
- Surface Go 1
- Surface Go 2
- Surface Go 3
- Surface Go 4
- Surface 3
- Surface Pro 1
- Surface Pro 2
- Surface Pro 3
- Surface Pro 4
- Surface Pro 5
- Surface Pro 6
- Surface Pro 7
- Surface Pro 7+
- Surface Pro 8
- Surface Pro 9 (Intel)
- Surface Pro 10
- Surface Studio 1
- Surface Studio 2
- Surface Studio 2+
- Surface Dock
- Device Independent Information
- Known Issues / FAQ
- Links and Associated Projects
- Testers and Contributing