Raspberry Pi 4 Ubuntu Server 18.04.3 Installation Guide

Ubuntu Server logo
Ubuntu Server logo

Ubuntu Server has been my favorite Linux distribution for years. On everything but the Raspberry Pi I run Ubuntu Server but felt stuck with Raspbian on the Pi. Until now! Ubuntu Server 18.04.2 has been released and major improvements have been made to the official Pi branch.

The Raspberry Pi 4 is not officially supported out of the box yet on the current Ubuntu Server Raspberry Pi images but you can get it working by manually updating the firmware. Solid state storage is also working but with the catch of having to use a micro SD card as a bootloader since the Pi 4 does not have official boot support yet. I describe how to do both in this article.

The Raspberry Pi’s peripherals such as WiFi / Bluetooth are now fully supported. Previous Ubuntu Server versions for Raspberry Pi (like many other distros) had broken or completely missing drivers for core components such as WiFi / Bluetooth. In the 18.04.2 update the firmware for the WiFi and other components is now included out of the box making it a fully functional distribution!

This is the first distribution besides Raspbian that feels like you can just image it and everything works. I’ll guide you through the process in this guide. It only takes a few minutes to set up.

Update 1/4/20 – New Prebuilt Image Available (v26)

These are the manual instructions to get things working. If you are looking for a precompiled Ubuntu image check out my post here: https://jamesachambers.com/raspberry-pi-4-ubuntu-server-desktop-18-04-3-image-unofficial/

I have compiled my own unofficial kernel and created a preinstalled release that overcomes all previous RAM limitations. That’s right, the image let’s you use all 4 GB of memory if you have the 4 GB model. WiFi tweak is also included and should be working properly.

Pre-Release v5 – 9/3/2019

  • Desktop support added
    • Expect lots of warnings in the logs. If you find solutions to them please leave a comment — many commits come from the comments!
    • Be advised — installing can take quite a while on a Pi — overnight or when you have something to do is a good time
  • Type one the following commands to install your preferred flavor of Ubuntu Desktop
    • sudo apt-get install xubuntu-desktop # or
    • sudo apt-get install kubuntu-desktop

Recommended Gear

I highly recommend upgrading to a solid state setup. The performance gains are gigantic. It’s now less than 30 bucks to take your Pi solid state. This is the best performance upgrade you can possibly get for a Pi.

With the new Raspberry Pi 4 it’s even more beneficial to use USB storage since a USB 3.0 bus was finally added in the Pi 4 letting it take full advantage of solid state drives. This is the setup I am currently using:

Raspberry Pi 4 Model B 2 GB

StarTech 2.5″ SATA to USB 3.0 Adapter -AND- Kingston A400 SSD 120GB SATA 3 2.5” Solid State Drive

Or for a compact setup: SanDisk Extreme Pro 128 GB USB Solid State Flash Drive

For a micro SD card setup: SanDisk Extreme A2 Application Class Micro SD Card

These storage choices are ones that all scored highly on the end-user submitted Raspberry Pi Storage Benchmarks and will give you outstanding I/O performance on the Raspberry Pi. I also personally own all of them and recommend them knowing they are compatible and perform well on the Pi.

Getting Ubuntu Server

64 bit (aarch64)

I have a custom compiled prebuilt 64 bit image available for testing. This version supports addressing all 4 GB of RAM if available. The WiFi fix for bootflags3 is also already implemented into the precompiled version. Get my custom built kernel from the Ubuntu-Server-raspi4-unofficial GitHub page.

32 bit (armhf)

To get the 32 bit version head to the official Ubuntu Raspberry Pi page at https://wiki.ubuntu.com/ARM/RaspberryPi and scroll to the “Official Images” section. Until the official Raspberry Pi 4 image is released choose the Raspberry Pi 3B+ armhf release and follow the directions in the next sections to update the firmware for a Pi 4 boot.

Writing the Base Image

This part is easy. Extract the image from xz format to img format (7zip is great and free and can extract these). Now write the img to your media (Micro SD card, solid state drive, USB storage, etc). the same way you would for any other distribution!

Updating Firmware for Raspberry Pi 4

If you are using the CloudKernel 64 bit image you can skip to the “Boot Ubuntu Server” section as it already implements the updated firmware. If you are using the 32 bit image or the official Ubuntu Server preinstalled server image from Ubuntu’s web site you will need to update the firmware using these instructions.

Remove Existing Firmware

