编译内核

238 阅读1分钟

kernel 的编译过程如下:

登录book账户

image.png 原因:lzop库未找到
解决方法:下载并安装lzop库
sudo apt-get install lzop

cd /home/book/100ask_imx6ull-sdk/Linux-4.9.88
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make mrproper
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make 100ask_imx6ull_defconfig
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make zImage -j4
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/zImage ~/nfs_rootfs
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb ~/nfs_rootfs

编译完成 zImage 后才可编译设备树文件。编译完成后,在 arch/arm/boot 目录下生成 zImage 内核文件, 在arch/arm/boot/dts 目录下生成设备树的二进制文件 100ask_imx6ull-14x14.dtb。把这 2 个文件复制到/home/book/nfs_rootfs 目录下备用,如图

image.png 编译内核模块 进入内核源码目录后,就可以编译内核模块了:

book@100ask: cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make modules

image.png

安装内核模块到 Ubuntu 某个目录下备用可以先把内核模块安装到 nfs 目录(/home/book/nfs_rootfs)。

注意:后面会使用 tree 命令查看目录结构,如果提示没有该命令,需要执行以

下命令安装 tree 命令:

sudo apt install tree

执行以下命令安装模块:

book@100ask:~$ cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install

如图 5.5,把模块安装在 nfs 目录“/home/book/nfs_rootfs/”下: image.png

安装内核和模块到开发板上

假设:在 Ubuntu 的/home/book/nfs_rootfs 目录下,已经有了 zImage、dtb 文件,并且有 lib/modules 子目录(里面含有各种模块)。接下来要把这些文件复制到开发板上。假设 Ubuntu IP 为 192.168.5.11

在开发板上执行以下命令:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot
cp /mnt/100ask_imx6ull-14x14.dtb /boot
// -rfd  r递归替换, f强制替换  d复制引用
cp /mnt/lib/modules /lib -rfd     
sync

最后重启开发板,它就使用新的 zImage、dtb、模块了。