linux内核移植、配置及nfs文件系统挂载

时间:2021-07-19 16:33:57
////////////////arm平台/////////////////////////////
1.清理内核  make distclean  清理.o和.config文件


           //////////////////////////////////////////
2.配置内核  一般直接参考现已的配置文件来配置
            cp config_file ./linux-tq2440/.config
            make menuconfig ARCH=arm 基于文本模式的菜单型配置 
            




            <M>选中后之编译成.o文件,保存到硬盘了,不在生成的内核镜像中,节省内存          
            <*>选中后之编译成.o文件,然后连接成内核镜像文件zImage            
            <>不选择该功能
            
            内核文件的配置结果:ls -a 会看到.config   vim .config
            
            使用已有的内核配置文件((ls /boot/  X86平台的)(ls arch/arm/configs  ARM平台的) 可看到虚拟机的配置文件,可以把他复制到内核文件中,
        然后make menuconfig,把已有的配置问价添加进去)简化内核配置,不清楚的最好保持默认配置
            
           
           //////////////////////////////////////////
            2.1 cp mkimage /bin/ 添加头 需要用uboot代码里面的mkimage工具
            2.1编译内核  make uImage ARCH=arm CROSS_COMPILE=arm-linux-
                         然后添加根文件系统
          
          
////////////////////////////////////////////////////////////////////////////


//////////////////////根文件系统制作////////////////////////////////////////
                          ///////////////////////////////////////////////////////////////////////////// 
                            1.1创建目录  mkdir rootfs 
                                         然后在rootfs目录下创建一下目录
                                         mkdir bin dev etc lib proc sbin sys usr mnt tmp var
                                         mkdir usr/bin usr/lib usr/sbin lib/modules


                            1.2创建设备文件 cd rootfs/dev
                                            mknod -m 666 console c 5 1   //c表明是字符设备,5是主设备号,1是次设备号
                                            mknod -m 666 null c 1 3


                            1.3加入配置文件 tar xvzf etc.tar.gz
                                            cp etc/* rootfs/etc/ -rf  //把etc目录下的所以文件及目录拷贝到/rootfs/etc/目录下
       
1.建立根文件系统目录与文件  1.4添加内核模块  cd /home/lesson/part4/armlinux
                                             make modules ARCH=arm CROSS_COMPILE=arm-linux-
                                             make modules_install ARCH=arm INSTALL_MOD_PATH=/home/lesson/part4/4/rootfs  //会在lib/modules里看到驱动文件


                            1.5编译busybox  1.5.1配置busybox,用来提供嵌入式系统中的命令,如:ls,cd等
                                                   #make menuconfig  //进入busybox目录下配置
                                                   Busybox Settings 里build Options->选中 “Build busybox as a static binary”, 静态链接
                                                   Cross makeCompiler prefix (arm-linux-)
                                                   Installation Options->选中 “Don‘t use /usr”, 选中该项可以避免busybox 被安装到宿主系统的/usr目录下,破坏宿主系统
                                                   Busybox InstallatPrefix (/home/lesson/part4/4/rootfs)  该选项表明编译后的busybox的安装位置


                                            1.5.2 编译/安装busybox    1.make     2.make install  //装好后rootfs/bin 里就有了需要的命令,可以查看


                        /////////////////////////////////////////////////////////////////////////////////////////
                        2.1 挂载方式简介
                                           2.2.1:cd /home/lesson/part4/4/rootfs
2.挂载根文件系统到内核  2.2 initramfs挂载  2.2.2:ln -s ./bin/busybox init  //在当前目录下创建软连接
                                           2.2.3:make menuconfig ARCH=arm 配置linux内核,支持initramfs
                                           2.2.4:make uImage ARCH=arm CROSS_COMPILE=arm-linux-  编译内核
                                           2.2.5:setenv bootargs noinitrd console=ttySAC0,115200  //设置环境变量
                                               6:tftp 31000000 uImage   bootm 31000000
                         ///////////////////////////////////////////////////////////////////////////////////////////
                                           2.3.1:make menuconfig ARCH=arm  //内核配置
                                                  1.进入General setup->取消选中的initial filesystem and RAM disk(initramfs,initrd) support
                                                  2.File system -> 选中Network file system并进入 —>选中Root file system on NFS
                                                  
                                                     
                        2.3 NFS挂载        2.3.2:make uImage ARCH=arm CROSS_COMPILE=arm-linux-  编译内核
                                           2.3.3:setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs rw
                                                 (linux的ip) nfsroot=10.199.172.150:/home/lesson/part4/4/rootfs
                                                  ip=10.199.172.100:10.199.172.150:10.199.172.1://(开发板ip,linux的ip,网关)
                                                  255.255.255.0::eth0:off
                                           2.3.4:vim /etc/exports   在文件中添加/home/lesson/part4/4/rootfs
                                           2.3.5:/etc/init.d/nfs restart
                                           2.3.6:tftp 31000000 uImage