
Added three patches to fix the mmc issue as described here: https://github.com/SolidHal/Librean/issues/17 Source for the patches is the chrome os kernel. Links to the commits can be found in the issue. Locking into version 4.17.2 for the time being. Better organized patches. Added logic to only apply tested patches on fresh kernel. Moved some debian build improvements in from my devsus master branch, including switching from xfce to lxqt. May be able to add option between the two in the future, as the issue that led to switching DEs may have been with the xorg video drivers that are now skipped by the script and not xfce itself. Cleaned up uneeded old configs
110 lines
4.2 KiB
Bash
Executable File
110 lines
4.2 KiB
Bash
Executable File
#!/bin/sh -xe
|
|
|
|
# Build fs, image
|
|
|
|
|
|
KVER=4.17.2
|
|
|
|
outmnt=$(mktemp -d -p `pwd`)
|
|
inmnt=$(mktemp -d -p `pwd`)
|
|
|
|
outdev=/dev/loop4
|
|
indev=/dev/loop5
|
|
|
|
#A hacky way to ensure the loops are properly unmounted and the temp files are properly deleted.
|
|
#Without this, a reboot is required to properly clean the loop devices and ensure a clean build
|
|
cleanuptwice() {
|
|
cleanup
|
|
cleanup
|
|
|
|
}
|
|
|
|
cleanup() {
|
|
set +e
|
|
|
|
umount -l $inmnt > /dev/null 2>&1
|
|
rmdir $inmnt > /dev/null 2>&1
|
|
losetup -d $indev > /dev/null 2>&1
|
|
|
|
umount -l $outmnt > /dev/null 2>&1
|
|
rmdir $outmnt > /dev/null 2>&1
|
|
losetup -d $outdev > /dev/null 2>&1
|
|
}
|
|
|
|
trap cleanuptwice INT TERM EXIT
|
|
|
|
|
|
create_image() {
|
|
# it's a sparse file - that's how we fit a 16GB image inside a 2GB one
|
|
dd if=/dev/zero of=$1 bs=$3 count=$4 conv=sparse
|
|
parted --script $1 mklabel gpt
|
|
cgpt create $1
|
|
cgpt add -i 1 -t kernel -b 8192 -s 65536 -l Kernel -S 1 -T 5 -P 10 $1
|
|
start=$((8192 + 65536))
|
|
end=`cgpt show $1 | grep 'Sec GPT table' | awk '{print $1}'`
|
|
size=$(($end - $start))
|
|
cgpt add -i 2 -t data -b $start -s $size -l Root $1
|
|
# $size is in 512 byte blocks while ext4 uses a block size of 1024 bytes
|
|
losetup -P $2 $1
|
|
mkfs.ext4 -F -b 1024 -m 0 -O ^has_journal ${2}p2 $(($size / 2))
|
|
|
|
# mount the / partition
|
|
mount -o noatime ${2}p2 $5
|
|
}
|
|
|
|
# create a 2GB image with the Chrome OS partition layout
|
|
create_image librean-stretch-c201-libre-2GB.img $outdev 50M 40 $outmnt
|
|
|
|
# INCLUDES=apt-utils,libc6,libdebconfclient0,awk,libz2-1.0,libblzma5,libselinux1,tar,libtinfo5,zlib1g,udev,kmod,net-tools,traceroute,iproute2,isc-dhcp-client,wpasupplicant,iw,alsa-utils,cgpt,vim-tiny,less,psmisc,netcat-openbsd,ca-certificates,bzip2,xz-utils,unscd,lightdm,lightdm-gtk-greeter,xfce4,xorg,ifupdown,nano,wicd,wicd-curses
|
|
|
|
# install Debian on it
|
|
export LC_ALL="en_US.UTF-8" #Change this as necessary if not US
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
qemu-debootstrap --arch armhf stretch --include locales,init $outmnt http://deb.debian.org/debian
|
|
chroot $outmnt passwd -d root
|
|
echo -n debsus > $outmnt/etc/hostname
|
|
cp -R os_configs/ $outmnt/os_configs/
|
|
cp Install.sh $outmnt/Install.sh
|
|
ls $outmnt/
|
|
chmod +x $outmnt/os_configs/sound.sh
|
|
chmod +x $outmnt/Install.sh
|
|
#install -D -m 644 80disable-recommends $outmnt/etc/apt/apt.conf.d/80disable-recommends #This should fix the issue of crda being installed but unconfigured causing regulatory.db firmware loading errors in dmesg
|
|
#cp -f /etc/resolv.conf $outmnt/etc/
|
|
cp /etc/hosts $outmnt/etc/ #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests
|
|
cp sources.list $outmount/etc/apt/sources.list
|
|
cp /etc/locale.gen $outmnt/etc/
|
|
# chroot $outmnt locale-gen
|
|
chroot $outmnt apt update
|
|
chroot $outmnt apt install -y initscripts udev kmod net-tools inetutils-ping traceroute iproute2 isc-dhcp-client wpasupplicant iw alsa-utils cgpt vim-tiny less psmisc netcat-openbsd ca-certificates bzip2 xz-utils ifupdown nano apt-utils python python-urwid
|
|
chroot $outmnt apt-get autoremove --purge
|
|
chroot $outmnt apt-get clean
|
|
chroot $outmnt apt-get install -y -d xorg acpi-support lightdm tasksel dpkg librsvg2-common xorg xserver-xorg-input-libinput alsa-utils anacron avahi-daemon eject iw libnss-mdns xdg-utils lxqt wicd-daemon wicd wicd-curses wicd-gtk xserver-xorg-input-synaptics
|
|
#sed -i s/'enable-cache hosts no'/'enable-cache hosts yes'/ -i $outmnt/etc/nscd.conf
|
|
#rm -f $outmnt/etc/resolv.conf
|
|
rm -rf $outmnt/etc/hosts #This is what https://wiki.debian.org/EmDebian/CrossDebootstrap suggests
|
|
|
|
|
|
# put the kernel in the kernel partition, modules in /lib/modules and AR9271
|
|
# firmware in /lib/firmware
|
|
dd if=linux-$KVER/vmlinux.kpart of=${outdev}p1 conv=notrunc
|
|
make -C linux-$KVER ARCH=arm INSTALL_MOD_PATH=$outmnt modules_install
|
|
rm -f $outmnt/lib/modules/3.14.0/{build,source}
|
|
install -D -m 644 open-ath9k-htc-firmware/target_firmware/htc_9271.fw $outmnt/lib/firmware/ath9k_htc/htc_9271-1.4.0.fw
|
|
|
|
# create a 15GB image
|
|
create_image librean-stretch-c201-libre-15GB.img $indev 512 30777343 $inmnt
|
|
|
|
# copy the kernel and / of the 2GB image to the 15GB one
|
|
dd if=${outdev}p1 of=${indev}p1 conv=notrunc
|
|
cp -a $outmnt/* $inmnt/
|
|
|
|
umount -l $inmnt
|
|
rmdir $inmnt
|
|
losetup -d $indev
|
|
|
|
# move the 15GB image inside the 2GB one
|
|
cp -f Librean-stretch-c201-libre-15GB.img $outmnt/
|
|
echo "DONE!"
|
|
cleanup
|
|
|