Add Raspberry Pi device (#1501)

This commit is contained in:
Daniele Debernardi 2018-05-29 21:33:40 +02:00 committed by Oliver Smith
parent 00455f1a10
commit dfde37c132
12 changed files with 118 additions and 6 deletions

View file

@ -0,0 +1 @@
SUBSYSTEM=="vchiq", GROUP="video", MODE="0660"

View file

@ -0,0 +1,49 @@
# Reference: <https://postmarketos.org/devicepkg>
pkgname="device-raspberry-pi"
pkgdesc="Raspberry Pi"
pkgver=0.1
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="noarch"
options="!check"
depends="postmarketos-base raspberrypi-bootloader"
makedepends="devicepkg-dev"
subpackages="
$pkgname-kernel-rpi:kernel_rpi
$pkgname-kernel-rpi2:kernel_rpi2
"
source="deviceinfo config.txt usercfg.txt cmdline.txt 95-vchiq-permissions.rules"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
install -Dm644 "$srcdir"/config.txt "$pkgdir"/boot/config.txt
install -Dm644 "$srcdir"/usercfg.txt "$pkgdir"/boot/usercfg.txt
install -Dm644 "$srcdir"/cmdline.txt "$pkgdir"/boot/cmdline.txt
install -Dm644 "$srcdir"/95-vchiq-permissions.rules \
"$pkgdir"/etc/udev/rules.d/95-vchiq-permissions.rules
}
kernel_rpi() {
pkgdesc="Kernel for the Raspberry Pi Zero & 1"
depends="$pkgname linux-rpi"
install="$subpkgname.post-install"
mkdir "$subpkgdir"
}
kernel_rpi2() {
pkgdesc="Kernel for the Raspberry Pi 2 & 3"
depends="$pkgname linux-rpi2"
install="$subpkgname.post-install"
mkdir "$subpkgdir"
}
sha512sums="e8243fb5a7e6f47ee48d6eba80a17aba294810bbae985145e7beb5f93d73c8221daa491edfebd908ee0dced635f5ed7d87b652e2e061910bea327b46ec3b3527 deviceinfo
de4d6967be7f68d0b005ab968e6f8da2eacf4ba2d814d1f47ed6ad43ba81cacc1fdc74b3ba3a44b5ae6f08c51b53708432afb5779422b977b65ae69a5a4bf068 config.txt
e94c810f973eb6b6d0fb3687ea1d70612ba00e9c5d6b3608390a161e077c5591fd9d232c37b42443c05ed28bb639ca1754422ff35899c5e33d7fc266e0e1ad05 usercfg.txt
ae3de0b8fec07d3a283dc3c06bf8678eec1e65c9faf0b7f4fdc9fb92751e324d1f8e2fb224dbbf561b7e5a6fb34769bfa1657858375f74b101a130d78e0737e2 cmdline.txt
7e5505cb07d5b4a81bd28443d508336b5c547356538f1c06f91ed93ad0d7d456d4f74f1d24df5a2e08c17e74f0a66607352ac4874e967e9a91dfec9522d2d58d 95-vchiq-permissions.rules"

View file

@ -0,0 +1 @@
modules=loop,squashfs,sd-mod,usb-storage quiet dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1

View file

@ -0,0 +1,18 @@
disable_splash=0
boot_delay=0
gpu_mem=256
gpu_mem_256=64
[pi0]
kernel=vmlinuz-rpi
initramfs initramfs-rpi
[pi1]
kernel=vmlinuz-rpi
initramfs initramfs-rpi
[pi2]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2
[pi3]
kernel=vmlinuz-rpi2
initramfs initramfs-rpi2
[all]
include usercfg.txt

View file

@ -0,0 +1,5 @@
#!/bin/sh
kernver=$(cat /usr/share/kernel/rpi/kernel.release)
cd /usr/lib/linux-${kernver}/
find . -type f -regex ".*\.dtbo\?$" -exec install -Dm644 {} /boot/{} \;

View file

