嵌入式环境搭建

 
编译一个uboot:
                      先打补丁:patch -p1 < ../uboot1.1.6"补丁文件名称"
                      make 100ask24x0...   配置
                       make  生成.bin文件   烧到开发板即可
               注意:编译uboot时在目录下的/tools文件下面有一些mkimage可执行文件,将之拷到服务器的/user/bin目录下面,这在后面编译Linux系统生成uImage有用

 nfs 0x30000000 192.168.1.106:/work/nfs_root/uImage_nolcd   //使用网络挂载新的Linux系统,这里是没有lcd驱动的Linux
    然后bootm 0x30000000启动Linux系统
 mount -t nfs -o nolock,vers=2 192.168.1.106:/work/nfs_root/first_fs /mnt  //挂载网络文件系统
 
编译busybox,加压,make menuconfig(会报错,需要修改Makefile405行和1242行)对功能的增添后保存,make,make CONFIG_PREFIX=/work/nfs_root/first_fs install(选择需要安装的文件夹,
不要直接安装,会破坏pc及系统)
然后,创建mkdir dev,sudo mknod console c 5 1(创建设备号),sudo mknod null c 1 3
mkdir etc,vi inittab 加入以下console::askfirst:-/bin/sh
然后进入cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib,创建mkdir /work/nfs_root/second_fs/lib,拷贝库
最后就是最小根文件系统bin  dev  etc  lib  linuxrc  sbin  usr
下面制作映像文件可以烧到开发板:
                  tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
                  cd Development_util_ok
                   cd yaffs2/
                    cd utils/
                    make
                    sudo cp mkyaffs2image /usr/local/bin/
             加上可执行属性sudo chmod +x /usr/local/bin/mkyaffs2image
             最后编译成镜像文件mkyaffs2image second_fs second_fs.yaffs2
  下一步完善第一个根文件系统:
           手工挂载法:在单板文件系统里面 mkdir proc,mount -t proc none /proc  ,就可以执行ps命令
            非手工加载,需要在服务器上编辑文件系统为镜像文件前,mkdir proc,vi etc/inittab,mkdir etc/init.d,vi etc/init.d/rcS后加入’mount -t proc none /proc‘,sudo chmod +x etc/init.d/rcS(可执行)
                               如果需要其他命令都可以这样的形式加上,也可以vi etc/init.d/rcS后mount -a,然后vi etc/fstab,加入'proc  /proc  proc defaults 0 0'
        制作好了后再生成uimage文件
   继续完善:
           udev:自动创建/dev/设备节点
           mdev:busybox里面的, mkdir sys,vi etc/init.d/rcS,
     加入 2 mount -a
            3 mkdir /dev/pts
           4 mount -t devpts /dev/pts
           5 echo /sbin/mdev > /proc/sys/kernel/hotplug
           6 mdev -s
       vi etc/fstab:   
   加入 1 #device mount-point  type   options  dump fsck order
          2 proc        /proc    proc  defaults     0  0
          3 sysfs       /sys     sysfs defaults     0  0
         4 tmpfs       /dev     tmpfs defaults     0  0
      重新生成.yaffs2
     jffs2文件系统,如书的17章;;如果.yaffs2和.jffs2文件系统不能启动,需要设置启动类型:et bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200
    
         
busybox文件就是ls,cp,cd等命令的组合
查看进程:ps
cat /proc/mounts查看当前挂载了那些根文件系统
删除单板里面的文件系统命令:nand erase root
 
服务器允许挂接NFS服务
sudo vi /etc/exports
加入以下类容:/work/nfs_root/second_fs *(rw,sync,no_root_squash)
重启 sudo /etc/init.d/nfs-kernel-server restart
//下面是在bootloader上设置启动自动挂载NFS文件系统
set bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs init=/linuxrc console=ttySAC0,115200  单板自带的文件系统启动
          再启动后需要mkdir mnt
             然后,需要挂载网络根文件系统mount -t nfs -o nolock 192.168.1.106(服务器ip):/work/nfs_root/first_fs(网络根文件系统的目录) /mnt
             然后再进入/mnt,就是网络根文件系统的文件
单板自动从网络根文件系统启动
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/first_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.106:/work/nfs_root/second_fs ip=192.168.1.100:192.168.1.102:192.168.1.99:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0,115200
posted @ 2019-07-22 15:41  也许明天、  阅读(161)  评论(0)    收藏  举报