mirror of https://github.com/marcosfad/mbp-ubuntu
Initial commit
This commit is contained in:
commit
20bc664690
|
@ -0,0 +1 @@
|
|||
build_files
|
|
@ -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
|
|
@ -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 - <https://github.com/marcosfad/mbp-ubuntu-kernel>
|
||||
|
||||
Drivers:
|
||||
|
||||
- Apple T2 (audio, keyboard, touchpad) - <https://github.com/MCMrARM/mbp2018-bridge-drv>
|
||||
- Apple SMC - <https://github.com/MCMrARM/mbp2018-etc>
|
||||
- Touchbar - <https://github.com/roadrunner2/macbook12-spi-driver/tree/mbp15>
|
||||
|
||||
> 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 - <https://support.apple.com/en-us/HT208330>
|
||||
- Download .iso from releases section - <https://github.com/marcosfad/mbp-ubuntu/releases/latest>
|
||||
- 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`
|
||||
- <https://unix.stackexchange.com/questions/40480/how-to-unzip-a-multipart-spanned-zip-on-linux>
|
||||
- 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)- <https://rufus.ie/>
|
||||
- balenaEtcher- <https://www.balena.io/etcher/>
|
||||
- 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: <https://www.anyrecover.com/hard-drive-recovery-data/resize-partition-mac/> # 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. <https://github.com/marcosfad/mbp-ubuntu/issues/2>
|
||||
- /boot/efi - 1024MB fat32
|
||||
- /boot - 1024MB EXT4
|
||||
- / - xxxGB EXT4
|
||||
|
||||
- Put wifi firmware files to `/lib/firmware/brcm/`
|
||||
- tutorial - <https://github.com/mikeeq/mbp-fedora-kernel/#working-with-mbp-fedora-kernel>
|
||||
- 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: <https://github.com/free5lot/hid-apple-patched>
|
||||
```
|
||||
# /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: <https://discord.gg/Uw56rqW>
|
||||
- WiFi firmware: <https://packages.aunali1.com/apple/wifi-fw/18G2022>
|
||||
- Linux on a MBP Late 2016: <https://gist.github.com/gbrow004/096f845c8fe8d03ef9009fbb87b781a4>
|
||||
|
||||
### Ubuntu
|
||||
|
||||
- <https://help.ubuntu.com/community/LiveCDCustomization>
|
||||
- <https://itnext.io/how-to-create-a-custom-ubuntu-live-from-scratch-dd3b3f213f81>
|
||||
|
||||
### Github
|
||||
|
||||
- GitHub issue (RE history): <https://github.com/Dunedan/mbp-2016-linux/issues/71>
|
||||
- VHCI+Sound driver (Apple T2): <https://github.com/MCMrARM/mbp2018-bridge-drv/>
|
||||
- hid-apple keyboard backlight patch: <https://github.com/MCMrARM/mbp2018-etc>
|
||||
- alsa/pulseaudio config files: <https://gist.github.com/MCMrARM/c357291e4e5c18894bea10665dcebffb>
|
||||
- TouchBar driver: <https://github.com/roadrunner2/macbook12-spi-driver/tree/mbp15>
|
||||
- Kernel patches (all are mentioned in github issue above): <https://github.com/aunali1/linux-mbp-arch>
|
||||
- ArchLinux kernel patches: <https://github.com/ppaulweber/linux-mba>
|
||||
- ArchLinux installation guide: <https://gist.github.com/TRPB/437f663b545d23cc8a2073253c774be3>
|
||||
- hid-apple-patched module for changing mappings of ctrl, fn, option keys: <https://github.com/free5lot/hid-apple-patched>
|
||||
- Audio configuration: <https://gist.github.com/kevineinarsson/8e5e92664f97508277fefef1b8015fba>
|
||||
|
||||
## 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
|
|
@ -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 <<EOF > 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"
|
|
@ -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'
|
|
@ -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"
|
|
@ -0,0 +1,103 @@
|
|||
<confdir:pcm/front.conf>
|
||||
|
||||
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
|
||||
}
|
|
@ -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
|
|
@ -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 <<EOF > /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<<EOF
|
||||
# spawn dpkg-reconfigure -f readline resolvconf
|
||||
# expect "updates?" { send "Yes\r" }
|
||||
# expect "dynamic files?" { send "Yes\r" }
|
||||
# EOF
|
||||
|
||||
cat <<EOF > /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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue