Merge pull request #59 from marcosfad/feature/updateKernel

Kernel: Update to version and auto update script
This commit is contained in:
marcosfad 2022-02-24 21:47:31 -03:00 committed by GitHub
commit 61b818a3ff
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 185 additions and 172 deletions

View File

@ -13,10 +13,12 @@ jobs:
- name: Configure variables
id: variables
run: |
BUILD=$(date '+%Y%m%d%H%M%S')
echo "::set-output name=build::${BUILD}"
KERNEL_VERSION=$(curl -Ls https://github.com/t2linux/T2-Ubuntu-Kernel/releases/ | grep deb | grep download | grep "${MBP_VERSION}" | cut -d'/' -f6 | head -n1 | cut -d'v' -f2)
echo "::set-output name=build::${KERNEL_VERSION}"
- name: Build
env:
KERNEL_VERSION: ${{ steps.variables.outputs.build }}
run: sudo ./build.sh
- name: print sha256sum
@ -30,19 +32,21 @@ jobs:
- name: Instructions for putting it back together
run: |
cat << EOF
Download all the artifacts, and put them in a folder
without other files. Then run:"
unzip "*.z??.zip"
cat livecd-${{ steps.variables.outputs.build }}-mbp.z?? > cd.zip
echo unzip cd.zip
EOF
echo "${{ github.workspace }}Release.txt"
echo 'Download all the artifacts, and put them in a folder' > ${{ github.workspace }}Release.txt
echo 'without other files. Then run:' >> ${{ github.workspace }}Release.txt
echo '`unzip "*.z??.zip"`' >> ${{ github.workspace }}Release.txt
echo '`cat livecd-${{ steps.variables.outputs.build }}-mbp.z?? > cd.zip`' >> ${{ github.workspace }}Release.txt
echo '`unzip cd.zip`' >> ${{ github.workspace }}Release.txt
- name: Test release text
run: cat ${{ github.workspace }}Release.txt
- name: Release
if: github.ref == 'refs/heads/master'
uses: softprops/action-gh-release@v1
with:
files: ${{ github.workspace }}/output/*
body_path: ${{ github.workspace }}Release.txt
tag_name: v20.04-${{ steps.variables.outputs.build }}
draft: true
env:

View File

@ -9,6 +9,25 @@ debootstrap \
"${CHROOT_PATH}" \
http://archive.ubuntu.com/ubuntu/
### Download kernel packages
KERNEL_PACKAGES=()
if [[ -n "${KERNEL_VERSION:-}" ]]; then
MBP_KERNEL_TAG=${KERNEL_VERSION}
echo >&2 "===]> Info: Downloading specified kernel: ${MBP_KERNEL_TAG}";
else
MBP_VERSION=t2
MBP_KERNEL_TAG=$(curl -Ls https://github.com/t2linux/T2-Ubuntu-Kernel/releases/ | grep deb | grep download | grep "${MBP_VERSION}" | cut -d'/' -f6 | head -n1 | cut -d'v' -f2)
echo >&2 "===]> Info: Downloading latest ${MBP_VERSION} kernel: ${MBP_KERNEL_TAG}";
fi
while IFS='' read -r line; do KERNEL_PACKAGES+=("$line"); done < <(curl -sL https://github.com/t2linux/T2-Ubuntu-Kernel/releases/tag/v"${MBP_KERNEL_TAG}" | grep deb | grep span | cut -d'>' -f2 | cut -d'<' -f1)
mkdir -p "${ROOT_PATH}/files/kernels"
for i in "${KERNEL_PACKAGES[@]}"; do
curl -L https://github.com/t2linux/T2-Ubuntu-Kernel/releases/download/v"${MBP_KERNEL_TAG}"/"${i}" -o "${ROOT_PATH}/files/kernels/${i}"
done
echo >&2 "===]> Info: Creating chroot environment... "
mount --bind /dev "${CHROOT_PATH}/dev"
mount --bind /run "${CHROOT_PATH}/run"
@ -21,15 +40,10 @@ echo >&2 "===]> Info: Cleanup the chroot environment... "
#umount "${CHROOT_PATH}/run"
umount "${CHROOT_PATH}/dev"
## Copy audio config files
#echo >&2 "===]> Info: Copy audio config files... "
#mkdir -p "${CHROOT_PATH}"/usr/share/alsa/cards/
#cp -fv "${ROOT_PATH}"/files/audio/AppleT2.conf "${CHROOT_PATH}"/usr/share/alsa/cards/AppleT2.conf
#cp -fv "${ROOT_PATH}"/files/audio/apple-t2.conf "${CHROOT_PATH}"/usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf
#cp -fv "${ROOT_PATH}"/files/audio/91-pulseaudio-custom.rules "${CHROOT_PATH}"/usr/lib/udev/rules.d/91-pulseaudio-custom.rules
#printf "\n load-module module-combine-sink channels=6 channel_map=front-left,front-right,rear-left,rear-right,front-center,lfe" >> /etc/pulse/default.pa
#printf "\ndefault-sample-channels = 6\nremixing-produce-lfe = yes\nremixing-consume-lfe = yes" >> /etc/pulse/daemon.conf
### Add update_kernel_mbp script
echo >&2 "===]> Info: Add update_kernel_mbp script... "
curl -L https://raw.githubusercontent.com/marcosfad/mbp-ubuntu/master/update_kernel_mbp.sh -o /usr/bin/update_kernel_mbp
chmod +x /usr/bin/update_kernel_mbp
### Copy grub config without finding macos partition
echo >&2 "===]> Info: Patch Grub... "

119
README.md
View File

@ -1,18 +1,14 @@
# mbp-ubuntu
# mbp-ubunt.
The ISO in from this repo should allow you to install ubuntu without using an external keyboard or mouse on a MacBook Pro. It work in my MacBook with T2.
UBUNTU 20.04 ISO with Apple T2 patches built-in. The ISO in from this repo should allow you to install ubuntu without using an external keyboard or mouse on a MacBook Pro. It work in my MacBook with T2.
[![CI](https://github.com/marcosfad/mbp-ubuntu/actions/workflows/CI.yml/badge.svg)](https://github.com/marcosfad/mbp-ubuntu/actions/workflows/CI.yml)
**If this repo helped you in any way, consider inviting a coffee to the people in the [credits](https://github.com/marcosfad/mbp-ubuntu#credits) or [me](https://paypal.me/marcosfad).**
UBUNTU 20.04 ISO with Apple T2 patches built-in.
Apple T2 drivers are integrated with this iso.
This repo is a rework of the great work done by [@mikeeq](https://github.com/mikeeq/mbp-fedora)
I'm using the Kernel from - <https://github.com/marcosfad/mbp-ubuntu-kernel>
I'm using the Kernel from - <https://github.com/t2linux/T2-Ubuntu-Kernel>
Using additional drivers:
- [Apple T2 (apple-bce) (audio, keyboard, touchpad)](https://github.com/t2linux/apple-bce-drv)
@ -21,42 +17,57 @@ Using additional drivers:
Bootloader is configure correctly out of the box. No workaround needed.
## Which kernel to choose
I've pre installed several different kernel, to allow better support to different hardware.
If your macbook came with Big Sur preinstalled, you should use a bigsur version of kernel.
If your macbook came with mojave, you should use a mojave version of the kernel.
This will allow you to activate wifi in your macbook. See [this page for more information about wifi drivers](https://wiki.t2linux.org/guides/wifi/)
I've recommend starting with the HWE Kernel. That one comes from Ubuntu own repository and I have had great performance with it.
## Installation
## How to install (Based on mikeeq/mbp-fedora)
1. Reduce the size of the mac partition in MacOS
2. Download ISO file from releases. (Use the command line to unzip (`unzip /path/to/file.zip`) or "The Unarchiver" app)
3. Copy it to a USB using dd (or gdd if installed over brew):
```bash
diskutil list # found which number has the USB
diskutil umountDisk /dev/diskX
sudo dd bs=4096 if=ubuntu-20.04-5.6.10-mbp.iso of=/dev/diskX
```
4. Boot in Recovery mode and allow booting unknown OS
5. Restart and immediately press the option key until the Logo come up
6. Select "EFI Boot" (the third option was the one that worked for me)
7. Launch Ubuntu Live
8. Use Ubiquity to install (just click on it)
9. Select the options that work for you and use for the partition the following setup:
* Leave the efi boot as preselected by the installer. Your Mac will keep on working with out problems.
* Add a ext4 partition and mounted as `/boot` (1024MB).
* Add a ext4 partition and monted as `/` (rest).
* Select the `/boot` partition as a target for GRUB installation, otherwise the system won't boot.
10. Run the installer (In my case it had some problem removing some packages at the end, but this is no real problem)
11. Shutdown and remove the USB Drive
12. Start again using the option key. Select the new efi boot.
13. Enjoy.
* HowTo: [Steps to Resize Mac Partition](https://www.anyrecover.com/hard-drive-recovery-data/resize-partition-mac/)
2. Turn off secure boot and allow booting from external media - <https://support.apple.com/en-us/HT208330>
3. Download .iso from releases section - <https://github.com/marcosfad/mbp-ubuntu/releases/latest>
If it's split into multiple zip parts, i.e.: livecd.zip and livecd.z01 you need to download all zip parts and then
* join split files into one and then extract it via unzip
* <https://unix.stackexchange.com/questions/40480/how-to-unzip-a-multipart-spanned-zip-on-linux>
* or extract downloaded zip parts directly using:
* on Windows winrar or other supported tool like 7zip
* on Linux you can use p7zip, dnf install p7zip and then to extract 7za x livecd.zip
* on MacOS you can use
* the unarchiver from AppStore: <https://apps.apple.com/us/app/the-unarchiver/id425424353?mt=12>
* or you can install p7zip via brew brew install p7zip and use 7za x livecd.zip command mentioned above
* to install brew follow this tutorial: <https://brew.sh/>
4. Next you can check the SHA256 checksum of extracted .ISO to verify if your extraction process went well
MacOS: `shasum -a 256 ubuntu-20.04.iso`
Linux `sha256sum ubuntu-20.04.iso`
please compare it with a value in sha256 file available in github releases
5. Burn the image on USB stick >=8GB via:
* `dd`
* Linux `sudo dd bs=4M if=/home/user/Downloads/ubuntu-20.04.iso of=/dev/sdc conv=fdatasync status=progress`
* MacOS
```bash
diskutil list # found which number has the USB
sudo diskutil umountDisk /dev/diskX
sudo dd bs=4096 if=ubuntu-20.04-XXX.iso of=/dev/diskX
```
* if `dd` is not working for you for some reason you can try to install `gdd` via `brew` and use GNU `dd` command instead `sudo gdd bs=4M if=ubuntu-20.04-XXX.iso of=/dev/diskX conv=fdatasync status=progress`
* Rufus (GPT)- <https://rufus.ie/>, if prompted use DD mode
* Please don't use livecd-iso-to-disk as it's overwriting ISO default grub settings and Ubuntu will not boot correctly!
6. Boot in Recovery mode and allow booting unknown OS
7. Restart and immediately press the option key until the Logo come up
8. Select "EFI Boot" (the third option was the one that worked for me)
9. Launch Ubuntu Live
10. Use Ubiquity to install (just click on it)
11. **[IMPORTANT]** Select the options that work for you and use for the partition the following setup:
* Leave the efi boot as preselected by the installer. Your Mac will keep on working without problems.
* Add a ext4 partition and mounted as `/boot` (1024MB).
* Add a ext4 partition and monted as `/` (rest).
* Select the `/boot` partition as a target for GRUB installation, otherwise the system won't boot.
12. Run the installer (In my case it had some problem removing some packages at the end, but this is no real problem)
13. Shutdown and remove the USB Drive
14. Start again using the option key. Select the new efi boot.
15. Enjoy.
See <https://wiki.t2linux.org/distributions/ubuntu/installation/> for more details.
@ -64,7 +75,7 @@ See <https://wiki.t2linux.org/distributions/ubuntu/installation/> for more detai
- See <https://wiki.t2linux.org/guides/wifi/>
- To install additional languages, install appropriate langpack via apt `sudo apt-get install language-pack-[cod] language-pack-gnome-[cod] language-pack-[cod]-base language-pack-gnome-[cod]-base `
- see https://askubuntu.com/questions/149876/how-can-i-install-one-language-by-command-line
- see <https://askubuntu.com/questions/149876/how-can-i-install-one-language-by-command-line>
- 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
@ -92,26 +103,22 @@ and then:
### The easy way:
The live cd includes dkms and will automatically run when a new kernel is installed. You can use `dkms status` to see it.
If you are upgrading from 5.7.19 to a newer kernel version (5.10+), you will need updated versions of these kernel modules. Instructions for installing updated ones are [here](https://wiki.t2linux.org/guides/dkms/).
The live cd includes a script to download the latest T2-Ubuntu-Kernel. Just run `update_kernel_mbp`.
### Another way:
Check <https://github.com/marcosfad/mbp-ubuntu/blob/master/files/chroot_build.sh> to see how it is done.
Or read <https://wiki.t2linux.org/guides/kernel/>
## Know issues
- Sound is not working after the install. Follow the instructions detailed by @kevineinarsson: <https://gist.github.com/kevineinarsson/8e5e92664f97508277fefef1b8015fba>
On MBP 16,1, you might also need to disable realtime scheduling if the above gist doesn't work, because the pulseaudio server might get killed if the realtime budget is exceeded (<https://bugs.freedesktop.org/show_bug.cgi?id=94629>). Just add `realtime-scheduling = no` to `/etc/pulse/daemon.conf`.
- Checksum is failing for 2 files: md5sum.txt and /boot/grub/bios.img
- I'm having troubles shutting down ubuntu. Screen is black but fan keeps on working. I have to force shutdown.
## Not working (Following the mikeeq/mbp-fedora)
- 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))
- TouchID - (@MCMrARM is working on it - <https://github.com/Dunedan/mbp-2016-linux/issues/71#issuecomment-528545490>)
- Microphone (it's recognised with new apple t2 sound driver, but there is a low mic volume amp)
## TODO
@ -163,3 +170,15 @@ On MBP 16,1, you might also need to disable realtime scheduling if the above gis
- @aunali1 - thanks for ArchLinux Kernel CI, the continuous support on discord and your continuous efforts.
- @ppaulweber - thanks for keyboard and Macbook Air patches
- @kevineinarsson - thanks for the audio settings
## (deprecated) Which kernel to choose
I've pre installed several different kernel, to allow better support to different hardware.
If your macbook came with Big Sur preinstalled, you should use a bigsur version of kernel.
If your macbook came with mojave, you should use a mojave version of the kernel.
This will allow you to activate wifi in your macbook. See [this page for more information about wifi drivers](https://wiki.t2linux.org/guides/wifi/)
I've recommend starting with the HWE Kernel. That one comes from Ubuntu own repository and I have had great performance with it.

View File

@ -5,11 +5,10 @@ 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"
/bin/bash -c 'cd /repo && ./build.sh'

View File

@ -65,18 +65,6 @@ apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="
grub-efi-amd64-signed \
intel-microcode \
linux-headers-azure \
linux-headers-5.11.22-t2-hwe-bigsur \
linux-headers-5.11.22-t2-hwe-mojave \
linux-headers-5.12.19-t2-a-bigsur \
linux-headers-5.12.19-t2-a-mojave \
linux-headers-5.13.15-t2-j-bigsur \
linux-headers-5.13.15-t2-j-mojave \
linux-image-5.11.22-t2-hwe-bigsur \
linux-image-5.11.22-t2-hwe-mojave \
linux-image-5.12.19-t2-a-bigsur \
linux-image-5.12.19-t2-a-mojave \
linux-image-5.13.15-t2-j-bigsur \
linux-image-5.13.15-t2-j-mojave \
thermald
echo >&2 "===]> Info: Add firmwares"
@ -117,109 +105,19 @@ apt-get install -y -qq -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="
nano \
make \
gcc \
dkms \
iwd
echo >&2 "===]> Info: Change initramfs format (for grub)... "
sed -i "s/COMPRESS=lz4/COMPRESS=gzip/g" "/etc/initramfs-tools/initramfs.conf"
echo >&2 "===]> Info: Add drivers... "
APPLE_BCE_DRIVER_GIT_URL=https://github.com/t2linux/apple-bce-drv.git
APPLE_BCE_DRIVER_BRANCH_NAME=aur
APPLE_BCE_DRIVER_COMMIT_HASH=f93c6566f98b3c95677de8010f7445fa19f75091
APPLE_BCE_DRIVER_MODULE_NAME=apple-bce
APPLE_BCE_DRIVER_MODULE_VERSION=0.2
git clone --single-branch --branch ${APPLE_BCE_DRIVER_BRANCH_NAME} ${APPLE_BCE_DRIVER_GIT_URL} \
/usr/src/"${APPLE_BCE_DRIVER_MODULE_NAME}-${APPLE_BCE_DRIVER_MODULE_VERSION}"
git -C /usr/src/"${APPLE_BCE_DRIVER_MODULE_NAME}-${APPLE_BCE_DRIVER_MODULE_VERSION}" checkout "${APPLE_BCE_DRIVER_COMMIT_HASH}"
cat << EOF > /usr/src/${APPLE_BCE_DRIVER_MODULE_NAME}-${APPLE_BCE_DRIVER_MODULE_VERSION}/dkms.conf
PACKAGE_NAME="${APPLE_BCE_DRIVER_MODULE_NAME}"
PACKAGE_VERSION="${APPLE_BCE_DRIVER_MODULE_VERSION}"
MAKE[0]="make KVERSION=\$kernelver"
CLEAN="make clean"
BUILT_MODULE_NAME[0]="${APPLE_BCE_DRIVER_MODULE_NAME}"
DEST_MODULE_LOCATION[0]="/kernel/drivers/misc"
AUTOINSTALL="yes"
EOF
while IFS= read -r kernel; do
echo "==> Debug: Adding $kernel"
rm -rf "/lib/modules/$kernel/build"
ln -sf "/usr/src/linux-headers-$kernel" "/lib/modules/$kernel/build"
dkms --verbose install -m "${APPLE_BCE_DRIVER_MODULE_NAME}" -v "${APPLE_BCE_DRIVER_MODULE_VERSION}" -k "$kernel"
if [ -f "/var/lib/dkms/${APPLE_BCE_DRIVER_MODULE_NAME}/${APPLE_BCE_DRIVER_MODULE_VERSION}/build/make.log" ]; then
cat "/var/lib/dkms/${APPLE_BCE_DRIVER_MODULE_NAME}/${APPLE_BCE_DRIVER_MODULE_VERSION}/build/make.log"
fi
done < <(dpkg -l | grep linux-image | grep t2 | grep ii | grep t2 | cut -d' ' -f3|cut -d'-' -f3-10)
printf '\n### apple-bce start ###\napple-bce\n### apple-bce end ###' >>/etc/modules-load.d/apple-bce.conf
printf '\n### apple-bce start ###\nhapple-bce\n### apple-bce end ###' >>/etc/initramfs-tools/modules
APPLE_IB_DRIVER_GIT_URL=https://github.com/t2linux/apple-ib-drv
APPLE_IB_DRIVER_BRANCH_NAME=mbp15
APPLE_IB_DRIVER_COMMIT_HASH=fc9aefa5a564e6f2f2bb0326bffb0cef0446dc05
APPLE_IB_DRIVER_MODULE_NAME=apple-ibridge
APPLE_IB_DRIVER_MODULE_VERSION=0.1
git clone --single-branch --branch ${APPLE_IB_DRIVER_BRANCH_NAME} ${APPLE_IB_DRIVER_GIT_URL} \
/usr/src/"${APPLE_IB_DRIVER_MODULE_NAME}-${APPLE_IB_DRIVER_MODULE_VERSION}"
git -C /usr/src/"${APPLE_IB_DRIVER_MODULE_NAME}-${APPLE_IB_DRIVER_MODULE_VERSION}" checkout "${APPLE_IB_DRIVER_COMMIT_HASH}"
echo >&2 "===]> Debug: Add apple-ib-drv ... "
cat /usr/src/"${APPLE_IB_DRIVER_MODULE_NAME}-${APPLE_IB_DRIVER_MODULE_VERSION}"/dkms.conf
while IFS= read -r kernel; do
echo "==> Debug: Adding $kernel"
rm -rf "/lib/modules/$kernel/build"
ln -sf "/usr/src/linux-headers-$kernel" "/lib/modules/$kernel/build"
dkms --verbose install -m "${APPLE_IB_DRIVER_MODULE_NAME}" -v "${APPLE_IB_DRIVER_MODULE_VERSION}" -k "$kernel"
if [ -f "/var/lib/dkms/${APPLE_IB_DRIVER_MODULE_NAME}/${APPLE_IB_DRIVER_MODULE_VERSION}/build/make.log" ]; then
cat "/var/lib/dkms/${APPLE_IB_DRIVER_MODULE_NAME}/${APPLE_IB_DRIVER_MODULE_VERSION}/build/make.log"
fi
done < <(dpkg -l | grep linux-image | grep t2 | grep ii | grep t2 | cut -d' ' -f3|cut -d'-' -f3-10)
printf '\n### applespi start ###\napple_ib_tb\napple_ib_als\n### applespi end ###' >> /etc/modules-load.d/applespi.conf
printf '\n# display f* key in touchbar\noptions apple-ib-tb fnmode=2\n' >> /etc/modprobe.d/apple-touchbar.conf
## Add optional dkms for brcm80211-mbp16x
#cd /tmp
#wget https://gist.github.com/hexchain/22932a13a892e240d71cb98fad62a6a0/archive/50ce4513d2865b1081a972bc09e8da639f94a755.zip
#unzip *55.zip
#cd 22*
#cp -r /usr/src/linux-headers-*-generic/drivers/net/wireless/broadcom/brcm80211 .
#cd brcm80211
#patch -Np6 -i "../8001-corellium-wifi-bigsur.patch"
#patch -Np6 -i "../8002-brcmfmac-4377-mod.patch"
#patch -Np6 -i "../8003-brcmfmac-4377-64bit-regs.patch"
#patch -Np6 -i "../8004-brcmfmac-4377-chip-ids.patch"
#patch -Np1 -i "../out-of-tree.patch"
#mv Makefile Kbuild
#cp ../Makefile .
#sed -e "s,@PACKAGE_NAME@,brcm80211-mbp16x," -e "s,@PACKAGE_VERSION@,2.0," ../dkms.conf.in > dkms.conf
#cp ./brcm80211 /usr/src/brcm80211-mbp16x-2.0
#cd /tmp
#rm -rf *55.zip 22*
echo >&2 "===]> Debug dkms status"
dkms status
echo >&2 "===]> Configure amdgpu"
cat << EOF > /etc/udev/rules.d/30-amdgpu-pm.rules
KERNEL=="card0", SUBSYSTEM=="drm", DRIVERS=="amdgpu", ATTR{device/power_dpm_force_performance_level}="high"
EOF
echo >&2 "===]> Info: Update initramfs... "
## Add custom drivers to be loaded at boot
for kernel in $(dpkg -l | grep linux-image | grep ii | grep t2 | cut -d' ' -f3|cut -d'-' -f3-10); do
echo "==> Adding $kernel"
/usr/sbin/depmod -a "$kernel"
update-initramfs -u -v -k "$kernel"
done
#echo >&2 "===]> Info: install mpbfan ... "
#git clone https://github.com/networkException/mbpfan /tmp/mbpfan
#cd /tmp/mbpfan

79
files/update_kernel_mbp.sh Executable file
View File

@ -0,0 +1,79 @@
#!/bin/bash
set -eu -o pipefail
KERNEL_PATCH_PATH=/tmp/kernel_patch
BINARY_INSTALL_PATH=${BINARY_INSTALL_PATH:-/usr/bin/}
UPDATE_SCRIPT_BRANCH=${UPDATE_SCRIPT_BRANCH:-master}
#if [ "$EUID" -ne 0 ]; then
# echo >&2 "===]> Please run as root --> sudo -i; update_kernel_mbp"
# exit
#fi
rm -rf ${KERNEL_PATCH_PATH}
mkdir -p ${KERNEL_PATCH_PATH}
cd ${KERNEL_PATCH_PATH} || exit
### Downloading update_kernel_mbp script
echo >&2 "===]> Info: Downloading update_kernel_mbp ${UPDATE_SCRIPT_BRANCH} script... ";
rm -rf /usr/local/bin/update_kernel_mbp
if [ -f "${BINARY_INSTALL_PATH}"update_kernel_mbp ]; then
cp -rf "${BINARY_INSTALL_PATH}"update_kernel_mbp ${KERNEL_PATCH_PATH}/
ORG_SCRIPT_SHA=$(sha256sum ${KERNEL_PATCH_PATH}/update_kernel_mbp | awk '{print $1}')
fi
curl -L https://raw.githubusercontent.com/marcosfad/mbp-ubuntu/"${UPDATE_SCRIPT_BRANCH}"/files/update_kernel_mbp.sh -o "${BINARY_INSTALL_PATH}"update_kernel_mbp
chmod +x "${BINARY_INSTALL_PATH}"update_kernel_mbp
if [ -f "${BINARY_INSTALL_PATH}"update_kernel_mbp ]; then
NEW_SCRIPT_SHA=$(sha256sum "${BINARY_INSTALL_PATH}"update_kernel_mbp | awk '{print $1}')
if [[ "$ORG_SCRIPT_SHA" != "$NEW_SCRIPT_SHA" ]]; then
echo >&2 "===]> Info: update_kernel_mbp script was updated please rerun!" && exit
else
echo >&2 "===]> Info: update_kernel_mbp script is in the latest version proceeding..."
fi
else
echo >&2 "===]> Info: update_kernel_mbp script was installed..."
fi
### Download kernel packages
KERNEL_PACKAGES=()
CURRENT_KERNEL_VERSION=$(uname -r)
echo >&2 "===]> Info: Current kernel version: ${CURRENT_KERNEL_VERSION}";
if [[ -n "${KERNEL_VERSION:-}" ]]; then
MBP_KERNEL_TAG=${KERNEL_VERSION}
echo >&2 "===]> Info: Downloading specified kernel: ${MBP_KERNEL_TAG}";
else
MBP_VERSION=t2
MBP_KERNEL_TAG=$(curl -Ls https://github.com/t2linux/T2-Ubuntu-Kernel/releases/ | grep deb | grep download | grep "${MBP_VERSION}" | cut -d'/' -f6 | head -n1 | cut -d'v' -f2)
echo >&2 "===]> Info: Downloading latest ${MBP_VERSION} kernel: ${MBP_KERNEL_TAG}";
fi
while IFS='' read -r line; do KERNEL_PACKAGES+=("$line"); done < <(curl -sL https://github.com/t2linux/T2-Ubuntu-Kernel/releases/tag/v"${MBP_KERNEL_TAG}" | grep deb | grep span | cut -d'>' -f2 | cut -d'<' -f1)
for i in "${KERNEL_PACKAGES[@]}"; do
curl -LO https://github.com/t2linux/T2-Ubuntu-Kernel/releases/download/v"${MBP_KERNEL_TAG}"/"${i}"
done
echo >&2 "===]> Info: Installing kernel version: ${MBP_KERNEL_TAG}";
dpkg -i ./*.deb
### Suspend fix
echo >&2 "===]> Info: Adding suspend fix... ";
curl -L https://raw.githubusercontent.com/marcosfad/mbp-ubuntu/${MBP_UBUNTU_BRANCH}/files/suspend/rmmod_tb.sh -o /lib/systemd/system-sleep/rmmod_tb.sh
chmod +x /lib/systemd/system-sleep/rmmod_tb.sh
### Grub
echo >&2 "===]> Info: Rebuilding GRUB config... ";
curl -L https://raw.githubusercontent.com/marcosfad/mbp-ubuntu/${MBP_UBUNTU_BRANCH}/files/grub/30_os-prober -o /etc/grub.d/30_os-prober
chmod 755 /etc/grub.d/30_os-prober
grub2-mkconfig -o /boot/grub2/grub.cfg
### Cleanup
echo >&2 "===]> Info: Cleaning old kernel pkgs (leaving 3 latest versions)... ";
rm -rf ${KERNEL_PATCH_PATH}
dnf autoremove -y
dnf remove -y "$(dnf repoquery --installonly --latest-limit=-3 -q)"
echo >&2 "===]> Info: Kernel update to ${MBP_KERNEL_TAG} finished successfully! ";