1

I am teaching a C++ class for high schoolers. The students bring their own computers, and to standardize things I'm making everyone boot from a LiveUSB of Ubuntu with persistence storage. I had every student bring in a USB, and I formatted them over the weekend to work with UEFI.

I used the Mac Linux USB Loader since I use Mac, and some of the students use Mac, and since it's supposed to be compatible with PCs as well.

The students came to class, I handed them out, and all of the students with Macs had theirs boot perfectly, no problems, went right to Ubuntu.

The students with Windows, the USBs would not boot, no matter what anyone did. We loaded the boot menus and disabled secure boot and all of that, and it still wouldn't work.

Once student got very, very close: he got dropped to a GRUB shell. I think this is the only student in class who actually has UEFI hardware. The rest, I presume, have BIOS.

I have since tried to make a Live USB of Ubuntu that will boot on BIOS. The only test of a BIOS machine I have is an old HP desktop. It is capable of booting from USBs, and I can select the USBs from the boot menu. I also have a Surface 3, which boots from UEFI. The original live USBs boot just fine from my Surface 3 and from any Mac.

I have tried making a live USB and booting it from the Mac, the Surface 3, and the HP Desktop. So far I have tried:

  1. UNetbootin from both Mac and from Windows
  2. PendriveLinux's Universal USB Installer (run from Windows on the same machine)
  3. Making a startup disk in Ubuntu, using the Startup Disk Creator app
  4. I tried installing Porteus, following all instructions from within Ubuntu

Each time I have reformatted the USB sticks to erase old files.

Nothing works. None of these methods produced a USB that would boot on my HP desktop OR on my Surface 3 OR on any of my macbooks.

The original sticks were definitely functional for UEFI machines.

What do I need to do here?

Thanks.

  • The issue may really be video? Not sure if a Mac will create the flash drive with BIOS boot as Mac have been UEFI since converting to Intel chips. But each computer with different video may need different boot parameter. http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it – oldfred Aug 18 '15 at 03:47
  • The Surface3 won't recognize them as bootable. The HP Desktop will let me boot from them, but then claims there is no operating system on them. I can create these from Windows or from Ubuntu if necessary. So far it doesn't matter what OS I use to make them. They just don't work. – user2635606 Aug 18 '15 at 03:51
  • If the HP is UEFI, then it is an HP issue. They modify UEFI to use description as part of boot and only valid description is "Windows". That is not UEFI standard. But there are several work arounds. Many UEFI systems require you to turn on a setting to allow USB boot, or set a UEFI supervisor password to even see that setting. BIOS should just work if video is not an issue. – oldfred Aug 18 '15 at 04:42

2 Answers2

1

Short answer

There might not be a universal solution, so you may have to resort to different tools for different computers.

Long answer

It sounds like the students have their own computers, which in turn means that you're probably dealing with a dozen or more different models. If so, there are quite a few variables at play, including (but not limited to):

  • Computer age -- As a general rule, brand-new computers are often hard to get working because they have new hardware for which Linux drivers may not have yet been written.
  • Firmware type (EFI vs. UEFI vs. BIOS) -- Computers older than about mid-2011 mostly used BIOS firmware, whereas beginning in mid-2011, manufacturers shifted rapidly to UEFI. All Intel-based Macs use EFI, which is similar to UEFI. (UEFI is essentially EFI 2.x.) EFI and UEFI boot in mostly the same way, but there can be some subtle differences.
  • Boot mode -- Most EFI- and UEFI-based computers provide a feature called the Compatibility Support Module (CSM), which enables them to boot BIOS-based computers. Some UEFI-based PCs that shipped with Windows 7 installed Windows in BIOS/CSM/legacy mode, and so may be configured to more easily boot Ubuntu in BIOS mode, rather than in native UEFI mode. It's also usually possible to boot Ubuntu in this way even on newer machines, although system-specific firmware options will have to be set. Understanding and controlling this detail on a dozen or more computers can be a challenge.
  • Buggy firmware -- Even aside from the firmware type, a lot of computers ship with downright buggy firmware. This can make booting certain media difficult or require system-specific workarounds.
  • Selecting boot media -- Many computers require hitting Esc, Enter, or a function key to bring up a boot manager menu that enables booting from a removable disk such as a USB flash drive. The "magic key" varies from one computer to another, though.
  • Secure Boot -- This is an optional UEFI feature that can interfere with booting Ubuntu. In theory, Ubuntu works with Secure Boot enabled. Practice usually follows theory, but there are exceptions to this rule.
  • Hardware support -- Even aside from hardware age, sometimes you need to tweak boot options to get things to work. A year or two ago there was a rash of problems with video hardware. I see fewer questions about that today than I did then, probably because support has improved; but you might still need to pass particular kernel options (like nomodeset) for some computers.

A lot of your problems are likely to be caused by firmware issues, and in particular by system-specific quirks and bugs. Furthermore, your ideal solution boots in either BIOS mode or in EFI/UEFI mode and supports storing files on the boot medium. I don't know offhand if there are any tools that support creating such media. If there are, I wouldn't be surprised if these tools were to fail on some computers, so you might need to prepare media in some other way for some of your computers.

Overall, my recommendation is to abandon your current approach and to try another: virtualization. In particular, VirtualBox is open source and is available for OS X, Windows, and Linux, so chances are all of your students can run it. You can install Ubuntu under VirtualBox yourself, then distribute your installation to your students, who should be able to run it on their own systems, no matter what the host OS. This will neatly bypass all of the variables I've just identified.

The main downside to virtualization is that it imposes extra overhead. On a computer with lots of RAM (say, 4GiB or above), this shouldn't be a big deal; you can run a lightweight desktop environment and all the tools you need for C++ development in 1GiB or a bit more, so on a 4GiB system, you can give 1GiB to the virtual machine and be fine. (Starting with Lubuntu rather than the "base" Ubuntu can be a good approach.) If a student has just 1GiB of RAM, though, either the virtual machine will be memory-starved or VirtualBox will end up relying on swap, thus dragging performance down. Thus, before you embark on the VirtualBox solution, you should probably take a survey of the hardware your students will be using to be sure this approach is viable for the available hardware.

Of course, you could use a mixed approach, too -- VirtualBox for students who have sufficient RAM, and deal with individual issues on a USB-based dual boot for those who are more resource-impaired.

Rod Smith
  • 44,284
  • 7
  • 63
  • 105
  • Thanks! Every student has a different computer make/model, so I was trying to standardize everything by booting from flash drives. Then they all have the same stuff on their screen and call the same compilers. In terms of installing VirtualMachine, do I need to install it on each and every computer? You instructions make it sound like I install it once and then transfer it to them somehow. – user2635606 Aug 19 '15 at 19:53
  • You'd need to install VirtualBox (or whatever other virtualization environment you choose) on every computer. You can then copy a single file that contains your prototype Ubuntu installation from your copy of VirtualBox onto all the students' computers. They can then create virtual machine instances of their own that use the Ubuntu installation that you prepared. – Rod Smith Aug 20 '15 at 02:17
0

Use YUMI on Windows. Download here.

fosslinux
  • 3,831
  • I'll try it. I already tried one PenDriveLinux product, and it didn't work. But I'll try. Thanks. – user2635606 Aug 18 '15 at 03:51
  • I haven't checked it lately, but the last I heard, YUMI produced BIOS-only media. This might work for some of the PCs, but not for recent ones, and it's of dubious utility for Macs. – Rod Smith Aug 19 '15 at 01:16