ARM&Linux环境搭建
+ -

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

重启后可以看到:
214445428454
选中高级模式进入
214512599468
进入系统后,就是新编译的内核了
214657178011

0 篇笔记 写笔记

关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!