Edit: holy shit, I did it! The install media is booting off a little SSD partition! It was ultimately quite simple. Will update with instructions once done, for posterity.

Edit 2: I did it…and you can too! Here’s what I did to install Linux from a disk partition on a gen 1 Surface Go with no functioning USB ports. I don’t know if it’s the ideal process, but it worked for me. Suggestions for refinements are gratefully accepted.

Prep Step: Make enough room for your partition and empty space for Linux by shrinking your Windows system partition. I made a 6 GB partition and left 30 GB free for Linux. If diskmgmt is being an asshole about it, turn off your page file and hibernate, then reboot to clear both files. Windows is now struggling along with a ~22 GB partition, 4 GB of free space, all visual enhancements turned off, and no page file. Tough shit, Windows: you exist to install Linux now.

Hot tip: you may have rebooted Windows a bajillion times already. If you’re logged into a microsoft account, those jackanapes will lock your system down for two hours for excessive booting. It happened to me twice. Just select “forgot my password/pin”, reset it, and you should get back in. Fuck you, Bill Gates!

  1. Download the install ISO for your desired Linux (or whatever, you’re an adult) distro.
  2. Create a FAT32 partition with enough size for the contents of your install media.
    2.1 Optional: Name it something silly to blow off steam.
  3. Copy contents of ISO to new partition.
  4. Turn off secure boot in UEFI settngs since Grub2Win is NOT “secure” in the eyes of UEFI.
  5. Download and install Grub2Win.
  6. In Grub2Win, click “view partition list”. Save the UUID of the partition you made for the install files for later use. It’ll say it’s not a legitimate EFI. Just ignore it - you don’t need its validation.
  7. Click “Manage Boot Menu”, then add a boot entry. I selected the template for Linux Mint, the distro I was installing, and used the example code to start. Don’t save it yet, you need to fill in more info.
  8. Examine the boot.cfg file present in the distro install media for required parameters, then find the location of the linux kernel (vmlinuz) and initial ramdisk image (often initrd.lz or initrd.img) files. I literally just copied the “linux /casper/vmlinuz…” line to get my parameters.
  9. Update your code in the boot entry. Here’s what mine ended up looking like:
set rootuuid=9889-99F1
getpartition  uuid  $rootuuid  root
g2wsetprefix
linux   /casper/vmlinuz    root=UUID=$rootuuid persistent boot=casper username=mint hostname=mint iso-scan/filename=${iso_path} quiet splash --
initrd  /casper/initrd.lz
if [ $? -ne 0 ] ; then g2werror Linux load error ; fi
  1. Save the boot entry. Reboot your system, then select your shiny new boot entry. Linux should start. Be patient, it’s slow AF. Select the installation shortcut to get started. Everything proceeded smoothly for me.
    Note: I left my Windows install as ANY perturbations to UEFI settings end up with it reverting to the Windows boot manager, which points at the Windows install only. If I didn’t have Windows to run Grub2Win, I’d be out of luck.
  2. After installation, I found the boot manager went back to the default Windows one and updating through Grub2Win did exactly nothing. I ended up uninstalling, then reinstalling Grub2Win, then it was fixed. Mostly. It still didn’t have a Linux boot entry.
  3. Manually add your Linux boot entry. Similar to the install media, you need to tack on some paramaters. Here’s what I ended up with, with the UUID being that of the new Linux install partition:
set rootuuid=4d23295b-03db-49d4-858b-e7403d983269
getpartition  uuid  $rootuuid  root
g2wsetprefix
echo Boot disk address is  $root
echo The boot mode is      Partition UUID
linux   $pathprefix/vmlinuz    root=UUID=$rootuuid    verbose
initrd  $pathprefix/initrd.img
if [ $? -ne 0 ] ; then g2werror Linux load error ; fi

And that should do it! Secure boot remains off as Win2Grub’s EFI isn’t signed by Microsoft, so turning it back on will revert the system to the Windows boot manager. Just to tie things up: Fuck you, Bill Gates!

Hope that helps, and good luck!

Original:
This is a weird one. My partner was gifted a Surface Go model 1824 (gen 1) by their best friend, who unexpectedly died a couple of weeks back. It’s nearing the Windows 10 end of support date, so my plan was to install Mint, but there’s a hitch: the only goddamned USB port on the system is shot. It’s the USB controller, which I’ve given up on trying to fix as it looks like a hardware issue.

I still want to install Linux because this thing now has super sentimental value. I’ve freed up 16 gb on the SSD, so I have some space to work with. There’s a micro SD slot that still functions, but the stupid system doesn’t support booting from it (although a Reddit post suggested you can still do so if you set it up in Grub, which I don’t know how to do properly at all). The only thing I can think of is installing something on a partition or partitions that acts as install media, but I have no idea how to do that.

Ive tried using Grub2Win’s ISOboot function with the Mint install ISO and I can get it to start, but it stalls out waiting ad nauseum for DHCP. I think it thinks it’s a PXE install. Maybe my parameters are set wrong? Actual PXE is a no-go because no network adapter. I tried intently staring at the Mint ISO, then staring at the tablet; no data was transferred, but I did develop a headache.

I’m so, so stumped. Any ideas, anyone?___**-

  • Brickfrog@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    5 days ago

    Yikes! Yeah if the SSD storage isn’t easily accessible then it’s not worth the disassembly headache.

    If that is the case then OP’s only option is to try writing the bootable ISO onto a second partition on the current drive while in Windows and boot off that partition… assuming getting the USB port repaired is a no-go.