From 20bc66469002aef59d59fb0fcb40539668563acb Mon Sep 17 00:00:00 2001 From: Marcos Fadul Date: Fri, 17 Apr 2020 11:53:48 +0200 Subject: [PATCH] Initial commit --- .gitignore | 1 + .travis.yml | 47 +++++++ README.md | 107 +++++++++++++++ build.sh | 176 +++++++++++++++++++++++++ build_in_docker.sh | 14 ++ files/audio/91-pulseaudio-custom.rules | 7 + files/audio/AppleT2.conf | 103 +++++++++++++++ files/audio/apple-t2.conf | 55 ++++++++ files/chroot_build.sh | 145 ++++++++++++++++++++ files/grub/grub.cfg | 55 ++++++++ files/preseed/cli.seed | 5 + files/preseed/ltsp.seed | 11 ++ files/preseed/ubuntu.seed | 9 ++ 13 files changed, 735 insertions(+) create mode 100644 .gitignore create mode 100644 .travis.yml create mode 100644 README.md create mode 100755 build.sh create mode 100755 build_in_docker.sh create mode 100644 files/audio/91-pulseaudio-custom.rules create mode 100644 files/audio/AppleT2.conf create mode 100644 files/audio/apple-t2.conf create mode 100755 files/chroot_build.sh create mode 100644 files/grub/grub.cfg create mode 100644 files/preseed/cli.seed create mode 100644 files/preseed/ltsp.seed create mode 100644 files/preseed/ubuntu.seed diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1e4b237 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build_files diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..570cc46 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,47 @@ +--- +language: bash + +os: + - linux + +services: + - docker + +branches: + only: + - master + +stages: + - test + - build_deploy + +jobs: + include: + - stage: test + name: "YamlLint" + script: | + docker run --rm -v $(pwd):/repo -it alpine:latest /bin/sh -c ' + cd /repo + apk add --no-cache python3 + pip3 install yamllint + yamllint . + ' + - stage: test + name: "ShellCheck" + script: | + docker run --rm -v $(pwd):/repo -it alpine:latest /bin/sh -c ' + cd /repo + apk add --no-cache shellcheck bash + shellcheck ./*.sh + ' + - stage: build_deploy + name: "Build Ubuntu and Deploy to GitHub Releases" + script: ./build_in_docker.sh + deploy: + provider: releases + api_key: "$GITHUB_TOKEN" + file_glob: true + file: "/build_files/output_zip/*" + skip_cleanup: true + on: + tags: true diff --git a/README.md b/README.md new file mode 100644 index 0000000..fb8dbfb --- /dev/null +++ b/README.md @@ -0,0 +1,107 @@ +# mbp-ubuntu + +[![Build Status](https://travis-ci.com/marcosfad/mbp-ubuntu.svg?branch=master)](https://travis-ci.com/marcosfad/mbp-ubuntu) + +UBUNTU 20.04 ISO with Apple T2 patches built-in (Macbooks produced >= 2018). + +All available Apple T2 drivers are integrated with this iso. Most things work, besides those mentioned in [not working section](#not-working). + +Kernel - + +Drivers: + +- Apple T2 (audio, keyboard, touchpad) - +- Apple SMC - +- Touchbar - + +> Tested on: Macbook Pro 16,1 16" 2019 i9 TouchBar + +``` +Boot ROM Version: 220.270.99.0.0 (iBridge: 16.16.6571.0.0,0) +macOS Mojave: 10.14.6 (18G103) +``` + +## How to install + +- Turn off secure boot - +- Download .iso from releases section - + - If it's splitted into multiple zip parts, you need to join splitted files into one and then extract it via `unzip` or extract them directly via `7z x` or `7za x` + - +- Burn the image on USB stick >=8GB via: + - dd - `dd bs=4M if=/home/user/Downloads/ubuntu-20.04-beta-minimal-mbp.iso of=/dev/sdc conv=fdatasync status=progress` + - rufus (GPT)- + - balenaEtcher- + - don't use `livecd-iso-to-disk`, because it's overwriting grub settings +- Install Ubuntu + - Boot directly from macOS boot manager. (You can boot into it by pressing and holding option key after clicking the power-on button). + - There will be three boot options available, usually the third one works for me. (There are three of them, because there are three partitions in ISO: 1) ISO9660: with installer data, 2) fat32, 3) hfs+) + - I recommend to shrink (resize) macOS APFS partition and not removing macOS installation entirely from your MacBook, because it's the only way to keep your device up-to-date. macOS OS updates also contains security patches to EFI/Apple T2 + - HowTo: # Steps to Resize Mac Partition + - You should use standard partition layout during partitioning your Disk in anaconda, because i haven't tested LVM scenario yet. + - /boot/efi - 1024MB fat32 + - /boot - 1024MB EXT4 + - / - xxxGB EXT4 + +- Put wifi firmware files to `/lib/firmware/brcm/` + - tutorial - +- You can change mappings of ctrl, fn, option keys (PC keyboard mappings) by creating `/etc/modprobe.d/hid_apple.conf` file and recreating grub config. All available modifications could be found here: +``` +# /etc/modprobe.d/hid_apple.conf +options hid_apple swap_fn_leftctrl=1 +options hid_apple swap_opt_cmd=1 + +grub2-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg +``` + +## Not working + +- Dynamic audio input/output change (on connecting/disconnecting headphones jack) +- TouchID - (@MCMrARM is working on it - https://github.com/Dunedan/mbp-2016-linux/issues/71#issuecomment-528545490) +- Thunderbolt (is disabled, because driver was causing kernel panics (not tested with 5.5 kernel)) +- Microphone (it's recognised with new apple t2 sound driver, but there is a low mic volume amp) + +## TODO + + +## Known issues + +- Kernel/Mac related issues are mentioned in kernel repo + +- Macbooks with Apple T2 can't boot EFI binaries from HFS+ formatted ESP - only FAT32 (FAT32 have to be labelled as msftdata). + +- `ctrl+x` is not working in GRUB, so if you are trying to change kernel parameters - start your OS by clicking `ctrl+shift+f10` on external keyboard + +## Docs + +- Discord: +- WiFi firmware: +- Linux on a MBP Late 2016: + +### Ubuntu + +- +- + +### Github + +- GitHub issue (RE history): +- VHCI+Sound driver (Apple T2): +- hid-apple keyboard backlight patch: +- alsa/pulseaudio config files: +- TouchBar driver: +- Kernel patches (all are mentioned in github issue above): +- ArchLinux kernel patches: +- ArchLinux installation guide: +- hid-apple-patched module for changing mappings of ctrl, fn, option keys: +- Audio configuration: + +## Credits + +- @mikeeq - thanks for the amazing work in mbp-fedora +- @MCMrARM - thanks for all RE work +- @ozbenh - thanks for submitting NVME patch +- @roadrunner2 - thanks for SPI (touchbar) driver +- @aunali1 - thanks for ArchLinux Kernel CI +- @ppaulweber - thanks for keyboard and Macbook Air patches +- @kevineinarsson - thanks for the audio settings +- @roadrunner2 - thanks for the overview diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..4a04f18 --- /dev/null +++ b/build.sh @@ -0,0 +1,176 @@ +#!/bin/bash + +# https://itnext.io/how-to-create-a-custom-ubuntu-live-from-scratch-dd3b3f213f81 + +set -eu -o pipefail + +ROOT_PATH=$(pwd) +WORKING_PATH=$(pwd)/build_files + +echo >&2 "===]> Info: Build dependencies... "; +export DEBIAN_FRONTEND=noninteractive + +apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ + binutils \ + debootstrap \ + squashfs-tools \ + xorriso \ + grub-pc-bin \ + grub-efi-amd64-bin \ + mtools + +if [ -d "$WORKING_PATH" ]; then + rm -rf "$WORKING_PATH" +fi +mkdir -p "$WORKING_PATH" + +echo >&2 "===]> Info: Checkout bootstrap... "; +debootstrap \ + --arch=amd64 \ + --variant=minbase \ + focal \ + "$WORKING_PATH/chroot" \ + http://de.archive.ubuntu.com/ubuntu/ + + +echo >&2 "===]> Info: Creating chroot environment... "; +mount --bind /dev "$WORKING_PATH/chroot/dev" +mount --bind /run "$WORKING_PATH/chroot/run" + +cp "$ROOT_PATH/files/chroot_build.sh" "$WORKING_PATH/chroot/chroot_build.sh" +chroot "$WORKING_PATH/chroot" ./chroot_build.sh + + +echo >&2 "===]> Info: Cleanup the chroot environment... "; +umount "$WORKING_PATH/chroot/dev" +umount "$WORKING_PATH/chroot/run" + + +echo >&2 "===]> Info: Create image directory and populate it... "; +cd "$WORKING_PATH" +if [ -d "$WORKING_PATH/image" ]; then + rm -rf "$WORKING_PATH/image" +fi +if [ -e "$WORKING_PATH/ubuntu-for-mbp.iso" ]; then + rm -f "$WORKING_PATH/ubuntu-for-mbp.iso" +fi +mkdir -p image/{casper,isolinux,install} +cp chroot/boot/vmlinuz-**-**-generic image/casper/vmlinuz +cp chroot/boot/initrd.img-**-**-generic image/casper/initrd + +cp -r "$ROOT_PATH/files/preseed" image/ + + +echo >&2 "===]> Info: Create manifest... "; +cd "$WORKING_PATH" +# shellcheck disable=SC2016 +chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | tee image/casper/filesystem.manifest + +cp -v image/casper/filesystem.manifest image/casper/filesystem.manifest-desktop +sed -i '/ubiquity/d' image/casper/filesystem.manifest-desktop +sed -i '/casper/d' image/casper/filesystem.manifest-desktop +sed -i '/discover/d' image/casper/filesystem.manifest-desktop +sed -i '/laptop-detect/d' image/casper/filesystem.manifest-desktop +sed -i '/os-prober/d' image/casper/filesystem.manifest-desktop + + +### Workaround - travis_wait +while true +do + date + sleep 30 +done & +bgPID=$! + +echo >&2 "===]> Info: Compress the chroot... "; +cd "$WORKING_PATH" +mksquashfs chroot image/casper/filesystem.squashfs +printf "%s" "$(du -sx --block-size=1 chroot | cut -f1)" > image/casper/filesystem.size + + +echo >&2 "===]> Info: Create diskdefines... "; +cat < image/README.diskdefines +#define DISKNAME Ubuntu 20.04 LTS "Focal Fossa" - MacBook Pro Beta amd64 +#define TYPE binary +#define TYPEbinary 1 +#define ARCH amd64 +#define ARCHamd64 1 +#define DISKNUM 1 +#define DISKNUM1 1 +#define TOTALNUM 0 +#define TOTALNUM0 1 +EOF + + +echo >&2 "===]> Info: Grub configuration... "; +touch image/ubuntu +cp "$ROOT_PATH/files/grub/grub.cfg" image/isolinux/grub.cfg +cp -r "$ROOT_PATH/files/preseed" image/pressed + +echo >&2 "===]> Info: Create ISO Image for a LiveCD... "; +cd "$WORKING_PATH/image" + +grub-mkstandalone \ + --format=x86_64-efi \ + --output=isolinux/bootx64.efi \ + --locales="" \ + --fonts="" \ + "boot/grub/grub.cfg=isolinux/grub.cfg" + +( + cd isolinux && \ + dd if=/dev/zero of=efiboot.img bs=1M count=10 && \ + sudo mkfs.vfat efiboot.img && \ + LC_CTYPE=C mmd -i efiboot.img efi efi/boot && \ + LC_CTYPE=C mcopy -i efiboot.img ./bootx64.efi ::efi/boot/ +) + +grub-mkstandalone \ + --format=i386-pc \ + --output=isolinux/core.img \ + --install-modules="linux16 linux normal iso9660 biosdisk memdisk search tar ls" \ + --modules="linux16 linux normal iso9660 biosdisk search" \ + --locales="" \ + --fonts="" \ + "boot/grub/grub.cfg=isolinux/grub.cfg" + +cat /usr/lib/grub/i386-pc/cdboot.img isolinux/core.img > isolinux/bios.img + +(find . -type f -print0 | xargs -0 md5sum | grep -v "\./md5sum.txt" > md5sum.txt) + +xorriso \ + -as mkisofs \ + -iso-level 3 \ + -full-iso9660-filenames \ + -volid "Ubuntu 20.04 beta minimal MacBook Pro" \ + -eltorito-boot boot/grub/bios.img \ + -no-emul-boot \ + -boot-load-size 4 \ + -boot-info-table \ + --eltorito-catalog boot/grub/boot.cat \ + --grub2-boot-info \ + --grub2-mbr /usr/lib/grub/i386-pc/boot_hybrid.img \ + -eltorito-alt-boot \ + -e EFI/efiboot.img \ + -no-emul-boot \ + -append_partition 2 0xef isolinux/efiboot.img \ + -output "../ubuntu-20.04-beta-minimal-mbp.iso" \ + -graft-points \ + "." \ + /boot/grub/bios.img=isolinux/bios.img \ + /EFI/efiboot.img=isolinux/efiboot.img +livecd_exitcode=$? + +### Zip iso and split it into multiple parts - github max size of release attachment is 2GB, where ISO is sometimes bigger than that +cd "$WORKING_PATH" +mkdir -p ./output_zip +zip -s 1500m ./output_zip/livecd.zip ./*.iso + +### Calculate sha256 sums of built ISO +sha256sum ./*.iso > ./output_zip/sha256 + +find ./ | grep ".iso" +find ./ | grep ".zip" +kill "$bgPID" + +exit "$livecd_exitcode" diff --git a/build_in_docker.sh b/build_in_docker.sh new file mode 100755 index 0000000..b603421 --- /dev/null +++ b/build_in_docker.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -eu -o pipefail + +DOCKER_IMAGE=ubuntu:20.04 + +docker pull ${DOCKER_IMAGE} +docker run \ + --privileged \ + --rm \ + -t \ + -v "$(pwd)":/repo \ + ${DOCKER_IMAGE} \ + /bin/bash -c 'cd /repo && ./build.sh' diff --git a/files/audio/91-pulseaudio-custom.rules b/files/audio/91-pulseaudio-custom.rules new file mode 100644 index 0000000..33c2d91 --- /dev/null +++ b/files/audio/91-pulseaudio-custom.rules @@ -0,0 +1,7 @@ +SUBSYSTEM!="sound", GOTO="pulseaudio_end" +ACTION!="change", GOTO="pulseaudio_end" +KERNEL!="card*", GOTO="pulseaudio_end" + +SUBSYSTEMS=="pci", ATTRS{vendor}=="0x106b", ATTRS{device}=="0x1803", ENV{PULSE_PROFILE_SET}="apple-t2.conf" + +LABEL="pulseaudio_end" diff --git a/files/audio/AppleT2.conf b/files/audio/AppleT2.conf new file mode 100644 index 0000000..527492a --- /dev/null +++ b/files/audio/AppleT2.conf @@ -0,0 +1,103 @@ + + +AppleT2.pcm.default { + @args [ CARD ] + @args.CARD { + type string + } + type asym + playback.pcm { + type plug + ttable { + 0.0= 1 + 1.3= 1 + 2.1= 1 + 3.4= 1 + 4.0= 1 + 5.5= 1 + } + slave { + pcm { + type hw + card $CARD + device 0 + } + channels 6 + } + } + capture.pcm { + type plug + slave.pcm { + type hw + card $CARD + device 1 + } + } + hint.device_output 0 + hint.device_input 1 +} + +AppleT2.pcm.front.0 { + @args [ CARD ] + @args.CARD { + type string + } + type asym + playback.pcm { + type plug + ttable { + 0.0= 1 + 1.3= 1 + 2.1= 1 + 3.4= 1 + 4.0= 1 + 5.5= 1 + } + slave { + pcm { + type hw + card $CARD + device 0 + } + channels 6 + } + } + capture.pcm { + type plug + slave.pcm { + type hw + card $CARD + device 1 + } + } + hint.device_output 0 + hint.device_input 1 +} +AppleT2.pcm.front.1 { + @args [ CARD ] + @args.CARD { + type string + } + type asym + playback.pcm { + type hw + card $CARD + device 2 + } + capture.pcm { + type hw + card $CARD + device 3 + } + hint.device_output 2 + hint.device_input 3 +} +AppleT2.pcm.front.2 { + @args [ CARD ] + @args.CARD { + type string + } + type hw + card $CARD + device 4 +} diff --git a/files/audio/apple-t2.conf b/files/audio/apple-t2.conf new file mode 100644 index 0000000..51045f2 --- /dev/null +++ b/files/audio/apple-t2.conf @@ -0,0 +1,55 @@ +[General] +auto-profiles = no + +[Mapping builtin-speaker] +description = Built-in Speaker +device-strings = front:%f +paths-output = builtin-speaker-output +channel-map = front-left,front-right,rear-left,rear-right,front-center,lfe +priority = 100 +direction = output + +[Mapping builtin-mic] +description = Built-in Mic +device-strings = front:%f +paths-output = builtin-mic-input +channel-map = left,center,right +priority = 100 +direction = input + +[Mapping codec-output] +description = Headphone +device-strings = front:%f,1 +paths-output = codec-output +channel-map = left,right +priority = 100 +direction = output + +[Mapping codec-input] +description = Headphone Mic +device-strings = front:%f,1 +paths-output = codec-input +channel-map = mono +priority = 100 +direction = input + +[Profile output:builtin-speaker+input:builtin-mic] +description = Built-in Speaker + Built-in Mic +output-mappings = builtin-speaker +input-mappings = builtin-mic +skip-probe = yes + +[Profile output:codec-output+input:builtin-mic] +description = Headphones + Built-in Mic +output-mappings = codec-output +input-mappings = builtin-mic + +[Profile output:codec-output+input:codec-input] +description = Headphones + External Mic +output-mappings = codec-output +input-mappings = codec-input + +[Profile output:builtin-speaker+input:codec-input] +description = Built-in Speaker + External Mic +output-mappings = builtin-speaker +input-mappings = codec-input diff --git a/files/chroot_build.sh b/files/chroot_build.sh new file mode 100755 index 0000000..7ca2273 --- /dev/null +++ b/files/chroot_build.sh @@ -0,0 +1,145 @@ +#!/bin/bash + +set -eu -o pipefail + + +echo >&2 "===]> Info: Configure environment... "; + +mount none -t proc /proc +mount none -t sysfs /sys +mount none -t devpts /dev/pts +export HOME=/root +export LC_ALL=C + +echo "ubuntu-fs-live" > /etc/hostname + + +echo >&2 "===]> Info: Configure and update apt... "; + +cat < /etc/apt/sources.list +deb http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse +deb-src http://us.archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse +deb http://us.archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse +deb-src http://us.archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse +deb http://us.archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse +deb-src http://us.archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse +EOF + +# echo "deb https://mbp-ubuntu-kernel.herokuapp.com/ /" > /etc/apt/sources.list.d/mbp-ubuntu-kernel.list +# wget -q -O - https://mbp-ubuntu-kernel.herokuapp.com/KEY.gpg | apt-key add - + +apt-get update + + +echo >&2 "===]> Info: Install systemd... "; + +apt-get install -y systemd-sysv + + +echo >&2 "===]> Info: Configure machine-id and divert... "; + +dbus-uuidgen > /etc/machine-id +ln -fs /etc/machine-id /var/lib/dbus/machine-id +dpkg-divert --local --rename --add /sbin/initctl +ln -s /bin/true /sbin/initctl + + +echo >&2 "===]> Info: Install packages needed for Live System... "; + +export DEBIAN_FRONTEND=noninteractive +apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ + ubuntu-standard \ + casper \ + lupin-casper \ + discover \ + laptop-detect \ + os-prober \ + network-manager \ + resolvconf \ + net-tools \ + wireless-tools \ + wpagui \ + locales \ + linux-generic + + +echo >&2 "===]> Info: Install Graphical installer... "; + +apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ + ubiquity \ + ubiquity-casper \ + ubiquity-frontend-gtk \ + ubiquity-slideshow-ubuntu \ + ubiquity-ubuntu-artwork + + +echo >&2 "===]> Info: Install window manager... "; + +apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ + plymouth-theme-ubuntu-logo \ + ubuntu-desktop-minimal \ + ubuntu-gnome-wallpapers + + +echo >&2 "===]> Info: Install useful applications... "; + +apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" \ + git \ + curl \ + nano \ + gcc \ + expect \ + make + + +echo >&2 "===]> Info: Remove unused applications ... "; + +apt-get purge -y -qq \ + transmission-gtk \ + transmission-common \ + gnome-mahjongg \ + gnome-mines \ + gnome-sudoku \ + aisleriot \ + hitori + +apt-get autoremove -y + + +echo >&2 "===]> Info: Reconfigure environment ... "; + +locale-gen --purge en_US.UTF-8 en_US +echo -e 'LANG="C.UTF-8"\nLANGUAGE="C.UTF-8"\n' > /etc/default/locale + +dpkg-reconfigure -f readline resolvconf + +# /usr/bin/expect< /etc/NetworkManager/NetworkManager.conf +[main] +rc-manager=resolvconf +plugins=ifupdown,keyfile +dns=dnsmasq +[ifupdown] +managed=false +EOF +dpkg-reconfigure network-manager + + +echo >&2 "===]> Info: Cleanup the chroot environment... "; + +truncate -s 0 /etc/machine-id +rm /sbin/initctl +dpkg-divert --rename --remove /sbin/initctl +apt-get clean +rm -rf /tmp/* ~/.bash_history + +umount -lf /dev/pts +umount -lf /sys +umount -lf /proc + +export HISTSIZE=0 diff --git a/files/grub/grub.cfg b/files/grub/grub.cfg new file mode 100644 index 0000000..b2df726 --- /dev/null +++ b/files/grub/grub.cfg @@ -0,0 +1,55 @@ + +search --set=root --file /ubuntu + +insmod all_video + +set default="0" +set timeout=30 + +menuentry "Try Ubuntu FS without installing" { + linux /casper/vmlinuz boot=casper file=/cdrom/preseed/ubuntu.seed quiet splash --- + initrd /casper/initrd +} +menuentry "Try Ubuntu without installing (safe graphics)" { + set gfxpayload=keep + linux /casper/vmlinuz boot=casper file=/cdrom/preseed/ubuntu.seed quiet splash nomodeset --- + initrd /casper/initrd +} + +menuentry "Install Ubuntu FS" { + linux /casper/vmlinuz boot=casper file=/cdrom/preseed/ubuntu.seed only-ubiquity quiet splash --- + initrd /casper/initrd +} + +menuentry "Install Ubuntu FS (safe graphics)" { + set gfxpayload=keep + linux /casper/vmlinuz boot=casper file=/cdrom/preseed/ubuntu.seed only-ubiquity quiet splash --- + initrd /casper/initrd +} + +menuentry "Check disc for defects" { + linux /casper/vmlinuz boot=casper integrity-check quiet splash --- + initrd /casper/initrd +} + +menuentry "Test memory Memtest86+ (BIOS)" { + linux16 /install/memtest86+ +} + +menuentry "Test memory Memtest86 (UEFI, long load time)" { + insmod part_gpt + insmod search_fs_uuid + insmod chain + loopback loop /install/memtest86 + chainloader (loop,gpt1)/efi/boot/BOOTX64.efi +} + +grub_platform +if [ "$grub_platform" = "efi" ]; then +menuentry 'Boot from next volume' { + exit +} +menuentry 'UEFI Firmware Settings' { + fwsetup +} +fi \ No newline at end of file diff --git a/files/preseed/cli.seed b/files/preseed/cli.seed new file mode 100644 index 0000000..f8a57e2 --- /dev/null +++ b/files/preseed/cli.seed @@ -0,0 +1,5 @@ +# Only install the standard system and language packs. +tasksel tasksel/first multiselect +d-i pkgsel/language-pack-patterns string +# No language support packages. +d-i pkgsel/install-language-support boolean false diff --git a/files/preseed/ltsp.seed b/files/preseed/ltsp.seed new file mode 100644 index 0000000..bc26a91 --- /dev/null +++ b/files/preseed/ltsp.seed @@ -0,0 +1,11 @@ +# Build an LTSP client chroot. +d-i anna/choose_modules string ltsp-client-builder +d-i ltsp-client-builder/run boolean true +# Enable extras.ubuntu.com. +d-i apt-setup/extras boolean true +# Install the Ubuntu desktop and LTSP server. +tasksel tasksel/first multiselect ubuntu-desktop +d-i pkgsel/include/install-recommends boolean true +d-i pkgsel/include string ltsp-server-standalone openssh-server +# Build a client chroot. +d-i preseed/late_command string chroot /target /usr/sbin/ltsp-update-sshkeys diff --git a/files/preseed/ubuntu.seed b/files/preseed/ubuntu.seed new file mode 100644 index 0000000..8ee3dc1 --- /dev/null +++ b/files/preseed/ubuntu.seed @@ -0,0 +1,9 @@ +# Enable extras.ubuntu.com. +d-i apt-setup/extras boolean true +# Install the Ubuntu desktop. +tasksel tasksel/first multiselect ubuntu-desktop +# On live DVDs, don't spend huge amounts of time removing substantial +# application packages pulled in by language packs. Given that we clearly +# have the space to include them on the DVD, they're useful and we might as +# well keep them installed. +ubiquity ubiquity/keep-installed string icedtea6-plugin openoffice.org