The firmware in the current release was not built with Raspberry Pi 4 support so we need to update the firmware on the /boot/ partition for the Pi 4 to be able to boot correctly.

Insert/mount the micro SD card in your computer and navigate to the “boot” partition. Delete everything in the existing folder so it is completely empty.

Download Latest Firmware

32 bit Firmware Instructions

If you are trying to run the 64 bit version of Ubuntu skip to the 64 bit instruction section next. For 32 bit versions of Ubuntu download the firmware from the official GitHib repository here: https://github.com/raspberrypi/firmware/archive/master.zip

The latest firmware is everything inside master.zip “boot” folder (including subfolders). We want to extract everything from “boot” (including subfolders) to our micro SD’s “boot” partition that we just emptied in the previous step. Don’t forget to get the “overlays” folder as that contains overlays necessary to boot correctly.

The end result will look something like this on the “boot” drive:

$ ls
  COPYING.linux                bcm2711-rpi-4-b.dtb   kernel.img
  LICENCE.broadcom             bootcode.bin          kernel7.img
 'System Volume Information'   cmdline.txt           kernel7l.img
  bcm2708-rpi-b-plus.dtb       config.txt            overlays
  bcm2708-rpi-b.dtb            fixup.dat             start.elf
  bcm2708-rpi-cm.dtb           fixup4.dat            start4.elf
  bcm2708-rpi-zero-w.dtb       fixup4cd.dat          start4cd.elf
  bcm2708-rpi-zero.dtb         fixup4db.dat          start4db.elf
  bcm2709-rpi-2-b.dtb          fixup4x.dat           start4x.elf
  bcm2710-rpi-3-b-plus.dtb     fixup_cd.dat          start_cd.elf
  bcm2710-rpi-3-b.dtb          fixup_db.dat          start_db.elf
  bcm2710-rpi-cm3.dtb          fixup_x.dat           start_x.elf

64 bit Firmware Instructions

To boot Ubuntu Server in 64 bit mode we need to download the 64 bit version of the firmware. The .dtb files are different between 32 bit and 64 bit operating systems. Raspbian does not come with a 64 bit bootloader and one isn’t provided in the official GitHub repo either.

I have these 64 bit versions available in my Ubuntu Server precompiled image.

Create/Update config.txt and cmdline.txt

Navigate to the micro SD /boot/ partition. Create a blank cmdline.txt file with the following line:

dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

Next we are going to create config.txt with the following content:

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]

[all]

64 bit config.txt Configuration

To boot the Pi in 64 bit mode we need to add the following lines to the config.txt:

arm_64bit=1
enable_gic=1
armstub=armstub8-gic.bin 

The final configuration for 64 bit will look like this:

# Enable audio (loads snd_bcm2835)
dtparam=audio=on

[pi4]

arm_64bit=1
enable_gic=1
armstub=armstub8-gic.bin

[all]

These enable all the different 64 bit related options you need to perform a 64 bit boot on the Pi.

Boot Ubuntu Server

We are now ready to boot the device. Insert the micro SD card and power on the device.

Note: The very first startup can be very slow. Be patient. It can take up to a couple minutes with no activity lights then all the sudden everything will start blinking and SSH will open up.

Fix apt-get update / Prevent Further Updates

If you try to apt-get update now it will try to update your firmware with older firmware from the Ubuntu repository. The workaround for now is to remove that package so it keeps your existing firmware. Make a note to remember you did this step as later on we will want to reenable updates from the repository once support has been added.

sudo apt-mark hold flash-kernel

You may now run sudo apt-get update && sudo apt-get upgrade. I would avoid using dist-upgrade yet because the kernels in the repository it will update you to don’t support the Pi 4 yet. But this should get you all up to date on the packages!

Once the firmware in the apt repositories has been updated for the Pi 4 it will be safe to reinstall initramfs-tools and let it update through the normal process again.

Solid State Drive (SSD) Configuration (Optional)

USB booting has not been added into the Raspberry Pi 4 firmware yet but is being worked on right now. In the mean time you can use your micro SD card as a bootloader and still boot the whole operating system (rootfs) from the solid state drive giving you the full USB 3.0 speed increases system wide. Once the Pi USB booting is officially released you should be able to boot directly from the device without any makeshift bootloader SD card necessary.

First create a fully imaged and booting micro SD card following the earlier steps in the tutorial. After you have created the micro SD installation you should now image your SSD / USB drive with the same Ubuntu image you used to create the SD card.

