Ta sẽ thấy 3 phân vùng được tạo ra trên thẻ nhớ của mình và có 24M không được "xử dụng":
boot: phân vùng này chứa device tree, zImage, boot.src => chính nó zImage là linux kernel cho board NanoPi NEO Core => "sun8i-h3-nanopi-neo-core.dtb" còn đây là device tree được load at boot.
rootfs: phân vùng này chứa rootfs, các file thư viện, file config…
userdata: thường có phân vùng này xuất hiện thì khả năng bản rom này được custom nhằm bảo vệ hệ thống rootfs chính, khi chúng ta thao tác tạo file chỉnh sữa gì đấy thì thật ra chúng ta đang tạo và chỉnh sữa các file trong vùng "userdata". Ngó trong phân vùng này thấy folder root và work.
wget https://download1085.mediafire.com/n6ua5zi7hqugDjABFbeV9kWJCJLtgM_M4x1qe08suMdK0W7MwEel7qUBSpwPPrU5RQAoCNY_astwAjQ-U9mrapLPuXDv/27ddz8zqgydcuig/arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz
unxz ./arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar.xz
sudo mkdir -p /opt/FriendlyARM/toolchain
sudo tar -xvf ./arm-cortexa9-linux-gnueabihf-4.9.3-20160512.tar -C /opt/FriendlyARM/toolchain/
git clone https://github.com/ninhnn2/linux.git -b sunxi-4.14.y --depth 1
cd ./linux/
touch .scmversion
make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolchain/4.9.3/bin/arm-linux- sunxi_defconfig
make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolchain/4.9.3/bin/arm-linux- zImage dtbs
Check thư mục "/boot" trên NanoPi NEO Core như hình sau:
Có thể thấy device tree và kernel nằm tại thư mục này, chúng ta chỉ việc copy kernel vừa build và replace vào thư mục "/boot".
Linux kernel headers được sử dụng để biên dịch các linux kernel module, như driver card card đồ họa, driver usb wifi, vvv. Giống như các file header khác của source code, linux kernel header khai báo các chức năng, biến và cấu trúc dữ liệu khác nhau, trong trường hợp này là API được cung cấp bởi kernel Linux.
Tiến hành build kernel modules và kernel header
cd ./linux/
make ARCH=arm CROSS_COMPILE=/opt/FriendlyARM/toolchain/4.9.3/bin/arm-linux- modules_install INSTALL_MOD_PATH=./nanopineo