2015-12-02 20:33:32 +01:00
|
|
|
#!/bin/bash
|
|
|
|
#
|
|
|
|
# Copyright (c) 2015 Igor Pecovnik, igor.pecovnik@gma**.com
|
|
|
|
#
|
|
|
|
# This file is licensed under the terms of the GNU General Public
|
|
|
|
# License version 2. This program is licensed "as is" without any
|
|
|
|
# warranty of any kind, whether express or implied.
|
|
|
|
#
|
|
|
|
# This file is a part of tool chain https://github.com/igorpecovnik/lib
|
|
|
|
#
|
2015-12-18 12:22:42 +03:00
|
|
|
# Functions:
|
2016-06-24 17:30:39 +03:00
|
|
|
# install_common
|
2015-12-18 12:22:42 +03:00
|
|
|
# install_distribution_specific
|
2015-12-02 20:33:32 +01:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
install_common()
|
|
|
|
{
|
|
|
|
display_alert "Applying common tweaks" "" "info"
|
|
|
|
|
2016-09-07 22:05:53 +03:00
|
|
|
# add dummy fstab entry to make mkinitramfs happy
|
|
|
|
echo "/dev/mmcblk0p1 / $ROOTFS_TYPE defaults 0 1" >> $CACHEDIR/sdcard/etc/fstab
|
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
# create modules file
|
|
|
|
if [[ $BRANCH == next || $BRANCH == dev ]]; then
|
|
|
|
tr ' ' '\n' <<< "$MODULES_NEXT" > $CACHEDIR/sdcard/etc/modules
|
|
|
|
else
|
|
|
|
tr ' ' '\n' <<< "$MODULES" > $CACHEDIR/sdcard/etc/modules
|
|
|
|
fi
|
|
|
|
|
|
|
|
# remove default interfaces file if present
|
|
|
|
# before installing board support package
|
|
|
|
rm $CACHEDIR/sdcard/etc/network/interfaces
|
|
|
|
|
2016-08-30 19:25:32 +03:00
|
|
|
mkdir -p $CACHEDIR/sdcard/selinux
|
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
# console fix due to Debian bug
|
|
|
|
sed -e 's/CHARMAP=".*"/CHARMAP="'$CONSOLE_CHAR'"/g' -i $CACHEDIR/sdcard/etc/default/console-setup
|
|
|
|
|
|
|
|
# change time zone data
|
|
|
|
echo $TZDATA > $CACHEDIR/sdcard/etc/timezone
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg-reconfigure -f noninteractive tzdata >/dev/null 2>&1"
|
|
|
|
|
|
|
|
# set root password
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "(echo $ROOTPWD;echo $ROOTPWD;) | passwd root >/dev/null 2>&1"
|
|
|
|
# force change root password at first login
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "chage -d 0 root"
|
|
|
|
|
|
|
|
# tmpfs configuration
|
2016-08-20 22:53:50 +03:00
|
|
|
# Takes effect only in Wheezy and Trusty
|
2016-06-24 17:30:39 +03:00
|
|
|
if [[ -f $CACHEDIR/sdcard/etc/default/tmpfs ]]; then
|
|
|
|
sed -e 's/#RAMTMP=no/RAMTMP=yes/g' -i $CACHEDIR/sdcard/etc/default/tmpfs
|
|
|
|
sed -e 's/#RUN_SIZE=10%/RUN_SIZE=128M/g' -i $CACHEDIR/sdcard/etc/default/tmpfs
|
|
|
|
sed -e 's/#LOCK_SIZE=/LOCK_SIZE=/g' -i $CACHEDIR/sdcard/etc/default/tmpfs
|
|
|
|
sed -e 's/#SHM_SIZE=/SHM_SIZE=128M/g' -i $CACHEDIR/sdcard/etc/default/tmpfs
|
|
|
|
sed -e 's/#TMP_SIZE=/TMP_SIZE=1G/g' -i $CACHEDIR/sdcard/etc/default/tmpfs
|
|
|
|
fi
|
|
|
|
|
|
|
|
# add custom bashrc loading
|
|
|
|
cat <<-EOF >> $CACHEDIR/sdcard/etc/bash.bashrc
|
|
|
|
if [[ -f /etc/bash.bashrc.custom ]]; then
|
|
|
|
. /etc/bash.bashrc.custom
|
|
|
|
fi
|
|
|
|
EOF
|
|
|
|
|
|
|
|
# display welcome message at first root login
|
|
|
|
touch $CACHEDIR/sdcard/root/.not_logged_in_yet
|
|
|
|
|
|
|
|
[[ $(type -t install_boot_script) == function ]] && install_boot_script
|
|
|
|
|
|
|
|
# initial date for fake-hwclock
|
|
|
|
date -u '+%Y-%m-%d %H:%M:%S' > $CACHEDIR/sdcard/etc/fake-hwclock.data
|
|
|
|
|
|
|
|
echo $HOST > $CACHEDIR/sdcard/etc/hostname
|
|
|
|
|
|
|
|
# this is needed for ubuntu
|
|
|
|
rm $CACHEDIR/sdcard/etc/resolv.conf
|
|
|
|
echo "nameserver 8.8.8.8" >> $CACHEDIR/sdcard/etc/resolv.conf
|
|
|
|
|
|
|
|
# set hostname in hosts file
|
2016-08-20 22:53:50 +03:00
|
|
|
cat <<-EOF > $CACHEDIR/sdcard/etc/hosts
|
|
|
|
127.0.0.1 localhost $HOST
|
|
|
|
::1 localhost $HOST ip6-localhost ip6-loopback
|
|
|
|
fe00::0 ip6-localnet
|
|
|
|
ff00::0 ip6-mcastprefix
|
|
|
|
ff02::1 ip6-allnodes
|
|
|
|
ff02::2 ip6-allrouters
|
|
|
|
EOF
|
2016-06-24 17:30:39 +03:00
|
|
|
|
|
|
|
# we need package names for dtb, uboot and headers
|
|
|
|
DTB_TMP="${CHOSEN_KERNEL/image/dtb}"
|
|
|
|
FW_TMP="${CHOSEN_KERNEL/image/firmware-image}"
|
|
|
|
HEADERS_TMP="${CHOSEN_KERNEL/image/headers}"
|
|
|
|
|
|
|
|
display_alert "Installing kernel" "$CHOSEN_KERNEL" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${CHOSEN_KERNEL}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-24 17:30:39 +03:00
|
|
|
|
|
|
|
display_alert "Installing u-boot" "$CHOSEN_UBOOT" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "DEVICE=/dev/null dpkg -i /tmp/debs/${CHOSEN_UBOOT}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-24 17:30:39 +03:00
|
|
|
|
|
|
|
display_alert "Installing headers" "$HEADERS_TMP" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${HEADERS_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-09-02 08:31:02 +02:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
# install firmware
|
2016-08-30 19:25:32 +03:00
|
|
|
#if [[ -f $CACHEDIR/sdcard/tmp/debs/${FW_TMP}_${REVISION}_${ARCH}.deb ]]; then
|
2016-06-24 17:30:39 +03:00
|
|
|
# display_alert "Installing firmware" "$FW_TMP" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
# chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${FW_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-24 17:30:39 +03:00
|
|
|
#fi
|
|
|
|
|
2016-09-02 08:31:02 +02:00
|
|
|
if [[ -f $CACHEDIR/sdcard/tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb ]]; then
|
2016-06-24 17:30:39 +03:00
|
|
|
display_alert "Installing generic firmware" "armbian-firmware" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/armbian-firmware_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-24 17:30:39 +03:00
|
|
|
fi
|
|
|
|
|
2016-09-02 08:31:02 +02:00
|
|
|
if [[ -f $CACHEDIR/sdcard/tmp/debs/${DTB_TMP}_${REVISION}_${ARCH}.deb ]]; then
|
2016-06-24 17:30:39 +03:00
|
|
|
display_alert "Installing DTB" "$DTB_TMP" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/${DTB_TMP}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-24 17:30:39 +03:00
|
|
|
fi
|
|
|
|
|
2016-06-27 15:05:51 +03:00
|
|
|
# install board support package
|
|
|
|
display_alert "Installing board support package" "$BOARD" "info"
|
2016-08-30 19:25:32 +03:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/debs/$RELEASE/${CHOSEN_ROOTFS}_${REVISION}_${ARCH}.deb" >> $DEST/debug/install.log 2>&1
|
2016-06-27 15:05:51 +03:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
# copy boot splash image
|
|
|
|
cp $SRC/lib/bin/armbian.bmp $CACHEDIR/sdcard/boot/boot.bmp
|
|
|
|
|
|
|
|
# execute $LINUXFAMILY-specific tweaks from $BOARD.conf
|
|
|
|
[[ $(type -t family_tweaks) == function ]] && family_tweaks
|
|
|
|
|
|
|
|
# enable firstrun script
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "update-rc.d firstrun defaults >/dev/null 2>&1"
|
2015-12-02 20:33:32 +01:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
# remove .old on new image
|
|
|
|
rm -rf $CACHEDIR/sdcard/boot/dtb.old
|
2016-08-20 22:53:50 +03:00
|
|
|
|
|
|
|
# enable verbose kernel messages on first boot
|
|
|
|
touch $CACHEDIR/sdcard/boot/.verbose
|
2016-06-24 17:30:39 +03:00
|
|
|
}
|
2015-12-26 10:25:00 +01:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
install_distribution_specific()
|
|
|
|
{
|
|
|
|
display_alert "Applying distribution specific tweaks for" "$RELEASE" "info"
|
2016-03-06 14:13:34 +03:00
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
case $RELEASE in
|
2015-12-02 20:33:32 +01:00
|
|
|
|
2016-08-20 22:53:50 +03:00
|
|
|
wheezy)
|
2015-12-02 20:33:32 +01:00
|
|
|
# add serial console
|
2016-03-17 20:16:26 +01:00
|
|
|
echo T0:2345:respawn:/sbin/getty -L $SERIALCON 115200 vt100 >> $CACHEDIR/sdcard/etc/inittab
|
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# don't clear screen on boot console
|
2016-03-17 20:16:26 +01:00
|
|
|
sed -e 's/getty 38400 tty1/getty --noclear 38400 tty1/g' -i $CACHEDIR/sdcard/etc/inittab
|
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# disable some getties
|
2016-03-17 20:16:26 +01:00
|
|
|
sed -e 's/5:23:respawn/#5:23:respawn/g' -i $CACHEDIR/sdcard/etc/inittab
|
|
|
|
sed -e 's/6:23:respawn/#6:23:respawn/g' -i $CACHEDIR/sdcard/etc/inittab
|
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# install ramlog
|
2016-03-17 20:16:26 +01:00
|
|
|
cp $SRC/lib/bin/ramlog_2.0.0_all.deb $CACHEDIR/sdcard/tmp
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "dpkg -i /tmp/ramlog_2.0.0_all.deb >/dev/null 2>&1"
|
2015-12-02 20:33:32 +01:00
|
|
|
# enabled back at first run. To remove errors
|
2016-03-17 20:16:26 +01:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "service ramlog disable >/dev/null 2>&1"
|
|
|
|
rm $CACHEDIR/sdcard/tmp/ramlog_2.0.0_all.deb
|
|
|
|
sed -e 's/TMPFS_RAMFS_SIZE=/TMPFS_RAMFS_SIZE=512m/g' -i $CACHEDIR/sdcard/etc/default/ramlog
|
|
|
|
sed -e 's/$remote_fs $time/$remote_fs $time ramlog/g' -i $CACHEDIR/sdcard/etc/init.d/rsyslog
|
|
|
|
sed -e 's/umountnfs $time/umountnfs $time ramlog/g' -i $CACHEDIR/sdcard/etc/init.d/rsyslog
|
2015-12-02 20:33:32 +01:00
|
|
|
;;
|
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
jessie)
|
2015-12-02 20:33:32 +01:00
|
|
|
# enable root login for latest ssh on jessie
|
2016-03-17 20:16:26 +01:00
|
|
|
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config
|
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# add serial console
|
2016-08-21 12:37:09 +02:00
|
|
|
#cp $SRC/lib/config/ttyS0.conf $CACHEDIR/sdcard/etc/init/$SERIALCON.conf
|
|
|
|
#sed -e "s/ttyS0/$SERIALCON/g" -i $CACHEDIR/sdcard/etc/init/$SERIALCON.conf
|
2016-03-17 20:16:26 +01:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1"
|
|
|
|
mkdir -p "$CACHEDIR/sdcard/etc/systemd/system/serial-getty@$SERIALCON.service.d"
|
2016-05-01 15:01:42 +03:00
|
|
|
printf "[Service]\nExecStart=\nExecStart=-/sbin/agetty -L 115200 %%I $TERM" > "$CACHEDIR/sdcard/etc/systemd/system/serial-getty@$SERIALCON.service.d/10-rate.conf"
|
2015-12-19 13:01:14 +03:00
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# don't clear screen tty1
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p "$CACHEDIR/sdcard/etc/systemd/system/getty@tty1.service.d/"
|
2016-05-01 14:24:40 +03:00
|
|
|
printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/sdcard/etc/systemd/system/getty@tty1.service.d/10-noclear.conf"
|
2016-03-17 20:16:26 +01:00
|
|
|
|
2015-12-18 21:52:33 +01:00
|
|
|
# seting timeout
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p $CACHEDIR/sdcard/etc/systemd/system/systemd-modules-load.service.d/
|
2016-05-01 14:24:40 +03:00
|
|
|
printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/sdcard/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf
|
2016-01-31 15:05:17 +03:00
|
|
|
|
|
|
|
# handle PMU power button
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p $CACHEDIR/sdcard/etc/udev/rules.d/
|
|
|
|
cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/sdcard/etc/udev/rules.d/
|
2015-12-02 20:33:32 +01:00
|
|
|
;;
|
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
trusty)
|
2015-12-02 20:33:32 +01:00
|
|
|
# add serial console
|
2016-08-20 22:53:50 +03:00
|
|
|
cat <<-EOF > $CACHEDIR/sdcard/etc/init/$SERIALCON.conf
|
|
|
|
start on stopped rc RUNLEVEL=[2345]
|
|
|
|
stop on runlevel [!2345]
|
|
|
|
|
|
|
|
respawn
|
|
|
|
exec /sbin/getty --noclear 115200 $SERIALCON
|
|
|
|
EOF
|
2015-12-02 20:33:32 +01:00
|
|
|
|
|
|
|
# don't clear screen tty1
|
2016-06-24 17:30:39 +03:00
|
|
|
sed -e s,"exec /sbin/getty","exec /sbin/getty --noclear",g -i $CACHEDIR/sdcard/etc/init/tty1.conf
|
2016-03-17 20:16:26 +01:00
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# disable some getties
|
2016-03-17 20:16:26 +01:00
|
|
|
rm -f $CACHEDIR/sdcard/etc/init/tty5.conf
|
|
|
|
rm -f $CACHEDIR/sdcard/etc/init/tty6.conf
|
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# enable root login for latest ssh on trusty
|
2016-03-17 20:16:26 +01:00
|
|
|
sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config
|
|
|
|
|
2016-05-17 15:37:07 +02:00
|
|
|
# remove legal info from Ubuntu
|
|
|
|
[[ -f $CACHEDIR/sdcard/etc/legal ]] && rm $CACHEDIR/sdcard/etc/legal
|
2016-06-24 17:30:39 +03:00
|
|
|
|
2015-12-02 20:33:32 +01:00
|
|
|
# that my custom motd works well
|
2016-04-29 12:54:41 +03:00
|
|
|
if [[ -d $CACHEDIR/sdcard/etc/update-motd.d ]]; then
|
2016-03-17 20:16:26 +01:00
|
|
|
mv $CACHEDIR/sdcard/etc/update-motd.d $CACHEDIR/sdcard/etc/update-motd.d-backup
|
2015-12-02 20:33:32 +01:00
|
|
|
fi
|
|
|
|
|
2016-03-17 20:16:26 +01:00
|
|
|
# remove what's anyway not working
|
2016-04-29 12:54:41 +03:00
|
|
|
#chroot $CACHEDIR/sdcard /bin/bash -c "apt-get remove --auto-remove ureadahead"
|
2016-03-17 20:16:26 +01:00
|
|
|
rm $CACHEDIR/sdcard/etc/init/ureadahead*
|
|
|
|
rm $CACHEDIR/sdcard/etc/init/plymouth*
|
2015-12-02 20:33:32 +01:00
|
|
|
;;
|
|
|
|
|
2016-06-24 17:30:39 +03:00
|
|
|
xenial)
|
2016-03-08 21:22:35 +03:00
|
|
|
# enable root login for latest ssh on jessie
|
2016-04-05 16:04:48 +03:00
|
|
|
sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' $CACHEDIR/sdcard/etc/ssh/sshd_config
|
2016-03-08 21:22:35 +03:00
|
|
|
|
2016-05-17 15:37:07 +02:00
|
|
|
# remove legal info from Ubuntu
|
|
|
|
[[ -f $CACHEDIR/sdcard/etc/legal ]] && rm $CACHEDIR/sdcard/etc/legal
|
2016-06-24 17:30:39 +03:00
|
|
|
|
2016-03-17 20:16:26 +01:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "systemctl --no-reload enable serial-getty@$SERIALCON.service >/dev/null 2>&1"
|
2016-05-08 20:27:26 +03:00
|
|
|
|
|
|
|
# Fix for PuTTY/KiTTY & ncurses-based dialogs (i.e. alsamixer) over serial
|
|
|
|
# may break other terminals like screen
|
|
|
|
#printf "[Service]\nEnvironment=TERM=xterm-256color" > /etc/systemd/system/serial-getty@.service.d/10-term.conf
|
2016-03-08 21:22:35 +03:00
|
|
|
|
|
|
|
# don't clear screen tty1
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p "$CACHEDIR/sdcard/etc/systemd/system/getty@tty1.service.d/"
|
2016-05-01 14:24:40 +03:00
|
|
|
printf "[Service]\nTTYVTDisallocate=no" > "$CACHEDIR/sdcard/etc/systemd/system/getty@tty1.service.d/10-noclear.conf"
|
2016-03-08 21:22:35 +03:00
|
|
|
|
|
|
|
# seting timeout
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p $CACHEDIR/sdcard/etc/systemd/system/systemd-modules-load.service.d/
|
2016-05-01 14:24:40 +03:00
|
|
|
printf "[Service]\nTimeoutStopSec=10" > $CACHEDIR/sdcard/etc/systemd/system/systemd-modules-load.service.d/10-timeout.conf
|
2016-03-08 21:22:35 +03:00
|
|
|
|
|
|
|
# handle PMU power button
|
2016-03-17 20:16:26 +01:00
|
|
|
mkdir -p $CACHEDIR/sdcard/etc/udev/rules.d/
|
|
|
|
cp $SRC/lib/config/71-axp-power-button.rules $CACHEDIR/sdcard/etc/udev/rules.d/
|
2016-03-11 21:52:54 +03:00
|
|
|
|
|
|
|
# disable ureadahead
|
2016-05-08 20:27:26 +03:00
|
|
|
# needs kernel tracing options that AFAIK are present only in mainline
|
2016-03-17 20:16:26 +01:00
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "systemctl --no-reload mask ureadahead.service >/dev/null 2>&1"
|
|
|
|
chroot $CACHEDIR/sdcard /bin/bash -c "systemctl --no-reload mask setserial.service etc-setserial.service >/dev/null 2>&1"
|
2016-03-08 21:22:35 +03:00
|
|
|
;;
|
2016-06-24 17:30:39 +03:00
|
|
|
|
2016-03-08 21:22:35 +03:00
|
|
|
*)
|
2016-06-24 17:30:39 +03:00
|
|
|
exit_with_error "Unknown OS release selected"
|
|
|
|
;;
|
|
|
|
esac
|
2016-01-22 16:10:59 +07:00
|
|
|
}
|