Now navigate to the “boot” partition on the newly created SSD / USB drive and remove everything in there just like we did with the SD card earlier. Now copy the “boot” folder from the micro SD card to the solid state drive. This is necessary because even though the files in “boot” are read off our micro SD card initially some firmware files in the later load stages are read off the mounted drive and if the necessary firmware files are missing the system won’t boot.

Now that you’ve created the SSD / USB drive partitions and copied the “boot” partition from the SD card to your new drive we need to update your SD card’s cmdline.txt to point to the SSD / USB drive’s partition.

dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

The key part we need to change here is the “root=/dev/mmcblk0p2” section. mmcblk0p2 is a hardware identifier for micro SD storage. We need to change this to the device your storage is detected as.

If you are using a USB to solid state drive adapter it’s very likely your drive will be addressed as /dev/sda2. Therefore we will change the root=/dev/mmcblk0p2 to root=/dev/sda2

root=/dev/sda2

The final line will be:

dwc_otg.fiq_fix_enable=2 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/sda2 rootfstype=ext4 rootwait rootflags=noload net.ifnames=0

Plug both the micro SD and the solid state drive into the Pi and boot it up.

Remember: the first boot can take 2-3 minutes for first startup so give it some time before assuming it didn’t work.

Wireless Fix

The current non-free Raspberry Pi firmware had the wrong bootflags3 for quite a while for the Raspberry Pi 4 and these firmware files are definitely out there. Here is a one liner I wrote to replace the Raspberry Pi 3 boot flags in this driver with the Raspberry Pi 4 one:

sudo sed -i "s:0x48200100:0x44200100:g" /lib/firmware/brcm/brcmfmac43455-sdio.txt

Restart the system afterward.

Configuration

Default User / Password

The username and password for your initial login to Ubuntu Server will be:

user: ubuntu
password: ubuntu

You will be required to change your password after logging in for the first time. Make sure on the prompt you enter the current “ubuntu” password before typing in your new password or the device will kick you out completely and you’ll have to log in again.

Set Time Zone

To configure the correct time zone for Ubuntu Server use the following command:

sudo dpkg-reconfigure tzdata

This will take you to a very easy to follow menu to select your correct time zone and applies it to the system.

Update System

For best stability, security and performance you should immediately update your system and packages to the latest version. This will also grab all of the latest fixes/improvements making your Raspberry Pi Ubuntu experience much better.

This part is easy. Type:

sudo apt-get update && sudo apt-get upgrade

Change Default GPU Memory Split

The default amount of memory allocated to the GPU on the Raspberry Pi is around 76 MB of our 1 GB. In 2 GB and 4 GB models the amount gained from this is negligible but is still worth it for the 1 GB model.

If you type the command “free” you will see that your Raspberry Pi is missing this memory under the “total” column. We can reclaim most of this memory back by setting the GPU memory split to 16 MB. If you are planning on installing a GUI in the future you should not make this change.

This option is set in the config.txt file. It’s exactly the same file as Raspbian uses but it is located at /boot/firmware/config.txt instead of /boot/config.txt. Open config.txt with the following command:

sudo nano /boot/firmware/config.txt

We will add the following line at the bottom of config.txt:

gpu_mem=16

Press Ctrl + X and type yes to save the file. Now restart the Pi by typing

sudo reboot

After the reboot finishes type “free” again and you will see that your total available memory has increased and can now be used by the system and your applications!

Benchmark Storage (Optional)

It’s very important to have a well performing storage device on the Raspberry Pi. Storage has always been and continues to be one of the biggest performance bottlenecks for Raspberry Pis.

Until the Raspberry Pi 4 we didn’t even have 3.0 transfer speeds. Now that we have them with Raspberry Pi 4 we are discovering there is a very large difference between not only manufacturers and models, and in the case of SD cards the manufactured date / batch produced! This means that if you bought a FakeName Extreme 3.0 in 2015 you could buy the exact same line and brand of SD card one year later and you would get something with a totally different grade of flash memory and microcontroller that would perform much better/worse.

Because no one person could possibly buy all this hardware and benchmark it on their own I created a script to benchmark your storage and anonymously submit it via a basic web form here.

The best thing would be for you to run the script but if you don’t want to run it yourself check out the existing recommendations for high performance storage ideas to get the most out of Ubuntu Server on the Pi.

