• 构建根文件系统启动(2)


     

    配置编译busybox

     make menuconfig

          [*]   Tab completion   

     

    mkdir -p /work/nfs_root/frist_fs

    make

    make  CONFIG_PREFIX=/work/nfs_root/frist_fs install

     

    bin  linuxrc  sbin  usr
    book@book-de

    sktop:/work/nfs_root/frist_fs$ ls -l
    total 12
    drwxr-xr-x 2 book book 4096 2015-12-26 01:23 bin
    lrwxrwxrwx 1 book book   11 2015-12-26 01:23 linuxrc -> bin/busybox
    drwxr-xr-x 2 book book 4096 2015-12-26 01:23 sbin
    drwxr-xr-x 4 book book 4096 2015-12-26 01:23 usr

     

     

    制作最小根文件系统

    1、

    crw------- 1 root root 5, 1 2015-12-24 12:24 /dev/console
    crw-rw-rw- 1 root root 1, 3 2015-12-24 12:06 /dev/null

    mkdir dev

    cd dev /

    sudo mknod console c 5 1

    sudo mknod null  c 1 3

    3、

    cd ..

    mkdir etc

    vi etc/inittab

    console::askfirst:-/bin/sh

    5、

    mkdir /work/nfs_root/frist_fs/lib

    book@book-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp *.so* /work/nfs_root/frist_fs/lib/ -d

     

    怎么烧录到开发板上

    制作yaffs2映像文件

    tar xjf  yaffs_source_util_larger_small_page_nand.tar.bz2

    /work/system/Development_util_ok/yaffs2/utils$make

     sudo cp mkyaffs2image /usr/local/bin/

    sudo chmod +x /usr/local/bin/mkyaffs2image

    book@book-desktop:/work/nfs_root$ mkyaffs2image

    mkyaffs2image frist_fs frist_fs.yaffs2

     

    添加ps功能

    1、

    mkdir proc

    vi etc/inittab

      console::askfrist:-/bin/sh
      ::sysinit:/etc/init.d/rcS

    mkdir etc/init.d

    mkdir etc/init.d

    vi etc/init.d/rcS

      mount -t proc none /proc

    chmod +x etc/init.d/rcS

    2、

    mkdir proc

    vi etc/inittab

      console::askfirst:-/bin/sh   ::sysinit:/etc/init.d/rcS

    mkdir etc/init.d

    mkdir etc/init.d

    vi etc/init.d/rcS

      mount -a 

    chmod +x etc/init.d/rcS

    vi  etc/fstab

      # device    mount-point    type    options   dump  fsck   order
      proc         /proc         proc      defaults   0      0

     

    添加设备驱动      

    udev自动创建/dev/设备节点

    简化版本mdev

    Here's a typical code snippet from the init script:

    [1] mount -t sysfs sysfs /sys

    [2] echo /bin/mdev > /proc/sys/kernel/hotplug

    [3] mdev -s

    Of course, a more "full" setup would entail executing this before the previous code snippet:

    [4] mount -t tmpfs mdev /dev

    [5] mkdir /dev/pts

    [6] mount -t devpts devpts /dev/pts

     

     

    mkdir sys

    vi  etc/fstab  挂载sys目录

     sysfs        /sys          sysfs     defaults    0     0

       tmpfs     /dev        tmpfs    defaults    0        0

    vi  etc/init.d/rcS

    #mount -t proc none /proc
    mount -a
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    mdev -s

     

    制作jffs2映像

    /work/GUI/xwindow/X/deps$

    rm -rf zlib-1.2.3      强制删除

    tar xzf  zlib-1.2.3.tar.gz  解压

    ./configure --shared --prfix=/usr/  配置

    sudo make install         安装

     

    book@book-desktop:/work/tools$  tar xjf mtd-utils-05.07.23.tar.bz2

    book@book-desktop:/work/tools/mtd-utils-05.07.23/util$ make
    book@book-desktop:/work/nfs_root$ mkfs.jffs2 -n -s 2048 -e 128KiB -d frist_fs -o first_fs.jffs2

    -n表示不要在每个擦除块都加上清除标志

    -s 2048 一页大小

    -e 128 一块大小

    -d表根目录

    -o输出文件

    set bootargs noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0 rootfstype=jffs2

    修改根文件系统类型

            1、服务器允许那个目录那个目录可以挂载

    挂接nfs服务{

            2、单板去挂接

    配置文件、etc/exports

    sudo vi /etc/exports

    /work/nfs_root/first_fs   *(rw,sync,no_root_squash)        //允许目录被挂载

    sudo /etc/init.d/nfs-kernel-server restart    //重启nfs服务

     sudo mount -t nfs 192.168.1.175:/work/nfs_root//frist_fs /mnt      //自己挂载实验

     

    a、从flash启动根文件系统再用命令挂载nfs系统

    开发板

    ifconfig会没反应,需先ifconfig eth0 ip  才有反应

    而且还要重启在设置才能ping通

    先设定ip 确认能与虚拟机ping通

    mkdir  /mnt

    mount -t nfs -o nolock 192.168.1.175:/work/nfs_root/frist_fs /mnt       //挂载

     

    b、直接从nfs启动

    ifconfig会没反应,需先ifconfig eth0 ip  才有反应

    而且还要重启在设置才能ping通

    bootargsnoinitrd=root=/dev/mtdblock3 init=/linuxrc console=ttySAC0

    linux-2.6.22.6Documentation fsroot    //有关于它的说明

    ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<auto>

    set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.175:/work/nfs_root/frist_fs ip=192.168.1.110:192.168.1.175:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

    在主机上编写

    t.c 交叉编译t.o

    在单板上运行

    挂载成功

     

  • 相关阅读:
    【机器学习】关于判别模型和生成模型
    Delphi新手跟我学写CALL,附完整原程序
    QT事件研究的文章
    杂烩:QWidget、QGraphics、QtQuick
    Golang全接触
    学会使用git
    代码创建 WPF 旋转动画
    值得推荐的C/C++框架和库 very good
    可恶的QT隐式共享
    Notes on OpenSSL and Qt(ssl.pri,qsslocket_openssl_symbols.cpp)
  • 原文地址:https://www.cnblogs.com/CZM-/p/5078506.html
Copyright © 2020-2023  润新知