-
Notifications
You must be signed in to change notification settings - Fork 435
Adding custom OS version examples
In addition to the readme entry about adding custom OS to noobs I'd like to share the process of doing it.
As an example we try to add Ubuntu Mate as new OS to raspberry pi, since it was not officially added by the foundation yet.
Before you start you might want to look at the developer information first.
This tutorial was tested and works with Noobs 1.5. Also see this thread as reference.
You need to use a Linux PC to create the image of course. Basic Linux knowledge is required.
# Most of the time you need to use the root user. Be careful!
# Also note the size in MB (round up) for the partition_size_nominal value.
# Commands inside parted: print quit
parted ubuntu-mate-15.10.1-desktop-armhf-raspberry-pi-2.img
# Create loopback devices for mounting
# Then mount the partitions via GUI or command line
sudo kpartx -av ubuntu-mate-15.10.1-desktop-armhf-raspberry-pi-2.img
# Pack the files. root/ has to be packed with root user. This takes quite some time.
# Get the size of the extracted tar archive we create.
# Note the values for the uncompressed_tarball_size.
cd /media/$USER/PI_BOOT
tar -cpf /tmp/boot.tar .
ls /tmp/boot.tar -l --block-size=1MB
xz -9 -e /tmp/boot.tar
cd /media/$USER/PI_ROOT
sudo tar -cpf /tmp/root.tar . --exclude=proc/* --exclude=sys/* --exclude=dev/pts/*
ls /tmp/root.tar -l --block-size=1MB
xz -9 -e /tmp/root.tar
# Unmount the partitions via gui or command line. Then do:
sudo kpartx -dv ubuntu-mate-15.10.1-desktop-armhf-raspberry-pi-2.img
Now create a folder inside os
named Ubuntu
. Place the two created tar.xz files in there.
You also need to create a few other files:
#!/bin/sh
set -ex
if [ -z "$part1" ] || [ -z "$part2" ]; then
printf "Error: missing environment variable part1 or part2\n" 1>&2
exit 1
fi
mkdir -p /tmp/1 /tmp/2
mount "$part1" /tmp/1
mount "$part2" /tmp/2
sed /tmp/1/cmdline.txt -i -e "s|root=/dev/[^ ]*|root=${part2}|"
sed /tmp/2/etc/fstab -i -e "s|^.* / |${part2} / |"
sed /tmp/2/etc/fstab -i -e "s|^.* /boot |${part1} /boot |"
umount /tmp/1
umount /tmp/2
{
"partitions": [
{
"label": "boot",
"filesystem_type": "FAT",
"partition_size_nominal": 63,
"want_maximised": false,
"uncompressed_tarball_size": 21
},
{
"label": "root",
"filesystem_type": "ext4",
"partition_size_nominal": 3867,
"want_maximised": true,
"mkfs_options": "-O ^huge_file",
"uncompressed_tarball_size": 3133
}
]
}
{
"name": "Ubuntu_Mate",
"version": "wily",
"release_date": "2015-12-21",
"kernel": "4.1",
"description": "Ubuntu MATE for the Raspberry Pi 2",
"url": "https://ubuntu-mate.org/raspberry-pi/",
"supported_hex_revisions": "1040,1041",
"feature_level": 0
}
The Icon for Ubuntu is also missing, but not important. You can download it yourself, resize it to 40x40px and name it the same as the Ubuntu_Mate folder aka Ubuntu_Mate.png
.
I took the image from bitbucket and resized it to 40x40px.
$ ls /os/Ubuntu_Mate -l
-rw-rw-r-- 1 username username 11040008 Feb 6 23:54 boot.tar.xz
-rw-rw-r-- 1 username username 272 Feb 7 10:44 os.json
-rwxr--r-- 1 username username 420 Nov 21 22:43 partition_setup.sh
-rwxr-xr-x 1 username username 414 Feb 7 00:12 partitions.json
-rw-rw-r-- 1 username username 913935756 Feb 6 23:58 root.tar.xz
-rw-rw-r-- 1 username username 2720 Feb 7 09:59 Ubuntu_Mate.png
See this issue for more information.
Kali Linux should be able to integrate the same as the Ubuntu Mate image. If it works for you, please edit this page and add additional information.
- https://downloads.raspberrypi.org/osmc_pi1/os.json (only compatible with Pi1)
- https://downloads.raspberrypi.org/osmc_pi2/os.json (only compatible with Pi2)
- https://downloads.raspberrypi.org/raspbian/os.json (compatible with all Pis)