|
- #!/bin/bash
-
- if [ "$IN_CHROOT" != "1" ] ; then
- echo This is supposed to run inside the chroot, oops
- exit 1
- fi
-
- set -e
- set -x
-
- # Set up live username and hostname
- cat >/etc/casper.conf <<"EOF"
- export USERNAME="nilm"
- export USERFULLNAME="NILM User"
- export HOST="nilmbuntu"
- export BUILD_SYSTEM="Ubuntu"
- export FLAVOUR="NILMbuntu"
-
- # Do the inital user setup even though UID 1000 already exists.
- # This also needs to be set in /etc/environment, for ubiquity,
- # but we do that in preseed/early_command so that it only shows
- # up in the LiveCD image.
- export OVERRIDE_SYSTEM_USER=true
- EOF
-
- # Set up NILM-specific stuff to get added to /etc/hosts after installation
- cat >/etc/hosts.nilm <<"EOF"
- 127.0.2.1 nilm.primary
- 127.0.2.2 nilm.secondary
- EOF
- # And copy it for now (although it will get overwritten at boot)
- cat /etc/hosts.nilm >> /etc/hosts
-
- # Upgrade packages and remove old kernels
- apt update
- apt -y dist-upgrade
- apt -y --purge autoremove
- for VER in $(ls --sort=version /lib/modules/ | head -n -1) ; do
- apt -y --purge remove "linux-.*$VER"
- done
-
- # Disable upgrade popups
- sed -i -s -e 's/Prompt=.*/Prompt=never/g' \
- /etc/update-manager/release-upgrades || true
-
- # Set up & install postfix for local mail delivery
- debconf-set-selections <<"EOF"
- postfix postfix/mailname string localdomain
- postfix postfix/main_mailer_type select Local only
- EOF
- apt -y install postfix
-
- # Required packages
- apt -y install \
- python3 \
- python2.7 \
- python2.7-dev \
- python-setuptools \
- python-pip \
- cython \
- git \
- build-essential \
- python-cherrypy3 \
- python-decorator \
- python-simplejson \
- python-requests \
- python-dateutil \
- python-tz \
- python-progressbar \
- python-psutil \
- python-numpy \
- python-nose \
- python-coverage \
- apache2 \
- libapache2-mod-wsgi \
- python-scipy \
- python-daemon
-
- # Install other useful stuff
- apt -y install \
- adb \
- avrdude \
- chromium-browser \
- curl \
- debconf-utils \
- devscripts \
- dfu-programmer \
- dlocate \
- emacs \
- emacs-goodies-el \
- esptool \
- flashrom \
- gcc-arm-none-eabi \
- gcc-avr \
- gdb-arm-none-eabi \
- gddrescue \
- gnuplot \
- help2man \
- ipython \
- libnewlib-arm-none-eabi \
- libreoffice \
- libstdc++-arm-none-eabi-newlib \
- texlive \
- mailutils \
- moreutils \
- mutt \
- network-manager-openvpn-gnome \
- octave \
- octave-missing-functions \
- octave-signal \
- openocd \
- openssh-server \
- openssl \
- openvpn \
- python-matplotlib \
- screen \
- sigrok \
- silversearcher-ag \
- subversion \
- tcpdump \
- zip
-
- # Install the packages required for en_US language support
- # This avoids a prompt and package download at first install
- apt -y install $(/usr/bin/check-language-support -l en_US)
-
- # Set up timezone to America/New_York for the live CD
- ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
- dpkg-reconfigure -f noninteractive tzdata
-
- # Put some default desktop shortcuts in place
- DESKTOP=/etc/skel/Desktop
- mkdir -p $DESKTOP
- cp /usr/share/applications/exo-terminal-emulator.desktop $DESKTOP || true
- cp /usr/share/applications/exo-web-browser.desktop $DESKTOP || true
- chmod +x $DESKTOP/*
-
- # Custom background image (which was already copied in by customize.sh)
- XML=/etc/xdg/xdg-xubuntu/xfce4/xfconf/xfce-perchannel-xml/xfce4-desktop.xml
- BG=/usr/share/xfce4/backdrops/nilmbuntu.png
- apt -y install xmlstarlet
- xmlstarlet ed -L -u "//property[@name='image-path']/@value" -v "$BG" $XML
- xmlstarlet ed -L -u "//property[@name='image-style']/@value" -v "3" $XML
-
- # Configure Firefox with our default homepage (now irrelevant since
- # it won't be the default browser)
- HOMEPAGE="http://www.wattsworth.net/"
- cat >/etc/firefox/syspref.js <<EOF
- pref("browser.startup.homepage", "${HOMEPAGE}");
- pref("extensions.ubufox@ubuntu.com.custom_homepage", "${HOMEPAGE}");
- pref("browser.startup.homepage_override.mstone", "ignore");
- EOF
-
- # Set up Chromium as default browser
- update-alternatives --set x-www-browser /usr/bin/chromium-browser
- update-alternatives --set gnome-www-browser /usr/bin/chromium-browser
- mkdir -p /etc/skel/.config/xfce4
- cat >/etc/skel/.config/xfce4/helpers.rc <<"EOF"
- WebBrowser=chromium-browser
- EOF
- mkdir -p /etc/skel/.local/share/xfce4/helpers
- cat >/etc/skel/.local/share/xfce4/helpers/chromium-browser.desktop <<"EOF"
- [Desktop Entry]
- Version=1.0
- Name=Chromium Web Browser
- X-XFCE-Category=WebBrowser
- X-XFCE-Commands=chromium-browser
- X-XFCE-CommandsWithParameter=chromium-browser "%s"
- Exec=chromium-browser %U
- Type=X-XFCE-Helper
- Icon=chromium-browser
- MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
- StartupNotify=true
- EOF
-
- # Make Chromium a little nicer:
- # - No first run
- mkdir -p /etc/skel/.config/chromium/Default
- touch '/etc/skel/.config/chromium/First Run'
- # - Set up some default bookmarks on the bookmark bar
- cat >/etc/skel/.config/chromium/Default/Bookmarks <<"EOF"
- { "version": 1, "roots": {
- "other": { "id": "2", "name": "Other bookmarks", "type": "folder",
- "children": [ ] },
- "synced": { "id": "3", "name": "Mobile bookmarks", "type": "folder",
- "children": [ ] },
- "bookmark_bar": { "id": "1", "name": "Bookmarks bar", "type": "folder",
- "children": [ {
- "id": "6", "type": "url",
- "name": "Wattsworth",
- "url": "http://www.wattsworth.net/"
- }, {
- "id": "7", "type": "url",
- "name": "Standalone NILM",
- "type": "url",
- "url": "http://nilm.primary/"
- } ] }
- } }
- EOF
-
-
- # Create NILM user. This should happen after anything that we put in
- # /etc/skel, since files get copied from there. Note that this user
- # is the same as what we have in the preseed file and casper.conf
- if ! getent passwd nilm ; then
- adduser --gecos "NILM User" --disabled-password nilm
- fi
-
- # Make sure locate databases are up-to-date
- /etc/cron.daily/mlocate
- /etc/cron.daily/dlocate
-
- # Make sure initramfs was regenerated with casper changes
- update-initramfs -u
|