3

I'm trying to set up boot from SSD drive, I followed this tutorial, but the raspberry pi 4 got stuck on the rainbow screen and did not boot up. I copied the SD card to SSD using SD card copier, checked fdisk -l to see the SSD drive, output:

... other devices, like SD card, RAM, etc.

Disk /dev/sda: 223,6 GiB, 240057409536 bytes, 468862128 sectors
Disk model: XPG EX500
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x1a14c048

Device     Boot  Start       End   Sectors   Size Id Type
/dev/sda1         8192    532479    524288   256M  c W95 FAT32 (LBA)
/dev/sda2       532480 468862127 468329648 223,3G 83 Linux

Then i ran blkid, which outputed this:

/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="69D5-9B27" TYPE="vfat" PARTUUID="d9b3f436-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="24eaa08b-10f2-49e0-8283-359f7eb1a0b6" TYPE="ext4" PARTUUID="d9b3f436-02"
/dev/sda1: LABEL_FATBOOT="boot" LABEL="boot" UUID="69D5-9B27" TYPE="vfat" PARTUUID="1a14c048-01"
/dev/sda2: LABEL="rootfs" UUID="24eaa08b-10f2-49e0-8283-359f7eb1a0b6" TYPE="ext4" PARTUUID="1a14c048-02"
/dev/mmcblk0: PTUUID="d9b3f436" PTTYPE="dos"

And finnaly edited cmdline.txt to this:

console=serial0,115200 console=tty1 root=PARTUUID=1a14c048-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

After this, I rebooted raspberry but then it got stuck on the rainbow screen, so I have to remove SD card and on other PC undo the edit made to cmdline.txt. The reason why I need to have everything on SSD is because the SD card is pretty small and I want to have samba to save files and have the web server with many websites and resources, so I need to have it all on SSD.

