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.

| improve this question | | | | |
  • 1
    Did you update /etc/fstab on the SSD? – Dirk Nov 22 '19 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 '19 at 14:55
  • 1
    You also have to update /boot/cmdline.txt – framp Nov 22 '19 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 '19 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 – Jaromanda X Nov 23 '19 at 0:02
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.

| improve this answer | | | | |
  • 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 '19 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 '19 at 18:56
  • 1
    Okay, I have updated the question. – Alex Nov 22 '19 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...

| improve this answer | | | | |
  • 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 '19 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 '19 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.

| improve this answer | | | | |
  • But this does not answer the question how to avoid the rainbow screen. – Ingo Nov 27 '19 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 – Andrew d'Azotus Nov 28 '19 at 11:16
  • You should clearly point it in the answer. – Ingo Nov 28 '19 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. – Andrew d'Azotus Nov 29 '19 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/

| improve this answer | | | | |
  • "I was finally able to fix it using this method." What method? – Ingo Mar 4 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. – user2636268 Mar 4 at 13:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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