ubuntu22
2026-06-28
5
0
编译前准备
编译需要至少40g,我的都满了
usbzh@usbzh-virtual-machine:/lib/modules/5.15.200usbzh$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 792M 2.0M 790M 1% /run
/dev/sda3 39G 36G 1.3G 97% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sda2 512M 5.3M 507M 2% /boot/efi
tmpfs 792M 76K 792M 1% /run/user/127
tmpfs 792M 68K 792M 1% /run/user/1000
SSH
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh
你也可以分步操作:先用
sudo systemctl enable ssh
设置开机自启,再用
sudo systemctl start ssh
立即启动。
软件准备
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev git
sudo apt install libdw-dev
sudo apt install pahole #生成 BTF(BPF Type Format)信息,用于调试 CONFIG_DEBUG_INFO_BTF
# 获取当前内核版本的源码
apt-get source linux-image-unsigned-$(uname -r)
cd linux-<version>
cp /boot/config-$(uname -r) .config
chmod +x scripts/*.sh
chmod +x scripts/kconfig/*.sh
make menuconfig
编译为y即编译进内核的驱动,如要调试,得先将改成M,再得新编译kernel,然后替换kernel,再重新来弄
编译完成
每一次完成后没有任何显示,所以就再运行一下
usbzh@usbzh-virtual-machine:~/linux-5.15.0$ make
CALL scripts/checksyscalls.sh
CALL scripts/atomic/check-atomics.sh
DESCEND objtool
DESCEND bpf/resolve_btfids
CHK include/generated/compile.h
CHK kernel/kheaders_data.tar.xz
Kernel: arch/x86/boot/bzImage is ready (#2)
版本修改
# 在内核源码根目录修改 Makefile 中的 EXTRAVERSION
cd ~/linux-5.15.0
vim Makefile
找到
EXTRAVERSION = .185
改为
EXTRAVERSION = .185-custom
这样编译出来的内核版本号会是 5.15.0-185-custom,与系统已有的 5.15.0-185-generic 不同,安装时不会覆盖,而是并行共存。
安装
安装前
usbzh@usbzh-virtual-machine:~/linux-5.15.0$ uname -a
Linux usbzh-virtual-machine 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
签名问题,得重新编译再安装
cd ~/linux-5.15.0
# 1. 先安装 pahole(如果之前还没装)
sudo apt install pahole
# 2. 禁用 BTF(如果之前遇到 BTF 错误)
scripts/config --disable DEBUG_INFO_BTF
# 3. 禁用模块签名
scripts/config --disable MODULE_SIG
scripts/config --disable MODULE_SIG_ALL
# 4. 重新编译
make -j$(nproc)
# 5. 安装模块(跳过签名)
sudo make modules_install INSTALL_MOD_STRIP=1
# 6. 安装内核镜像
sudo make install
# 7. 更新 GRUB
sudo update-grub
# 8. 重启
sudo reboot
在重启前,需要修改grub的读秒
sudo vim /etc/default/grub
# 将超时时间改为 5 秒(或你想要的秒数)
GRUB_TIMEOUT=5
# 确保这行被注释掉(如果有的话)
# GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT_STYLE=hidden 改为 menu:
# 确保菜单会显示
GRUB_TIMEOUT_STYLE=menu
重启后可以看到:
选中高级模式进入
进入系统后,就是新编译的内核了
ARM&Linux环境搭建





