在小米平板5上运行ubuntu(二)编译内核

(二)编译内核

2.1 安装交叉编译环境

我用来编译的ubuntu版本是22.04,直接安装的默认版本的交叉编译环境:

sudo apt-get install gcc-aarch64-linux-gnu

安装完成后版本号如下:

maverick@maverick-MS-7D42:~$ aarch64-linux-gnu-gcc -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/aarch64-linux-gnu/9/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --without-target-system-zlib --enable-libpth-m2 --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include
Thread model: posix
gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)

2.2 修改内核源码

内核源码我放到了github上,地址为:maverickjb/linux-6.1.10 (github.com)

2.3 编译源码

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- xiaomi_nabu_maverick_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image.gz dtbs
make ARCH=arm64 install INSTALL_PATH=../install/boot
make ARCH=arm64 dtbs_install INSTALL_DTBS_PATH=../install/boot/dtbs

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- modules
rm -rf ../install/lib/modules/
make ARCH=arm64 modules_install INSTALL_MOD_PATH=../install

编译成功后,生成的镜像文件为Image.gz和sm8150-xiaomi-nabu.dtb

2.4 打包成一个镜像文件

将上面两个文件放到同一个目录下,打包成一个文件

cat Image.gz sm8150-xiaomi-nabu.dtb > Image.gz-dtb

Image.gz-dtb这个文件,将来我们会打包成boot.img烧写到ufs里去的。

2.5 打包成boot.img

mv Image.gz-dtb zImage
mkbootimg --kernel zImage --cmdline "console=tty0 root=/dev/sda32 rw rootwait" --base 0x00000000 --kernel_offset 0x00008000 --tags_offset 0x00000100 --pagesize 4096 --id -o boot_new.img

/dev/sda32是ubuntu镜像分区的名称。

posted @ 2023-06-22 14:08  maverick_jia  阅读(1610)  评论(0编辑  收藏  举报