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?___**-

  • Sentient Loom@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    28
    ·
    5 days ago

    Is the HDD removable? I’ve swapped hard drives between thinkpads before and linux didn’t seem to care that it’s suddenly on a different machine. So maybe you can install something on the HDD on a different machine (that has a usb) and then swap the HDD back into the Surface. Maybe there will still be things to smooth out later, but it’s something to try.

    • SoleInvictus@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      7
      ·
      5 days ago

      Unfortunately no, it’s an SSD (post updated) and it’s soldered in place. Plus this thing is the least accessible non-phone/tablet device I’ve ever seen. I’d need to use a heat gun and a few prying tools to take it apart. That’s why the USB controller remains unfixed, I’m more likely to cause more damage to it.

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

    Does the Surface Go have a SSD in it? And/or can you install a SSD into it? The specs do imply that it supports SSD so you should at least have a port in there for that. If so, as long as you have a spare machine you can install the Surface’s SSD into another system, then install Linux Mint normally there, then re-install the SSD back into the Surface Go.

    I’ve never done that but it’s been mentioned a few times in the Linux Mint forums so apparently that is a roundabout way of installing on a machine without working USB ports. e.g.

    https://forums.linuxmint.com/viewtopic.php?t=388243

    https://forums.linuxmint.com/viewtopic.php?t=361542

    Not sure how well Mint works specifically on Surface Go but it’s worth a try, most likely you’d use the same steps to install other distros on there.

    EDIT: Without a spare system you might be able to download then write the Mint ISO onto a second partition inside Windows and boot from the Mint installer partition afterwards. Not sure how well that would work but someone else in the forums mentioned it https://forums.linuxmint.com/viewtopic.php?t=369154

    • Scrath@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      7
      ·
      5 days ago

      Depending on the specific model it is either an SSD or eMMC storage but you won’t be able to get to it without major disassembly of the device which includes removing the glued-on screen.

      This surface is an absolute bitch to repair

      • 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.

    • boredsquirrel@slrpnk.net
      link
      fedilink
      arrow-up
      4
      ·
      edit-2
      5 days ago

      This

      You can use an external ssd adapter too, or clone an existing install with Clonezilla (but should be resizable)

  • APF@discuss.tchncs.de
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    5 days ago

    Install Ventoy on internal hdd.

    https://www.ventoy.net/en/doc_non_destructive.html

    I have a folder called ISO on my hdd. I just drop an iso there and reboot into ventoy.

    I also added ventoy to my grub, but it was pretty hacky, something like adding the uuids of ventoy and my data partition.

    You can even boot some isos directly from grub without ventoy.

    • SoleInvictus@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      3
      ·
      5 days ago

      That’s brilliant! I got it to work, but the lack of functioning USB port means my future recovery options are limited. I’m installing this with a barebones linux install ISO, just in case things get weird. Thank you!

  • monovergent@lemmy.ml
    link
    fedilink
    arrow-up
    4
    ·
    5 days ago

    I think we can safely rule out anything on the hardware side since accessing any internal component of the Surface Go is tantamount to destroying it.

    Assuming Microsoft’s UEFI implementation is somewhat standard, Grub2Win should set you on the right path. Have you inspected the underlying grub.cfg? Make sure the entry for the ISO doesn’t make any attempt to boot from network.

    • SoleInvictus@lemmy.blahaj.zoneOP
      link
      fedilink
      arrow-up
      6
      ·
      5 days ago

      Yeah, this thing is super inaccessible. Damn you, Gates!

      You nailed it: I inspected the grub.cfg on the install media, which gave me the required parameters to get my hacked together install partition working. After that, it was really easy!

  • Little8Lost@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    arrow-down
    1
    ·
    5 days ago

    Ive personally had a surface and i think mint and ubunto did absolutely not work to install. (7Pro)
    But arch worked (some kind nerds in the area helped me install it) and at least to me it was surprisingly easy
    But you probably should use a backup in case you manage to break arch

    This repo is your friend: https://github.com/linux-surface/linux-surface

  • slock@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    5 days ago

    Random idea that might work: Try to install ReFind from windows, it should work and allow you to boot from random thing more easily. Then try using it to boot from the SD card. Don’t forget to turn off secure boot. If that doesn’t work, the right idea is indeed to “burn” the media on a partition, however you will also encounter some amount of headache with this option: an installer is not a single partition, but multiple ones. You could try only having the “main” partition on disk, and use refind to boot it too.

    TL;DR: ReFind could help you. Turn off secure boot.

  • frongt@lemmy.zip
    link
    fedilink
    arrow-up
    4
    ·
    5 days ago

    Can it run any kind of virtualization? Pass that 16gb partition as a raw disk, run your OS installer, then boot the partition directly instead of as a VM.

  • Admetus@sopuli.xyz
    link
    fedilink
    arrow-up
    2
    ·
    5 days ago

    Doesn’t it have an eMMC drive. A card like that might be slow as hell, but it would load up a live iso eventually.