编译选项 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1、 Location: ->Settings ->vi-style line editor commands # 选中 2、 Location: ->Settings ->Build static binary (no shared libs) # 这个主要是选择是否动态编译,不能选 3、 Location: ->Linux Module Utilities ->Simplified module # 不能选 4、 Location: ->Linux System Utilities ->mdev(16kb) # 下面的全选 5、 Location: ->Settings ->Support Unicode ->Check $LC_ALL, $LC_CTYPE, $LANG environment variables # 选择这两个
内核启动脚本 热插拔管理 热插拔主要由/proc/sys/kernel/hotplug控制 主要两种方法:mdev和udev
rcS
1 2 3 4 5 6 7 8 9 10 # !/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib export PATH LD_LIBRARY_PATH mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s
fstab
1 2 3 4 # <file system> <mount point> <type > <options> <dump> <pass> proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0
这里巨坑 一定要将编译工具链下的lib全部拷贝,不管so.什么 file 一下看看是不是有什么文件没有拷过去,一定要把需要的全部拷贝,最重要的就是sh
附录 移植脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 export CROSS_COMPILE=/home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- export ARCH=arm curpath=$(pwd) build() { if [ $1 == "clean" ]; then echo "clean" make clean fi make defconfig # make menuconfig 添加配置 cp ./rootfs-re ./rootfs -rf make -j$(nproc) make install CONFIG_PREFIX=${curpath}/rootfs/output cp -rf ${curpath}/rootfs-init/* ${curpath}/output/ rm -rf /home/ygc/Desktop/project/nfs/* cp -rf ${curpath}/rootfs/output /home/ygc/Desktop/project/nfs/ mv /home/ygc/Desktop/project/nfs/output /home/ygc/Desktop/project/nfs/rootfs cd /home/ygc/Desktop/project/nfs/rootfs mkdir -p lib cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/lib/* lib/ -d cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/lib/*.* lib/ -d cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/lib/* lib/ -d cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/lib/*.* lib/ -d mkdir -p usr/lib cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/lib/*.a usr/lib/ -d cp /home/ygc/Desktop/linux-gcc/2021-6ull/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/arm-none-linux-gnueabihf/libc/usr/lib/*.so usr/lib/ -d mkdir -p dev bin mnt proc sys root tmp var etc sudo chmod 777 -Rf /home/ygc/Desktop/project/nfs/rootfs } if [ -f "rootfs" ]; then echo "rootfs exists" else echo "rootfs does not exist" if [ -f "busybox-1.35.0.tar.bz2" ];then echo "busybox-1.35.0.tar.bz2 exists" if [ -d "rootfs" ]; then echo "rootfs exists" cd rootfs build $1 else echo "rootfs does not exist" tar -xvjf busybox-1.35.0.tar.bz2 mv busybox-1.35.0 rootfs cd rootfs build $1 fi else echo "busybox-1.35.0.tar.bz2 does not exist" wget https://busybox.net/downloads/busybox-1.35.0.tar.bz2 tar -xvjf busybox-1.35.0.tar.bz2 mv busybox-1.35.0 rootfs cd rootfs build $1 fi fi