Conclusion

I’m very excited to see my favorite Linux distributions continue to evolve to the point where they are comparable in performance and stability to Raspbian. I’ve been testing extensively on Ubuntu Server 32 bit and 64 bit for my Raspberry Pi Minecraft Server project and not only is it on par with Raspbian but starting to do things so well it sometimes makes Raspbian feel a little dated.

If you have any questions or suggestions don’t hesitate to leave me a comment on the post or use my contact form to message me privately! I’m good about responding quickly and my articles are constantly revised to address questions or do something a better way that a reader pointed out.

Have fun!

202 thoughts on “Raspberry Pi 4 Ubuntu Server 18.04.3 Installation Guide”

  1. Avatar for CEM TURHAN BOL

    hi james,

    I just downloaded and flashed latest 64bit ubuntu server image from the raspberry pi download page. what is the differece between your compile and this image? can I boot this file from SSD which I downloaded from raspberry pi download page? there are some differences in config.txt file such as,

    config.txt is liked that;

    # Please DO NOT modify this file; if you need to modify the boot config, the
    # “usercfg.txt” file is the place to include user changes. Please refer to
    # the README file for a description of the various configuration files on
    # the boot partition.

    # The unusual ordering below is deliberate; older firmwares (in particular the
    # version initially shipped with bionic) don’t understand the conditional
    # [sections] below and simply ignore them. The Pi4 doesn’t boot at all with
    # firmwares this old so it’s safe to place at the top. Of the Pi2 and Pi3, the
    # Pi3 uboot happens to work happily on the Pi2, so it needs to go at the bottom
    # to support old firmwares.

    [pi4]
    kernel=uboot_rpi_4.bin
    max_framebuffers=2

    [pi2]
    kernel=uboot_rpi_2.bin

    [pi3]
    kernel=uboot_rpi_3.bin

    [all]
    arm_64bit=1
    device_tree_address=0x03000000

    # The following settings are “defaults” expected to be overridden by the
    # included configuration. The only reason they are included is, again, to
    # support old firmwares which don’t understand the “include” command.

    enable_uart=1
    cmdline=nobtcmd.txt

    include syscfg.txt
    include usercfg.txt

    in [pi4] part it’s pointing to a file named uboot_rpi_4.bin. in your example there is no such a file like that?

    also there is no cmdline.txt file? if I create cmdline.txt file like you do, will it still boot from ssd?

    thank you.

    1. Avatar for jamesachambers

      Great question! My image boots slightly differently as the new Ubuntu image is using uboot.

      The equivalent of cmdline.txt in the new Ubuntu version in the example you posted is the “nobtcmd.txt”. If you have Bluetooth off that is the file you would modify. If you have Bluetooth on there’s a separate text file for that in there as well.

      The rest of it should be left alone for the most part but in my instructions use the nobtcmd.txt instead of cmdline.txt!

  2. Avatar for Lars

    Thank you, James, for the guide and for the image and for the time you put into this! It is appreciated.

    My Pi works like I dream w the XFCE desktop, bluetooth is working, audio is working, all the problems I had w Raspian are solved. 😀

  3. Avatar for Richard T

    Since the official ubuntu server ver 18.04.04 have been release could you made a new guide + how to boot from SSD. Trying and fail misarably at this time and would be thankfull if someone can give a new guide.

  4. Avatar for Sage

    Question, do things like uuid-dev or libncurses-dev, not install with this version? or did I muss something up? accidentally let a script change all my repo’s to mirrors, which were broken and useless. not sure if I got them all back proper. so should I do a reinstall, or which repo’s do I need. or does’ it just not work with this distro and should use ubu server 19 or rasp lite if I want to run some compiles? thanks in advance. keep getting errors like this whenever trying to apt install any *-dev… “libncurses5-dev : Depends: libtinfo5 (= 6.1-1ubuntu1) but 6.1-1ubuntu1.18.04 is to be installed”

  5. Avatar for Maarten

    I have to reinstall my pi4 today and am looking at the prerelease because of the memory fix. Can I update that easily to stable later on or should I go for stable and expect the fix to land there?

  6. Avatar for Tony

    Happy New Year and thanks for all the great work and info!

    New question: I’m using a Logitech wireless keyboard and mouse with the dongle plugged into a USB port on the Raspi 4B. I’m experiencing random dropouts of the mouse and sometimes the keyboard. I’ve replaced the mouse battery with a new Duracell but that didn’t help. The Pi simply stops responding to the mouse, sometimes daily, other times not for days. Once it stops, I have to remotely reboot the Pi to get the mouse operational again. Sometimes the keyboard drops out but the mouse keeps working so I replaced the keyboard batteries, again, to no avail. As with the mouse dropouts, a remote reboot of the Pi gets the keyboard working again. There’s no predictability and no correlation to anything I’m doing as far as I can tell. One thing I haven’t tried yet is to unplug the dongle and replug it back in – next time I’ll try this. All I can conclude at this point is the USB driver must be a bit unstable. Is anyone else experiencing USB device issues?

    1. Avatar for jamesachambers

      Hey Tony,

      I can’t help much with this issue other than to say I have heard lots of other people with Logitech wireless USB devices having similar issues. It is likely a problem in the USB stack that will be addressed with further kernel/firmware updates!

    2. Avatar for Lju

      The Pi4 has USB 3 sockets, they interfere with the radio frequencies used by wireless devices. Simply remove the dongle from the Pi, plug a 50cm USB 2 extension lead between the USB 2 socket and the dongle – problem solved.

  7. Avatar for Garry

    I’m trying to get WiFi to work but sadly coming up empty. I’ve tried edit the yaml in /etc/netplan/ but just not succeeding.

    ubuntu@ubuntu:~$ sudo netplan –debug generate
    DEBUG:command generate: running [‘/lib/netplan/generate’]
    ** (generate:1121): DEBUG: 20:55:06.237: Processing input file /etc/netplan/50-cloud-init.yaml..
    ** (generate:1121): DEBUG: 20:55:06.237: starting new processing pass
    ** (generate:1121): DEBUG: 20:55:06.238: wlan0: adding wifi AP ‘pax-5’
    ** (generate:1121): DEBUG: 20:55:06.238: wlan0: adding wifi AP ‘pax-2.4’
    ** (generate:1121): DEBUG: 20:55:06.238: wlan0: setting default backend to 1
    ** (generate:1121): DEBUG: 20:55:06.238: Configuration is valid
    ** (generate:1121): DEBUG: 20:55:06.238: eth0: setting default backend to 1
    ** (generate:1121): DEBUG: 20:55:06.238: Configuration is valid
    ** (generate:1121): DEBUG: 20:55:06.239: Generating output files..
    ** (generate:1121): DEBUG: 20:55:06.239: NetworkManager: definition eth0 is not for us (backend 1)
    ** (generate:1121): DEBUG: 20:55:06.239: wlan0: Creating wpa_supplicant configuration file run/netplan/wpa-wlan0.conf
    ** (generate:1121): DEBUG: 20:55:06.240: Creating wpa_supplicant service enablement link /run/systemd/system/systemd-networkd.service.wants/netplan-wpa@wlan0.service
    ** (generate:1121): DEBUG: 20:55:06.240: NetworkManager: definition wlan0 is not for us (backend 1)

    ubuntu@ubuntu:~$ iwconfig
    eth0 no wireless extensions.

    wlan0 IEEE 802.11 ESSID:off/any
    Mode:Managed Access Point: Not-Associated Tx-Power=31 dBm
    Retry short limit:7 RTS thr:off Fragment thr:off
    Power Management:on

    lo no wireless extensions.

    ubuntu@ubuntu:~$

    below is my Netplan file :
    # This file is generated from information provided by the datasource. Changes
    # to it will not persist across an instance reboot. To disable cloud-init’s
    # network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config: disabled}
    network:
    ethernets:
    eth0:
    dhcp4: true
    match:
    macaddress: dc:a6:32:4f:44:a3
    set-name: eth0
    version: 2
    renderer: networkd
    wifis:
    wlan0:
    optional: true
    access-points:
    “pax-5”:
    password: “xxxxx”
    “pax-2.4”:
    password: “xxxxx”
    dhcp4: true

    1. Avatar for jamesachambers

      Hey Garry,

      I think I can help. The .yaml file is extremely sensitive to spaces. I can’t see any spaces in the post but the formatting may have not carried over. One wrong space will break it. *Any* tab will also break it. Can you validate your yaml at https://codebeautify.org/yaml-validator? You just paste it in and hit validate and it will see if there’s any issues.

      I would also try issuing a sudo ifconfig wlan0 up command. This has brought it up before for me when it was behaving similar to yours!

      1. Avatar for Joe

        JAMESACHAMBERS, THANK YOU!!!

        The yaml validator was EXACTLY what I needed. I’ve been struggling for two days to get WiFi working on my P3b with Ubuntu Server 18.04 and it was the yaml file, which I had gone over and over and everything seemed right.

        In my case it wasn’t even spacing or anything like that. It simply didn’t like the name of my AP, which started and ended with 4 hashes (#### MY AP ####). I changed it to three stars instead and it liked it fine. It didn’t actually tell me that the issue was with the name, but with that particular line, so I just took a shot in the dark.

        Thanks again!

        Joe

        1. Avatar for jamesachambers

          Hey Joe,

          I’m very glad to have helped! I’ve also lost many hours to YAML validation errors, i’ll make sure to include that tip in future articles since I know it’s helping!

  8. Avatar for Joe

    I see there’s a Raspberry Pi image for Ubuntu server 19.10.1 which already has the Pi 4 firmware configured and I have it running on the sd card on my Pi 4. Unfortunately, the cmdline.txt edit doesn’t seem to be working to get 19.10.1 running on an SSD. Have you figured out how to get it to work?

    Thanks for the great guides!

    1. Avatar for jamesachambers

      Hey Joe,

      Getting some instructions up for the new Ubuntu is on my todo list! It uses uboot and I’ve tried to walk people through it before on the comments but it is tricky so I’m working on a full guide for this!

  9. Avatar for Tony

    I’m curious about the additional cmdline.txt boot option called out here as”dwc_otg.fiq_fix_enable=2″. I see a lot of documentation about this lowering excessive interrupts back around 2012 and the switch was set to 1. I can’t find any documentation about setting it to 2. First question is, is this option still needed today? Second question is what does a setting of 2 do compared to a setting of 1?

    Thanks,
    Tony

    1. Avatar for jamesachambers

      Hey Tony,

      Great question and I definitely didn’t know the answer when you asked it. I had to go DEEP into the kernel source tree to solve this mystery.

      I found the answer in https://github.com/raspberrypi/linux/blob/rpi-4.19.y/drivers/usb/host/dwc_otg/dwc_otg_driver.c and the answer is….. fiq_fix_enable is a bool in the source code which means there is no difference between 1 and 2. The only values that matter is 0 (false) and anything else (true). So there is no difference between 1 and 2.

      Now for the other part of the question as to whether it is still needed: the answer is maybe. If you are using Raspbian it is not needed anymore because it is included by default. If you are using *any* other distro it’s probably a good idea to have this turned on as if they haven’t enabled it by default in their config you will lose about 10% USB performance (especially with solid states).

  10. Avatar for Cam

    I’m a basic linux user, my desktop has a Ubuntu Mate&windows10, dual booting with Refind (boot menu system Rod Smith). Similar to the booting from SD card in Raspberry4, I boot my pc into windows/ubuntu by having a bootable usb thumb drive and I select the OS at boot up. I like this approach, seems to keep things tidy.

    Now using James’ guide,(boot from ssd) i’ve installed Rasbian onto a 250gb ssd drive (resized down to 32gb). I want to install the ubuntu 18.04 as the guide suggests, and have it run from the SSD, just like the Rasbian.

    My Guess is that I require a boot menu system (like Refind)perhaps grub, on the SD card. to point the start up to /bootRasbian or /bootUbuntu *on the SD card*(renamed, because they both can’t be /boot) and the commandline.txt in each folder would point to the PartUUID that is on each corresponding root partition on the ssd. Close?

    Again, So /boot ->has a *choice (add other installs later)* to go to /bootRaspian (my directory name ) and it would point to the /rootRaspian on SSD using its corresponding PartUUID, OR the /boot could elect to go to /BootUbuntu (SD card), instead, eventually getting to /rootUBuntu on the SSD card, using the same mechanism. I hope I making myself clear.

    1) Can this be done?
    2) Should it be done with my limited experience?
    3) what tools would be the better choices
    4) any other resources that might be helpful?
    5) Better way than I proposed?

    1. Avatar for jamesachambers

      Hey Cam,

      It is possible to use Grub by editing the partition flags (Pi doesn’t support EFI) as described here but instead of going that route I strongly suggest you instead consider using BerryBoot which will give you a nice list to select from and should be exactly what you’re looking for!

Leave a Reply to ozkan Cancel Reply

Your email address will not be published. Required fields are marked *

Type here..