linux-lab 调试

编译内核

首先下载 linux 项目到 linux-stable 内

切换到自己想要的版本与分支,如果该分支是第一次 build,那么需要执行

make kernel-clone LINUX=v2.6.12.6 LINUX_NEW=v2.6.12.6_dev

比如当前模拟器是 x86_64_pc,那么修改 /cloud-lab/labs/linux-lab/boards/x86_64/pc/Makefile,保证开发分支有正确版本的 gcc 与 rootfs

GCC = 9
GCC[LINUX_v3.2] = 4.8
GCC[LINUX_v2.6.12.6] = 4.8
GCC[LINUX_v2.6.12.6_dev] = 4.4


KIMAGE  ?= $(BSP_KERNEL)/$(LINUX)/bzImage
ROOTFS  ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs.cpio.gz
ROOTFS[LINUX_v2.6.12.6]  ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs32.cpio.gz
ROOTFS[LINUX_v2.6.12.6_dev]  ?= $(BSP_ROOT)/$(BUILDROOT)/rootfs32.cpio.gz

然后进行编译,编译过程中可能会报错,删除 linux-stable 下的 .kernel.patched 文件重新编译即可。强烈不建议使用 make kernel-cleanup 命令,会还原所有代码!!! 

make cleanstamp kernel-build
 
make kernel-build

注意低版本的 linux 高版本的 gcc 可能编译不了,比如 linux2.6.11 需要 gcc-4.4 才能编译

cd /usr/bin

sudo rm gcc

sudo ln -s gcc-4.4 gcc

编译后执行下面代码启动

make boot

可以通过查看启动日志来确定此时使用的是编译后的内核(比如打印一条内容)

dmesg | grep from 

编译报错梳理

 编译过程中如果报错  “mixed implicit and normal rules: deprecated syntax”

参考 https://www.cnblogs.com/zongfanstudy/p/12741662.html 来修改 mackfile

编译过程中如果报错

/labs/linux-lab/src/linux-stable is not clean, please run 'make mrproper'
  in the '/labs/linux-lab/src/linux-stable' directory.
make[2]: *** [/labs/linux-lab/src/linux-stable/Makefile:940: prepare3] Error 1
make[1]: *** [Makefile:182: sub-make] Error 2

可以将 linux-stable 里 makefile 下面这段代码注释掉

ifneq ($(KBUILD_SRC),)
	@$(kecho) '  Using $(srctree) as source for kernel'
	$(Q)if [ -f $(srctree)/.config -o -d $(srctree)/include/config ]; then \
		echo >&2 "  $(srctree) is not clean, please run 'make mrproper'"; \
		echo >&2 "  in the '$(srctree)' directory.";\
		/bin/false; \
	fi;
endif

猜你喜欢

转载自blog.csdn.net/qq_35291168/article/details/119271633