1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
#!/bin/sh
set -e
modify_initrd() {
rm -rf initramfs
mkdir initramfs
cd initramfs
initrd=$(ls ../initrd.img-*)
xzcat $initrd | cpio -i
# FIXME2: add this to the kernel
cp -a ../lib/modules/*/kernel/fs/squashfs lib/modules/*/kernel/fs/
#mkdir -p lib/modules/*/kernel/fs/nls
#cp -a ../lib/modules/*/kernel/fs/nls/*iso8859-1*.ko lib/modules/*/kernel/fs/nls
find . | cpio --quiet -o -H newc | xz -c -9 --check=crc32 > $initrd
cd ..
rm -rf initramfs
}
#ARCH=amd64
#FNAME=xenial-preinstalled-core-$ARCH.device.tar.gz
ARCH=armhf
FNAME=xenial-preinstalled-core-$ARCH.raspi2.device.tar.gz
VERSION="4.4.0-1004.5-1"
wget -c http://cdimage.ubuntu.com/ubuntu-core/daily-preinstalled/current/$FNAME
rm -rf unpack-kernel
mkdir -p unpack-kernel
mkdir -p writable
cd unpack-kernel
tar xf ../$FNAME
# shuffle stuff around
mv system/* .
rmdir system
mv assets/* .
rmdir assets
# create meta
mkdir meta
# create symlinks so that uboot can eventually boot the kernel directly
kernel="$(ls vmlinuz-*)"
initrd="$(ls initrd.img-*)"
ln -s $kernel vmlinuz
ln -s $initrd initrd.img
cat > meta/snap.yaml <<EOF
name: canonical-pi2-linux
version: $VERSION
summary: The canonical pi2 kernel snap
architectures: [$ARCH]
type: kernel
kernel: $kernel
initrd: $initrd
modules: $(ls -d lib/modules/*)
firmware: lib/firmware
EOF
# dtbs
if [ -d dtbs ]; then
printf "dtbs: dtbs/ \n" >> meta/snap.yaml
fi
# FIXME: we need to add squashfs.ko to the initrd so that we can mount
# stuff
#modify_initrd
rm -f hardware.yaml
cd ..
# needs root for root owned files
fakeroot snappy build --squashfs unpack-kernel
|