4.19.152 and 5.4.72
Note
I may test only v5.4-general-surface build on Surface 3. If something is not working on your Surface devices, feel free to open issues.
I stopped releasing -minimal-surface
kernel from this release.
- general-surface: using config-general-surface. Use this one If you want a more general kernel (closer to normal Linux distros, with support of Surface devices). Probably work also on non-surface devices.
- minimal-surface: using config-minimal-surface. Use this one if you want a minimal kernel (closer to chromiumos' original kernels, with support of Surface devices). Chances are low to work on non-surface devices.
- k5: abbreviation of kitakar5525. Means additional patches are applied.
Difference between v4.19 and v5.4
- All the features that work/not-work with linux+linux-surface kernel should work/not-work also with this release.
- It's reported that v4.19 kernels don't boot on SP7/SL3. Use v5.4 kernels.
IPTS Touchscreen on v5.4
- If your device uses IPTS, you need to install iptsd (see https://github.com/kitakar5525/chromeos-kernel-linux-surface/tree/master/patch-to-os-image).
- What devices use IPTS and what devices don't?
- There is chromeos-specific issue on iptsd. Finger tapping isn't working on chrome browser. Working on ARC, though.
Info: chromeos-v4.19.151-10433-g001cdf76f178+surface+k5
- Full version string: 4.19.152-${CONFIG_TYPE}-surface-k5-06735-gdceb2b238c03
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v4.19.151-10433-g001cdf76f178+surface+k5
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/001cdf76f178/
major issues
Currently, no major issues.
Info: chromeos-v5.4.71-9749-g1031530d5b19+surface+k5-3
- Full version string: 5.4.72-${CONFIG_TYPE}-surface-k5-06735-gdceb2b238c03
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v5.4.71-9749-g1031530d5b19+surface+k5-3
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/1031530d5b19/
major issues
- chromeos-5.4: tpm_tis causes kernel oops #20: I recommend adding
module_blacklist=tpm_tis
to bootloader. - wifi/bt unstable when using with iwl7000 #17: For now, using
CONFIG_IWLWIFI
instead of chromiumos' defaultCONFIG_IWL7000
. - iptsd is not fully working (not responding to touches on browser, but seems to be fully working on ARC).
build command used
# git clone https://github.com/kitakar5525/linux-surface-kernel kitakar5525_linux-surface-kernel # for the first time
cd kitakar5525_linux-surface-kernel
# git clone https://github.com/kitakar5525/chromeos-kernel-linux-surface kitakar5525_chromeos-kernel-linux-surface # for the first time
cd kitakar5525_chromeos-kernel-linux-surface
git pull
cd ..
git pull --tags
########## v4.19 ##########
TAG_KERNEL="chromeos-v4.19.151-10433-g001cdf76f178+surface+k5"
git checkout $TAG_KERNEL
# mkdir ../$TAG_KERNEL-config-minimal-log # logs will be placed into this dir
# # minimal-surface
# bash kitakar5525_chromeos-kernel-linux-surface/scripts/0001-generate-kernel-config/generate-config-minimal-surface-v419.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0001-merge_config-log.txt
# bash kitakar5525_chromeos-kernel-linux-surface/scripts/0002-build-kernel-using-make.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0002-build-log.txt
# fakeroot -- bash kitakar5525_chromeos-kernel-linux-surface/scripts/0003-package-kernel.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0003-packaging-log.txt
mkdir ../$TAG_KERNEL-config-general-log # logs will be placed into this dir
# general-surface
bash kitakar5525_chromeos-kernel-linux-surface/scripts/0001-generate-kernel-config/generate-config-general-surface-v419.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0001-config-general-merge_config-log.txt
bash kitakar5525_chromeos-kernel-linux-surface/scripts/0002-build-kernel-using-make.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0002-config-general-build-log.txt
fakeroot -- bash kitakar5525_chromeos-kernel-linux-surface/scripts/0003-package-kernel.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0003-config-general-packaging-log.txt
########## v5.4 ##########
TAG_KERNEL="chromeos-v5.4.71-9749-g1031530d5b19+surface+k5-3"
git checkout $TAG_KERNEL
# mkdir ../$TAG_KERNEL-config-minimal-log # logs will be placed into this dir
# # minimal-surface
# bash kitakar5525_chromeos-kernel-linux-surface/scripts/0001-generate-kernel-config/generate-config-minimal-surface-v54.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0001-merge_config-log.txt
# bash kitakar5525_chromeos-kernel-linux-surface/scripts/0002-build-kernel-using-make.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0002-build-log.txt
# fakeroot -- bash kitakar5525_chromeos-kernel-linux-surface/scripts/0003-package-kernel.sh \
# 2>&1 | tee ../$TAG_KERNEL-config-minimal-log/0003-packaging-log.txt
mkdir ../$TAG_KERNEL-config-general-log # logs will be placed into this dir
# general-surface
bash kitakar5525_chromeos-kernel-linux-surface/scripts/0001-generate-kernel-config/generate-config-general-surface-v54.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0001-merge_config-log.txt
bash kitakar5525_chromeos-kernel-linux-surface/scripts/0002-build-kernel-using-make.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0002-build-log.txt
fakeroot -- bash kitakar5525_chromeos-kernel-linux-surface/scripts/0003-package-kernel.sh \
2>&1 | tee ../$TAG_KERNEL-config-general-log/0003-packaging-log.txt
Installation
Please read the whole instructions before you try to install until you
understand what the following commands do. I won't provide install scripts
(i.e. I won't provide a way to automate installation) because it's good
that everyone understands how things are done. If something is unclear
in the instructions, feel free to ask me(@kitakar5525) via opening a issue.
for brunch
Run the following commands under brunch chromeos.
(Can be run under dual-booted linux but then, make sure that there is
only one partition labeled ROOT-C (lsblk
).)
Extract ROOT-C archive onto ROOT-C:
ROOT_C_MOUNT_DIR="/tmp/mnt/ROOT-C"
# 1. mount ROOT-C
sudo mkdir $ROOT_C_MOUNT_DIR
sudo mount /dev/disk/by-label/ROOT-C $ROOT_C_MOUNT_DIR
# 2. remove existing kitakar5525 kernel first
rm -rf $ROOT_C_MOUNT_DIR/packages/kitakar5525-kernel/*
# 3. (extra step)
# Requires ROOT-C free space about 100MB. Current brunch release has
# that extra space but in future releases, you might need to create
# free space by removing existing brunch kernel files...
# rm -rf $ROOT_C_MOUNT_DIR/lib/kernel-devel
# rm -rf $ROOT_C_MOUNT_DIR/lib/iwlwifi_backport
# rm -rf $ROOT_C_MOUNT_DIR/lib/modules
# 4. extract archive onto ROOT-C
sudo tar -xf "${_archive_name_you_want_to_use_}-ROOT-C.tar.gz" -C $ROOT_C_MOUNT_DIR
# 5. cleanup
## unmount ROOT-C
sudo umount $ROOT_C_MOUNT_DIR
for chromiumos
Extract archive into somewhere. In that archive, there is an archive
for ROOT-A (packages/kitakar5525-kernel/${_archive_name_you_want_to_use_}.tar.gz
).
Usually, you can't mount ROOT-A manually. So, do the following under
chromiumos (not from dual-booted linux).
Be careful that running the following commands outside of chromiumos
breaks the system.
Extract the ROOT-A archive onto ROOT-A and copy vmlinuz into
EFI-SYSTEM/syslinux/vmlinuz.A:
ROOT_C_ARCHIVE_EXTRACT_DIR="/tmp/ROOT-C_archive"
EFI_SYSTEM_MOUNT_DIR="/tmp/mnt/EFI-SYSTEM"
# 1. extract ROOT-C archive into somewhere
mkdir $ROOT_C_ARCHIVE_EXTRACT_DIR
sudo tar -xf "${_archive_name_you_want_to_use_}.tar.gz" -C $ROOT_C_ARCHIVE_EXTRACT_DIR
# 2. mount EFI-SYSTEM
mkdir $EFI_SYSTEM_MOUNT_DIR
sudo mount /dev/disk/by-label/EFI-SYSTEM $EFI_SYSTEM_MOUNT_DIR
# 3. remount root directory as rw
sudo mount / -o rw,remount
# 4. remove existing kernel files
sudo rm -rf /boot/*
sudo rm -rf /lib/modules/*
# 5. extract ROOT-A archive onto ROOT-A
sudo tar -xf "$ROOT_C_ARCHIVE_EXTRACT_DIR/packages/kitakar5525-kernel/${_archive_name_you_want_to_use_}-ROOT-A.tar.gz" -C /
# 6. copy vmlinuz into EFI-SYSTEM
cp $ROOT_C_ARCHIVE_EXTRACT_DIR/kernel $EFI_SYSTEM_MOUNT_DIR/syslinux/vmlinuz.A
# 7. cleanup
## remount root directory as ro
sudo mount / -o ro,remount
## unmount EFI-SYSTEM
sudo umount $EFI_SYSTEM_MOUNT_DIR
enrolling secureboot public key (for the first time)
You need to enroll my secureboot public key for the first time you use
this kernel.
Take a look here:
iptsd for v5.4
If your device uses IPTS, don't forget to install iptsd. (see https://github.com/kitakar5525/chromeos-kernel-linux-surface/tree/master/patch-to-os-image).