Change boot OS of a headless raspberrypi.
[ link: raspberrypiboot | tags: raspberrypi | updated: Fri, 17 Apr 2020 12:09:17 -0400 ]
When running the NOOBS image on a raspberrypi, you can install multiple OSs to run and multi boot the ones you choose. For instance, I boot openelec and raspbian. I needed to be able to switch between which one to boot without hooking up a monitor and keyboard to my pi.
So on my pi, I have the following disk layout.
Disk /dev/mmcblk0: 7861 MB, 7861174272 bytes
4 heads, 16 sectors/track, 239904 cylinders, total 15353856 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001be8c
Device Boot Start End Blocks Id System
/dev/mmcblk0p1 2048 2818359 1408156 e W95 FAT16 (LBA)
/dev/mmcblk0p2 2826240 15288319 6231040 85 Linux extended
/dev/mmcblk0p3 15288320 15353855 32768 83 Linux
/dev/mmcblk0p5 2834432 3096575 131072 c W95 FAT32 (LBA)
/dev/mmcblk0p6 3104768 7501823 2198528 83 Linux
/dev/mmcblk0p7 7503872 7626751 61440 c W95 FAT32 (LBA)
/dev/mmcblk0p8 7634944 15280127 3822592 83 Linux
I have the option of booting raspbian (which is on mmcblk0p7) or openelec (which is on mmcblk0p5)
So in my case, what I have to do is mount up the mmcblk0p3 partition and you will see the following:
root@raspberrypi:~# mount /dev/mmcblk0p3 /mnt/
root@raspberrypi:~# ls /mnt/
installed_os.json lost+found noobs.conf
root@raspberrypi:~#
You should have the installed_os.json and noobs.conf file.. Look in the installed_os.json file and you should see something like:
root@raspberrypi:~# cat /mnt/installed_os.json
[
{
"description" : "OpenELEC is a fast and userfriendly XBMC Mediacenter distribution.",
"folder" : "/mnt/os/OpenELEC",
"icon" : "/mnt/os/OpenELEC/OpenELEC.png",
"name" : "OpenELEC",
"partitions" : [
"/dev/mmcblk0p5",
"/dev/mmcblk0p6"
],
"release_date" : "2013-09-14"
},
{
"description" : "A Debian wheezy port, optimised for the Raspberry Pi",
"folder" : "/mnt/os/Raspbian",
"icon" : "/mnt/os/Raspbian/Raspbian.png",
"name" : "Raspbian",
"partitions" : [
"/dev/mmcblk0p7",
"/dev/mmcblk0p8"
],
"release_date" : "2014-01-07"
}
The first devices listed for each OS, i.e. the /dev/mmcblk0p5 and /dev/mmcblk0p7 are what you need to note:
Now edit the /mnt/noobs.conf file and edit the "default_partition_to_boot" part.
root@raspberrypi:~# cat /mnt/noobs.conf
[General]
default_partition_to_boot=7 <------- edit this
display_mode=0
keyboard_layout=gb
language=en
So in my case, I can set it to be 7 to boot raspbian or 5 to boot openelec. After you edit the file, save it and unmount the /dev/mmcblk0p3 partition and reboot.
root@raspberrypi:~# umount /mnt/
root@raspberrypi:~# reboot
root@raspberrypi:~#
-db
Like this article? Buy me a beer!