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