EDIT: I know that raspberry pi 4 can not directly boot from SSD and I still need the SD card. It should work in this way: the bootloader will load data from SD card and after it will start booting from the SSD drive so when the boot is completed, the SSD will be the main storage, so everything will be stored on it,e.g. /var/www/* etc.

6
  • 1
    Did you update /etc/fstab on the SSD?
    – Dirk
    Nov 22, 2019 at 14:49
  • 1
    @Dirk No, I did not do any changes to fstab file, what should I change there? The UUID only?
    – Alex
    Nov 22, 2019 at 14:55
  • 1
    You also have to update /boot/cmdline.txt
    – framp
    Nov 22, 2019 at 15:00
  • 1
    Please add additional information to your question. Don't use comments for it. Not all user will read all comments to understand your question.
    – Ingo
    Nov 22, 2019 at 19:52
  • 2
    I've been booting pi's from SD with root on SD for years .... have never made it work on the pi4 unfortunately Nov 23, 2019 at 0:02

5 Answers 5

2

I don't know what tutorial do you follow. I don't had a look at it, tl;dr. But it cannot belong to Raspberry Pi 4B because that model does not support booting from other devices than an SD Card yet. At Raspberry Pi boot modes you can find:

Note: The Raspberry Pi 4B does not use the bootcode.bin file - instead the bootloader is located in an on-board EEPROM chip. The Pi 4B bootloader currently only supports booting from an SD card. Support for USB host mode boot and Ethernet boot will be added by a future software update. See Pi4 Bootflow and SPI Boot EEPROM.

You may follow the EEPROM Release Notes to observe the ongoing development of USB MSD storage boot in the next beta-series.

3
  • Well, the booting is not directly from SSD, I still need the SD card, the bootloader will load data from SD card and after it will start booting from the SSD drive.
    – Alex
    Nov 22, 2019 at 18:12
  • @Alex That isn't clear in your question. Please edit the question and elaborate it with the additional information.
    – Ingo
    Nov 22, 2019 at 18:56
  • 1
    Okay, I have updated the question.
    – Alex
    Nov 22, 2019 at 19:23
1

The usual (or works for me) method for booting off an external disk with a pi 4 is:

Start with a SD based system and an empty external drive (probably /dev/sda)...
Run fdisk, delete all partitions on /dev/sda.
Create a new primary linux partition. Save and exit.
run sudo mkfs.ext4 /dev/sda1
sudo mkdir /media/disk
sudo mount /dev/sda1 /media/disk
sudo rsync -avx / /media/disk

Add "root=/dev/sda1 rootfstype=ext4 rootwait" to the end of the first line in /boot/cmdline.txt Reboot...

2
  • I followed your tutorial but it seems that the boot loader can not find my ssd device and it get stucked on "welcome to raspberry pi". Screens are on imgur https://imgur.com/a/HgqLutz. I tried to google it and propably I should edit fstab, but that is not in tutorial.
    – Alex
    Nov 22, 2019 at 21:30
  • 1
    You don't need to edit fstab. Double check the cmdline.txt file. You may need to remove the redundant 'root=' entry. I also see now that you have two partitions on the drive you're trying to boot from. You may need to use sda2 instead of sda1 if you leave that partition there. I suggest deleting both partitions and starting from scratch...
    – BobT
    Nov 23, 2019 at 0:12
0

You say: The reason why I need to have everything on SSD is because the SD card is pretty small and I want to have samba to save files and have the web server with many websites and resources, so I need to have it all on SSD.

My file server runs from the sd card, but has three drives plugged into the USB ports, two 4TB HDDs [one for 'live' files, one for backups] and one 128GB USB drive, I store all the samba shares there.

By keeping the active OS in a separate partition, if the network shares become full then the OS will still have room to breathe.

4
  • But this does not answer the question how to avoid the rainbow screen.
    – Ingo
    Nov 27, 2019 at 10:45
  • I'm saying you can avoid the rainbow scrn by not trying to boot from the SSD, boot from the SD card and place all your shares on the SSD. This has the added bonus of not having your file shares filling the space on your OS partition and making the OS unusable Nov 28, 2019 at 11:16
  • You should clearly point it in the answer.
    – Ingo
    Nov 28, 2019 at 11:27
  • Sorry, I thought it was obvious. You're getting the rainbow scrn because the Pi cannot boot from the SSD because you have not set it up properly. If you don't try to boot from the SSD, as I was suggesting, then you won't get the rainbow scrn. My suggestion has the other benefits too. Nov 29, 2019 at 12:06
0

I'm not sure if you were able to get it working or not but I was having similar issues using the same process, it turned out that the usb3->sata controller was flaking out on the usb3 ports. I was finally able to fix it using this method. Assuming all your data is still ported over to the /dev/sda1 file system created by the steps above. Then review the steps outlined here to get the drive to properly initialize and run your system from the external.

https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/

2
  • "I was finally able to fix it using this method." What method?
    – Ingo
    Mar 4, 2020 at 11:12
  • The one outlined in the link.. essentially you use the usb2 port to boot, grab the id from the usb device eg: XXXX:XXXX, and set the usb-storage.quirks=XXXX:XXXX:u at the very beginning of the /boot/cmdline.txt file if using raspian, or from the similar respective file if using another distro. Mar 4, 2020 at 13:58
0

there are multiple methods for making the RPi4 run from SSD and use the SD card only for boot, but they all do basically the same thing. What is extremely important is the USB to SATA adapter, I had one that would stop the RPi4 whatever I did, also with USB quirks and so on. There is even a website with adapters, and which work and which not. After changing the adapter, my RPi4 worked for 4 months without any problems, today it stopped and the RPi4 is stuck after the rainbow in the console at second 1.75, Green light no longer blinking. If I connect disconnect the mouse then the console updates. I checked the SD card and it seems to be ok in Windows so what remains is either the SSD is full or something is corrupt. Any idea how to fix it? I had HA running in Docker on the SSD for 4 months collecting data, so I don't want to format the SSD before saving the Docker containers.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.