@ -0,0 +1,5 @@
#!/bin/sh
kernver=$(cat /usr/share/kernel/rpi2/kernel.release)
cd /usr/lib/linux-${kernver}/
find . -type f -regex ".*\.dtbo\?$" -exec install -Dm644 {} /boot/{} \;

View file

@ -0,0 +1,23 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell scripts.
deviceinfo_format_version="0"
deviceinfo_name="Raspberry Pi"
deviceinfo_manufacturer="Raspberry Pi Foundation"
deviceinfo_date=""
deviceinfo_dtb=""
deviceinfo_modules_initfs=""
deviceinfo_arch="armhf"
# Device related
deviceinfo_keyboard="true"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1920"
deviceinfo_screen_height="1080"
deviceinfo_dev_touchscreen=""
deviceinfo_dev_touchscreen_calibration=""
deviceinfo_dev_keyboard=""
# Bootloader related
deviceinfo_flash_method="none"
deviceinfo_boot_filesystem="fat16"

View file

@ -0,0 +1 @@
enable_uart=1

View file

@ -237,6 +237,7 @@ deviceinfo_attributes = [
# bootloader
"flash_method",
"boot_filesystem",
# flash
"flash_heimdall_partition_kernel",
@ -277,7 +278,7 @@ default_ip = "172.16.42.1"
# Packages, that will be installed inside the native chroot to perform
# the installation to the device.
# util-linux: losetup, fallocate
install_native_packages = ["cryptsetup", "util-linux", "e2fsprogs", "parted"]
install_native_packages = ["cryptsetup", "util-linux", "e2fsprogs", "parted", "dosfstools"]
install_device_packages = [
# postmarketos
@ -288,7 +289,7 @@ install_device_packages = [
]
# Groups for the default user
install_user_groups = ["wheel", "video", "audio"]
install_user_groups = ["wheel", "video", "audio", "input"]
#

View file

@ -24,9 +24,15 @@ import pmb.chroot
def format_and_mount_boot(args):
mountpoint = "/mnt/install/boot"
device = "/dev/installp1"
logging.info("(native) format " + device + " (boot, ext2), mount to " +
filesystem = args.deviceinfo["boot_filesystem"] or "ext2"
logging.info("(native) format " + device + " (boot, " + filesystem + "), mount to " +
mountpoint)
if filesystem == "fat16":
pmb.chroot.root(args, ["mkfs.fat", "-F", "16", "-n", "pmOS_boot", device])
elif filesystem == "ext2":
pmb.chroot.root(args, ["mkfs.ext2", "-F", "-q", "-L", "pmOS_boot", device])
else:
raise RuntimeError("Filesystem " + filesystem + " is not supported!")
pmb.chroot.root(args, ["mkdir", "-p", mountpoint])
pmb.chroot.root(args, ["mount", device, mountpoint])

View file

@ -68,13 +68,15 @@ def partition(args, size_boot):
logging.info("(native) partition /dev/install (boot: " + mb_boot +
", root: the rest)")
filesystem = args.deviceinfo["boot_filesystem"] or "ext2"
# Actual partitioning with 'parted'. Using check=False, because parted
# sometimes "fails to inform the kernel". In case it really failed with
# partitioning, the follow-up mounting/formatting will not work, so it
# will stop there (see #463).
commands = [
["mktable", "msdos"],
["mkpart", "primary", "ext2", "2048s", mb_boot],
["mkpart", "primary", filesystem, "2048s", mb_boot],
["mkpart", "primary", mb_boot, "100%"],
["set", "1", "boot", "on"]
]

View file

@ -78,7 +78,7 @@ def test_aports_device_kernel(args):
* Validate kernel subpackage names
"""
# Generate list of valid subpackages
valid_subpackages = ["downstream"]
valid_subpackages = ["downstream", "rpi", "rpi2"]
for path in glob.glob(args.aports + "/main/linux-postmarketos-*"):
suffix = os.path.basename(path)[len("linux-postmarketos-"):]
valid_subpackages.append(suffix)