Releases: kitakar5525/chromeos-kernel-linux-surface
4.19.152 and 5.4.72
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).
4.19.145 and 5.4.65
Note
I may test only v5.4-general-surface build. If something is not working on your Surface devices, feel free to open issues.
- 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.145-10241-g626b5f391c03+surface+k5
- Full version string: 4.19.131-general-surface-k5-06735-gdceb2b238c03 and 4.19.131-minimal-surface-k5-06735-gdceb2b238c03
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v4.19.145-10241-g626b5f391c03+surface+k5
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/626b5f391c03/
major issues
Currently, no major issues.
Info: chromeos-v5.4.65-8786-g8a928afdf43e+surface+k5
- Full version string: 5.4.50-general-surface-k5-06735-gdceb2b238c03 and 5.4.50-minimal-surface-k5-06735-gdceb2b238c03
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v5.4.65-8786-g8a928afdf43e+surface+k5
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/8a928afdf43e/
major issues
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.145-10241-g626b5f391c03+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.65-8786-g8a928afdf43e+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-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/headers
# 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).
4.19.131 and 5.4.50
Note
- 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
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. So, if you have devices that use IPTS, you may want to use v4.19 one for finger multitouch. What devices use IPTS and what devices don't?
- It's reported that v4.19 kernels don't boot on SP7/SL3. Use v5.4 kernels.
Info: 4.19.131
- Full version string: 4.19.131-general-surface-k5-09647-ge5b1f566c1f2 and 4.19.131-minimal-surface-k5-09647-ge5b1f566c1f2
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v4.19.131-9617-gd4dff7372342+surface+k5-2
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d4dff7372342/
major issues
Currently, no major issues.
Info: 5.4.50
- Full version string: 5.4.50-general-surface-k5-06734-g912c6036578d and 5.4.50-minimal-surface-k5-06734-g912c6036578d
- Kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v5.4.50-6709-g7f2e5f228262+surface+k5-2
- The tree is based on this upstream tree: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/7f2e5f228262/
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
. - chromeos-5.4: backlight not adjustable #23: Affects Surface 3. For now, I recommend using v4.19 kernels.
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.131-9617-gd4dff7372342+surface+k5-2"
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.50-6709-g7f2e5f228262+surface+k5-2"
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/headers
# 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:
4.19.126 and 5.4.44
Note
- 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
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. So, if you have devices that use IPTS, you may want to use v4.19 one for finger multitouch. What devices use IPTS and what devices don't?
- It's reported that v4.19 kernels don't boot on SP7/SL3. Use v5.4 kernels.
Info: 4.19.126-09205-g5e9fefe31794
- kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v4.19.126.r9174.95cd8329bd185+surface+k5-2
- The tree is based on chromeos-4.19 v4.19.126.r9174.95cd8329bd185
issues
Currently, no major issues.
Info: 5.4.44-04916-g18fcaa7f293d
- kernel tree used: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v5.4.44.r4894.1e9dbb96a1619+surface+k5
- The tree is based on chromeos-5.4 v5.4.44.r4894.1e9dbb96a1619
issues
chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+no_iwl7000
Testing release for #17
Note
Using the same kernel tree as chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch but updated kernel config.
The actual generated config diff against chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch:
@@ -3640,6 +3640,21 @@ CONFIG_IWLEGACY_DEBUG=y
CONFIG_IWLEGACY_DEBUGFS=y
# end of iwl3945 / iwl4965 Debugging Options
+CONFIG_IWLWIFI=m
+CONFIG_IWLWIFI_LEDS=y
+CONFIG_IWLDVM=m
+CONFIG_IWLMVM=m
+CONFIG_IWLWIFI_OPMODE_MODULAR=y
+# CONFIG_IWLWIFI_BCAST_FILTERING is not set
+
+#
+# Debugging Options
+#
+CONFIG_IWLWIFI_DEBUG=y
+CONFIG_IWLWIFI_DEBUGFS=y
+CONFIG_IWLWIFI_DEVICE_TRACING=y
+# end of Debugging Options
+
CONFIG_WLAN_VENDOR_INTERSIL=y
CONFIG_HOSTAP=m
CONFIG_HOSTAP_FIRMWARE=y
@@ -3664,13 +3679,7 @@ CONFIG_P54_SPI=m
# CONFIG_P54_SPI_DEFAULT_EEPROM is not set
CONFIG_P54_LEDS=y
CONFIG_PRISM54=m
-CONFIG_IWL7000=m
-CONFIG_IWL7000_LEDS=y
-CONFIG_IWL7000_DEBUGFS=y
-CONFIG_IWL7000_TRACING=y
-CONFIG_IWL7000_TESTMODE=y
-CONFIG_IWL7000_XVT=m
-CONFIG_IWL7000_VENDOR_CMDS=y
+# CONFIG_IWL7000 is not set
CONFIG_WLAN_VENDOR_MARVELL=y
CONFIG_LIBERTAS=m
CONFIG_LIBERTAS_USB=m
build command
build command diff against chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch
@@ -60,6 +60,10 @@ CONFIG_KERNEL_GZIP=y
# (arc continuously crashing without this change at least on 4.19)
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
+
+# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/17
+# need to unset IWL7000 to set IWLWIFI
+# CONFIG_IWL7000 is not set
EOS
# a lot of output for the first time. So, using `> /dev/null`
All the other info is the same as chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch.
chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch+iwl7000_core52-81
Testing release for #17
Note
Adding iwl7000 driver update (kitakar5525/linux-kernel@037122e) on top of chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch.
build command
(same as chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch)
All the other info is the same as chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch.
chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch
Always backup local files before updating kernel; it may refresh your local data.
Issues:
-
Not bootable on SB1 !!!. It reboots on chrome logo. (But works well on Surface 3... why?)
I released this binary anyway because it works with Surface 3. I'll look into what's happening on SB1 later.
So, if you want to use v5.4 kernels but this release doesn't work, try 5.4.24 version for now.
EDIT: after installing other kernel version then reinstalling this version, it started working on SB1. Hmm? -
Surface 3: config-general-surface: ACPI error messages appear continuously on dmesg #15
Because of this issue, mark this release as pre-release.
Note: I switched kernel config from config-minimal-surface to config-general-surface from this release.
build command
git clone https://github.com/kitakar5525/linux-surface-kernel
git pull --tags
git checkout chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch
# arch-lts54 kernel config
wget "https://git.archlinux.org/svntogit/packages.git/plain/trunk/config?h=packages/linux-lts" -q --show-progress -O config_archlinux-lts54
# linux-surface latest stable kernel config fragment
wget https://raw.githubusercontent.com/linux-surface/linux-surface/master/configs/surface-5.6.config -q --show-progress -O config_surface-stable-fragment
# generate chromiumos-x86_64 fragment
chromeos/scripts/prepareconfig chromiumos-x86_64
mv .config config_chromiumos-x86_64-prepareconfig
# my config changes. you can also place your changes here if you want.
cat << EOS > config_mychanges-fragment
CONFIG_5525_ACPI_CALL=m
# CONFIG_DEBUG_INFO is not set
CONFIG_PCIEASPM_DEBUG=y
# testing
CONFIG_BYTCRC_PMIC_OPREGION=y
CONFIG_CHTCRC_PMIC_OPREGION=y
# for debugging Surface 3 touchscreen input
CONFIG_SPI_PXA2XX=m
CONFIG_SPI_PXA2XX_PCI=m
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/3
# CONFIG_MODULE_COMPRESS is not set
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/8
# and https://github.com/kitakar5525/chromeos-kernel-linux-surface#direct-firmware-load-for-firmware-file-failed-with-error--2
CONFIG_DRM_I915=m
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/9
CONFIG_TCG_TPM=m
CONFIG_TCG_TIS_CORE=m
CONFIG_TCG_TIS_SPI=m
CONFIG_TCG_TIS=m
CONFIG_TCG_VIRTIO_VTPM=m
# built-in storage related config
CONFIG_MMC_BLOCK=y
# security options
CONFIG_DEFAULT_SECURITY_CHROMIUMOS=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_LSM="lockdown,yama,loadpin,safesetid,integrity,chromiumos,selinux"
# Enable kernel headers through /sys/kernel/kheaders.tar.xz
CONFIG_IKHEADERS=m
# https://github.com/systemd/systemd/blob/master/README
CONFIG_EFIVAR_FS=y
# to match stock chromiumos config
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_XZ is not set
# resolve "Actual value" not changing to "Requested value"
# caused by "NETFILTER_XT_MATCH_OWNER is not set"
# not specified in chromiumos-x86_64 prepareconfig
# (arc continuously crashing without this change at least on 4.19)
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
EOS
# a lot of output for the first time. So, using `> /dev/null`
# arch54 + chromiumos-x86_64 + surface55 + mychanges
scripts/kconfig/merge_config.sh config_archlinux-lts54 \
config_chromiumos-x86_64-prepareconfig \
config_surface-stable-fragment \
config_mychanges-fragment > /dev/null
cp .config config_arch54+chromiumos-x86_64+surface55+mychanges
# second time, check the generated config. So, not using `> /dev/null` here.
# you may be interested in "Requested value" vs "Actual value".
scripts/kconfig/merge_config.sh .config \
config_chromiumos-x86_64-prepareconfig \
config_surface-stable-fragment \
config_mychanges-fragment
cp .config config_arch54+chromiumos-x86_64+surface55+mychanges
export KVER=5_4 # kernel version you want to build
export KVER_PERIOD=$(echo $KVER | sed s/_/./)
kernver="$(make -s kernelrelease)"
export INSTALL_MOD_PATH=../chromeos-kernel-linux-surface-$kernver # modules will be exported to $INSTALL_MOD_PATH/lib/modules/$kernver
export INSTALL_PATH=../chromeos-kernel-linux-surface-$kernver/boot; mkdir -p $INSTALL_PATH
export INSTALL_MOD_STRIP=1 # to reduce the modules size (one example: 487M -> 35M)
modulesdir="$INSTALL_MOD_PATH/lib/modules/$kernver"
### build the kernel
make -j$(nproc --all) bzImage modules
# export the built modules
make modules_install # exported to $INSTALL_MOD_PATH
# remove build and source links
rm "$modulesdir"/{source,build}
# copy vmlinuz, System.map, and config
# not using `make install` because it seems that depending on distros
# used to build the kernel, config may not be installed.
# Filename may also vary. So, explicitly copy them manually...
cp arch/x86_64/boot/bzImage $INSTALL_PATH/vmlinuz-${kernver}
cp System.map* $INSTALL_PATH/System.map-${kernver}
cp .config $INSTALL_PATH/config-${kernver}
# copy files to build/ for external module building
mkdir "$modulesdir"/build
cp Module.symvers "$modulesdir"/build
cp $INSTALL_PATH/config-${kernver} "$modulesdir"/build/.config
cp $INSTALL_PATH/System.map-${kernver} "$modulesdir"/build/System.map
# compress lib dir
tar -C $INSTALL_MOD_PATH -czf $INSTALL_MOD_PATH/lib.tar.gz lib && rm -rf $INSTALL_MOD_PATH/lib
# compress the whole dir if you want
tar -czf ${INSTALL_MOD_PATH}.tar.gz $INSTALL_MOD_PATH && rm -rf $INSTALL_MOD_PATH
Installation
Chromium OS:
- Extract the release binary
- Extract the compressed lib dir (
lib.tar.gz
) - Copy the lib dir under
ROOT-A/
- Copy the boot/vmlinuz* to
EFI-SYSTEM/syslinux/vmlinuz.A
Brunch:
- Extract the release binary
- Extract the compressed lib dir (
lib.tar.gz
) - Copy the lib dir under
ROOT-C/
- Copy the boot/vmlinuz* to
ROOT-C/kernel
Note: kernel is not signed with secure boot key. Please do it manually yourself for now.
Note 2: for Chromium OS, you need to install mwifiex firmware.
Note 3: for Brunch, you need to resize ROOT-C to larger size (e.g. 2GB) until #3 is fixed because size of this kernel is too large without compression due to general kernel config (config-general-surface).
Note
Kernel tree info:
- Build was done against this kernel tree: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v5.4.39.r4076.d37238f2773c3-surface-brunch
- patch version: v4.0.1 (https://github.com/kitakar5525/linux-surface-patches/releases/tag/v4.0.1)
- (Means that the kernel tree is derived from chromeos-v5.4.39.r4076.d37238f2773c3 and contains the v4.0.1 patches)
chromeos-v5.4.39.r4076.d37238f2773c3
means that the kernel tree is derived from chromeos-5.4 commit d37238f2773c3
This build contains patches from linux-surface and brunch.
Especially, including the following patches that is necessary for brunch framework:
- chromeos: brunch-framework: report a single device name from dmi to e… · kitakar5525/linux-surface-kernel@676910a
- chromeos: fakehwid: allow the generation of a hwid to update unibuild… · kitakar5525/linux-surface-kernel@91cd632
to work well on unibuild images.
The product_name will be "Brunch".
$ cat /sys/devices/virtual/dmi/id/product_name
Brunch
- IPTS supports Stylus and Singletouch finger input and not support Multitouch finger input yet. Default is in Multitouch mode. You can toggle the mode like this:
sudo modprobe -r ipts; sudo modprobe ipts singletouch=Y
. If you need Multitouch finger input support, use 4.19 kernels for now.
chromeos-v4.19.121.r9069.a3d5a26405f2c-surface-brunch
Always backup local files before updating kernel; it may refresh your local data.
Issues:
- Surface 3: config-general-surface: ACPI error messages appear continuously on dmesg #15
Because of this issue, mark this release as pre-release.
Note: I switched kernel config from config-minimal-surface to config-general-surface from this release.
build command
git clone https://github.com/kitakar5525/linux-surface-kernel
git pull --tags
git checkout chromeos-v4.19.121.r9069.a3d5a26405f2c-surface-brunch
# arch-lts419 kernel config
wget "https://aur.archlinux.org/cgit/aur.git/plain/config?h=linux-lts419" -q --show-progress -O config_archlinux-lts419
# linux-surface 4.19 kernel config fragment
wget https://raw.githubusercontent.com/linux-surface/linux-surface/master/configs/surface-4.19.config -q --show-progress -O config_surface-4.19-fragment
# generate chromiumos-x86_64 fragment
chromeos/scripts/prepareconfig chromiumos-x86_64
mv .config config_chromiumos-x86_64-prepareconfig
# my config changes. you can also place your changes here if you want.
cat << EOS > config_mychanges-fragment
CONFIG_5525_ACPI_CALL=m
# CONFIG_DEBUG_INFO is not set
CONFIG_VIDEO_IPU3_IMGU=m
CONFIG_PCIEASPM_DEBUG=y
# for debugging Surface 3 touchscreen input
CONFIG_SPI_PXA2XX=m
CONFIG_SPI_PXA2XX_PCI=m
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/3
# CONFIG_MODULE_COMPRESS is not set
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/8
# and https://github.com/kitakar5525/chromeos-kernel-linux-surface#direct-firmware-load-for-firmware-file-failed-with-error--2
CONFIG_DRM_I915=m
# https://github.com/kitakar5525/chromeos-kernel-linux-surface/issues/9
CONFIG_TCG_TIS_CORE=m
CONFIG_TCG_TIS=m
CONFIG_TCG_VIRTIO_VTPM=m
# built-in storage related config
CONFIG_MMC_BLOCK=y
# init: Unable to mount /sys/fs/selinux filesystem: No such file or directory
# then kernel panic (and reboot)
CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE=1
CONFIG_DEFAULT_SECURITY_SELINUX=y
# CONFIG_DEFAULT_SECURITY_DAC is not set
CONFIG_DEFAULT_SECURITY="selinux"
# Enable kernel headers through /sys/kernel/kheaders.tar.xz
CONFIG_IKHEADERS=m
# https://github.com/systemd/systemd/blob/master/README
CONFIG_EFIVAR_FS=y
# to match stock chromiumos config
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_XZ is not set
# resolve "Actual value" not changing to "Requested value"
# caused by "NETFILTER_XT_MATCH_OWNER is not set"
# not specified in chromiumos-x86_64 prepareconfig
# (arc continuously crashing without this change)
# CONFIG_NETFILTER_XT_MATCH_OWNER is not set
CONFIG_NETFILTER_XT_MATCH_QTAGUID=y
EOS
# a lot of output for the first time. So, using `> /dev/null`
# arch419 + chromiumos-x86_64 + surface419 + mychanges
scripts/kconfig/merge_config.sh config_archlinux-lts419 \
config_chromiumos-x86_64-prepareconfig \
config_surface-4.19-fragment \
config_mychanges-fragment > /dev/null
cp .config config_arch419+chromiumos-x86_64+surface419+mychanges
# second time, check the generated config. So, not using `> /dev/null` here.
# you may be interested in "Requested value" vs "Actual value".
scripts/kconfig/merge_config.sh .config \
config_chromiumos-x86_64-prepareconfig \
config_surface-4.19-fragment \
config_mychanges-fragment
cp .config config_arch419+chromiumos-x86_64+surface419+mychanges
# memo
cat << EOS
# useful when you have to reload modules?
CONFIG_I2C_HID=m
EOS
export KVER=4_19 # kernel version you want to build
export KVER_PERIOD=$(echo $KVER | sed s/_/./)
kernver="$(make -s kernelrelease)"
export INSTALL_MOD_PATH=../chromeos-kernel-linux-surface-$kernver # modules will be exported to $INSTALL_MOD_PATH/lib/modules/$kernver
export INSTALL_PATH=../chromeos-kernel-linux-surface-$kernver/boot; mkdir -p $INSTALL_PATH
export INSTALL_MOD_STRIP=1 # to reduce the modules size (one example: 487M -> 35M)
modulesdir="$INSTALL_MOD_PATH/lib/modules/$kernver"
### build the kernel
make -j$(nproc --all) bzImage modules
# export the built modules
make modules_install # exported to $INSTALL_MOD_PATH
# remove build and source links
rm "$modulesdir"/{source,build}
# copy vmlinuz, System.map, and config
# not using `make install` because it seems that depending on distros
# used to build the kernel, config may not be installed.
# Filename may also vary. So, explicitly copy them manually...
cp arch/x86_64/boot/bzImage $INSTALL_PATH/vmlinuz-${kernver}
cp System.map* $INSTALL_PATH/System.map-${kernver}
cp .config $INSTALL_PATH/config-${kernver}
# copy files to build/ for external module building
mkdir "$modulesdir"/build
cp Module.symvers "$modulesdir"/build
cp $INSTALL_PATH/config-${kernver} "$modulesdir"/build/.config
cp $INSTALL_PATH/System.map-${kernver} "$modulesdir"/build/System.map
# compress lib dir
tar -C $INSTALL_MOD_PATH -czf $INSTALL_MOD_PATH/lib.tar.gz lib && rm -rf $INSTALL_MOD_PATH/lib
# compress the whole dir if you want
tar -czf ${INSTALL_MOD_PATH}.tar.gz $INSTALL_MOD_PATH && rm -rf $INSTALL_MOD_PATH
Installation
Chromium OS:
- Extract the release binary
- Extract the compressed lib dir (
lib.tar.gz
) - Copy the lib dir under
ROOT-A/
- Copy the boot/vmlinuz* to
EFI-SYSTEM/syslinux/vmlinuz.A
Brunch:
- Extract the release binary
- Extract the compressed lib dir (
lib.tar.gz
) - Copy the lib dir under
ROOT-C/
- Copy the boot/vmlinuz* to
ROOT-C/kernel
Note: kernel is not signed with secure boot key. Please do it manually yourself for now.
Note 2: for Chromium OS, you need to install mwifiex and ipts firmware.
Note 3: for Brunch, you need to resize ROOT-C to larger size (e.g. 2GB) until #3 is fixed because size of this kernel is too large without compression due to general kernel config (config-general-surface).
Note
Kernel tree info:
- Build was done against this kernel tree: https://github.com/kitakar5525/linux-surface-kernel/tree/chromeos-v4.19.121.r9069.a3d5a26405f2c-surface-brunch
- patch version: v4.0.1 (https://github.com/kitakar5525/linux-surface-patches/releases/tag/v4.0.1)
- (Means that the kernel tree is derived from v4.19.121.r9069.a3d5a26405f2c and contains the v4.0.1 patches)
chromeos-v4.19.121.r9069.a3d5a26405f2c
means that the kernel tree is derived from chromeos-4.19 commit a3d5a26405f2c
This build contains patches from linux-surface and brunch.
Especially, including the following patches that is necessary for brunch framework to work well on unibuild images.:
- chromeos: brunch-framework: report a single device name from dmi to e… · kitakar5525/linux-surface-kernel@3b6cc47
- chromeos: fakehwid: allow the generation of a hwid to update unibuild… · kitakar5525/linux-surface-kernel@441bd01
The product_name will be "Brunch".
$ cat /sys/devices/virtual/dmi/id/product_name
Brunch
chromeos-kernel-linux-surface-5.4.24
Always backup local files before updating kernel! Especially, be careful when switching kernel series (like 4.19 to 5.4); it may refresh your local data.
Currently, IPTS on 5.4 series don't support finger multitouch input. Take a look at 4.19 series for that support.
What devices use IPTS and what devices don't?: https://github.com/linux-surface/linux-surface/wiki/Installation-and-Setup#what-devices-use-ipts-and-what-devices-dont
Installation
NOTE:
-
IPTS supports Stylus and Singletouch finger input and not support Multitouch finger input yet. Default is in Multitouch mode. You can toggle the mode like this:
sudo modprobe -r ipts; sudo modprobe ipts singletouch=1
. If you need Multitouch finger input support, use 4.19 kernels for now. -
mwifiex: wifi power_save
Again added patches to disable power_save by default that is not available on linux-surface patches repo yet. So, no need to make a config file now.
patch and config version: 3.9
(https://github.com/kitakar5525/linux-surface-patches/releases/tag/v3.9)
Build command:
USE="${USE} -tpm" FEATURES="noclean" cros_workon_make --board=${BOARD} chromeos-kernel-5_4 --install
Installation:
- Extract the released binary (
chromeos-kernel-linux-surface-5.4.xx.tar.xz
) - Extract the compressed modules dir (
modules.tar.gz
) - Copy the modules dir into
ROOT-A/lib/
- Copy the boot/vmlinuz-5.4.xx to
EFI-SYSTEM/syslinux/vmlinuz.A
firmware:
Additionally, need to install mwifiex firmware
chromeos-kernel-linux-surface-4.19.107
Always backup local files before updating kernel! Especially, be careful when switching kernel series (like 4.19 to 5.4); it may refresh your local data.
Installation
NOTE:
- mwifiex: wifi power_save
Again added patches to disable power_save by default that is not available on linux-surface patches repo yet. So, no need to make a config file now.
patch and config version: 3.9
(https://github.com/kitakar5525/linux-surface-patches/releases/tag/v3.9)
Build command:
USE="${USE} -tpm" FEATURES="noclean" cros_workon_make --board=${BOARD} chromeos-kernel-4_19 --install
Installation:
- Extract the released binary (
chromeos-kernel-linux-surface-4.19.xx.tar.xz
) - Extract the compressed modules dir (
modules.tar.gz
) - Copy the modules dir into
ROOT-A/lib/
- Copy the boot/vmlinuz-4.19.xx to
EFI-SYSTEM/syslinux/vmlinuz.A
firmware:
Additionally, need to install mwifiex and IPTS firmware