- A FAT32 partition with the kernel and system file and a cmdline.txt file that specifies the two partitions to use
- An EXT4 partition with the data, like artist/video thumbnails, the video and texture databases, and user configurations
1) less robust and gets corrupted easily and
2) slower then a 2.0 USB drive (note that the most recent Raspberry Pi 2B only supports up to USB 2).
The second issue it references these partitions by a "logical" name that can change from boot to boot. Especially for USB (thumb) drives that get removed and reconnected. For example, a drive might be /dev/sda5 during one boot, but /dev/sdb5 during the next. These logical names are used by default in the cmdline.txt file in the FAT32 partition when OpenELEC or OSMC starts. But it is better to use the unchangeable UUID that each drive has.
How to put the 2nd partition on a USB thumb drive using Windows and UUID's (OpenELEC, but OSMC is similar:
- Download the 5.95.5 image from OpenELEC. There might be a more recent version, but this guide is tested with that one
- Download and install Win32DiskImager on Windows
- Insert the MMC/SD-card into a card reader that is connected to the Windows machine. If you don't have one, you need to buy it
- Start Win32DiskImager and select the downloaded image. The file has extension .img. Select the device letter the MMC/SD-card has been assigned and press Write
- Insert the USB thumb drive into the Raspberry Pi
- Insert the MMC/SD-card into the Raspberry Pi and connect the power. The Raspberry Pi should already have a connected Ethernet or Wifi dongle before the power is connected!
- Wait while the EXT4 partition is configured with i.e. the video database and Kodi folder structure. This EXT4 partition will be copied to the USB thumb drive later on.
A short while after that, Kodi is started presenting an installation wizard - Follow the installation wizard and make sure the network connection is up and running and activate SSH. Keep OpenELEC running.
- Download and install PuTTY on Windows
- Start PuTTY and make a connection to the OpenELEC Raspberry Pi using its IP address on port 22 and selecting SSH
- Click Yes to accept the new server host key
- OpenELEC always has user: root and password: openelec
OSMC always has user: osmc and password: osmc - Type in: blkid and hit enter and copy the UUID's from the FAT32 partition (most probably denoted by /dev/mmcblk0p1) and the USB thumbdrive (can be anything like /dev/sda1, /dev/sda5, /dev/sdb1, dev/sdb5, etc)
Example result from blkid:
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="6495-ECA4" TYPE="vfat" PARTUUID="84e76e9c-01"
/dev/sda5: UUID="df2ea9f9-bdc6-4e79-b436-d2aa272ddac0" - Create a text file called cmdline.txt with this single line of text and UNIX line endings.
For OpenELEC, specify the boot and disk locations using the UUID:
boot=UUID=6495-ECA4 disk=UUID=df2ea9f9-bdc6-4e79-b436-d2aa272ddac0 quiet
For OSMC, use the PARTUUID for the root (OSMC does not support UUID):
root=PARTUUID=04030201-05 rootfstype=ext4 quiet osmcdev=rbp2 boot_delay=50 rootdelay=10 rootwait
Note that the "boot" disk does not need to be specified for OSMC. - Shutdown OpenELEC properly from the Kodi interface and when done remove the power from the Raspberry Pi
- Remove the USB thumb drive and the MMC/SD-card from the Raspberry Pi and insert both into the Windows machine
- Download and install MiniTool Partition Wizard Free on Windows
- Start MiniTool and click "launch application"
- If the USB thumb drive has partitions, then select them and one by one select Delete Partition from the Operations pane
- Press Apply and wait for the partitions to be converted into one big unallocated partition
- Select Copy Partition Wizard from Operations and
- Select the EXT4 partition from the SD/MMC-card as source
- Select the unallocated partition from the USB thumb drive as the destination
- Press Apply and wait for the copy to finish
- Close MiniTool and copy the previously created cmdline.txt to the root of the FAT32 partition of the MMC/SD-card. Overwrite the existing file there
- Remove the USB thumb drive and MMC/SD-card from the Windows machine and put them in the Raspberry Pi. Connect the power
It might be that the Raspberry boots too quick and the USB disk is not yet available. This results in a black screen and freezed boot. For OSMC, a delay for system start in general (rootdelay) and each kernel call (boot_delay) can be used. Add this to the cmdline.txt (already done in the example above):
boot_delay=50 rootdelay=10
The MMC/SD-card can become corrupted easily when e.g. the Raspberry Pi 2 hangs or Kodi is writing too long to the video database and hangs, or there is a power glitch. In that case, re-writing the disk image is the safest and quickest option. The alternative is to download the KERNEL and SYSTEM file archive from OpenELEC and copy the necessary files manually to the FAT32 partition on the MMC/SD-card. This method however might still result in the Raspberry Pi not booting if the corruption is severe.
boot_delay=50 rootdelay=10
The MMC/SD-card can become corrupted easily when e.g. the Raspberry Pi 2 hangs or Kodi is writing too long to the video database and hangs, or there is a power glitch. In that case, re-writing the disk image is the safest and quickest option. The alternative is to download the KERNEL and SYSTEM file archive from OpenELEC and copy the necessary files manually to the FAT32 partition on the MMC/SD-card. This method however might still result in the Raspberry Pi not booting if the corruption is severe.
The BLKID tool can also be downloaded together with the necessary Cygwin libraries. Here is one by user bircoe: blkid for Windows. The downside is that this implementation - as well as the blkid on the OpenELEC/OSMC command line when it does not boot correctly, and you are stuck at the command prompt - does not show the PARTUUID (partition ID). It only displays the UUID, which is the filesystem ID. The SSH version does return the PARTUUID also.
It might also be that the combination of SDA and UUID does not work. To be sure do not use this combination:
boot=/dev/mmcblk0p1 disk=UUID=df2ea9f9-bdc6-4e79-b436-d2aa272ddac0 quiet
but always use UUID for both
boot=UUID=6495-ECA4 disk=UUID=df2ea9f9-bdc6-4e79-b436-d2aa272ddac0 quiet
One attempt with UUID's in the cmdline.txt file was not successful; OpenELEC would not boot and freeze at the gradient over-powered picture. Re-writing a clean image to the MMC/SD-card and putting the cmdline.txt file on it again solved the problem.