zoukankan      html  css  js  c++  java
  • linux系统移植(二)

    上一篇文章讲解了linux系统移植到开发板上的步骤,本篇文章讲解根文件系统的制作。

    1.配置编译busybox,在busybox源码目录中的install文件说明了怎么编译。

    ①打开Makefile,修改ARCH和CROSS_COMPILE

    ②make menuconfig

    ③make install或make CONFIG_PREFIX=/path install安装到指定的目录,一面破坏PC机的根文件系统

    2.修改完善文件系统

    ①创建/dev/console和/dev/null两个设备节点

    mknod console c 5 1
    mknod null c 3 1
    ②创建/etc/inittab文件,添加:console::askfirst:-/bin/sh(这个就是linux启动的第一个应用程序)
    inittab文件格式:
         <id>:<runlevels>:<action>:<process>
         id=>/dev/id,用作终端:stdin、stdout、stderr:printf,scanf,err
         runlevels:可以忽略
         action:执行时机
         process:应用程序或脚本
    ③安装C库
    将交叉编译工具中的so文件拷贝到busybox中的lib目录下
     
    到此为止,一个最小根文件系统做好了,可以烧到开发板上运行了。
     
    下面我们继续完善。
    在烧有最小文件系统的开发板上执行ps命令提示不能打开/proc,没有目录,ps命令就是去/proc目录看看有什么内容,并显示在终端上。
    创建proc目录:mkdir proc
    挂载proc文件系统:mount -t proc none /proc(proc是内核提供的虚拟文件系统)
    这时在终端上输入ps命令,正常。
    另一种方法:
    vi /etc/inittab
    添加:::sysinit:/etc/init.d/rcS
    创建脚本文件:
    mkdir /etc/init.d
    vi rcS
    添加:mount -t proc none /proc
    为rcS添加执行属性:chmod +x /etc/init.d/rcS
    在一中方法:mount -a,根据/etc/fstab内容来挂载根文件系统
    创建:vi /etc/fstab
    fstab文件的格式:
    # device    mount-point     type          options         dump      fsck             order
    proc           /proc             proc              default      0                0
     
    下面完善dev目录:
    linux系统中用udev自动创建/dev目录下的设备节点,在busybox里用的是udev的简化版本mdev。
    首先创建sys目录:mkdir /sys
    在/etc/fstab文件中添加
    sysfs  /sys    sysfs       default    0             0
    tmpfs  /dev    tmpfs     default    0               0 
    在vi /etc/init.d/rcS中添加如下内容:
    mount -a
    mkdir /dev/pts
    mount  -t   devpts   devpts    /dev/pts
    echo /sbin/mdev  >  /proc/sys/kernel/hotplug  //当加在某个模块时内核会调用hotplug,而这个hotplug指向了/sbin/mdev,这个程序会自动创建设备节点
    mdev -s                     //意思是将内核现有的节点先创建出来
     
    在开发调试过程中经常用到网络文件系统。
    1.服务器端:
    修改/etc/exports文件,添加如下内容:
    /opt/EmbedSky/root_nfs *(rw,sync,no_root_squash)
    添加的内容表示:表示允许任何IP地址范围的计算机以读写的方式访问/opt/EmbedSky/root_nfs目录
    /opt/EmbedSky/root_nfs称为服务器输出共享目
    括号内的参数意义描述如下:
    rw:读/写权限,只读权限的参数为ro;
    sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。
    no_root_squash:NFS服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。
    重启nfs服务:service rpcbind restart    service nfs start
     2.客户端:
    mkdir /mnt/nfs
    mount -t nfs -o nolock 192.168.1.58:/opt/EmbedSky/root_nfs /mnt/nfs/
    注意:这里的-o nolock不能省略,否则提示:rpcbind: server localhost not responding, timed out
    开机自动挂在网络文件系统:
    set bootargs noinitrd root=/dev/nfs nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>] ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autocof> init=/linuxrc console=ttySAC0
     
     
     
  • 相关阅读:
    服务器图片等资源在8080端口保存
    thinkphp 3.2.1 URL 大小写问题 下面有具体说明
    linux samba smb 在客户端无法连接使用
    php连接redis服务
    服务器死机 导致 mongo 挂掉
    同一个页面引用不同版本jquery库
    CSS3阴影 box-shadow的使用和技巧总结
    php 中使用正则
    Hbase-1.1.1-java API
    hive1.2.1问题集锦
  • 原文地址:https://www.cnblogs.com/zpehome/p/3820717.html
Copyright © 2011-2022 走看看