免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 884 | 回复: 0
打印 上一主题 下一主题

制作rootfs, 使用udev [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-19 15:02 |只看该作者 |倒序浏览
linux-2.6.18以上版本完全抛弃了 devfs,使用 udev. udev可以在 http://www.kernel.org/pub/linux/utils/kernel/hotiflags目录下找到,不过 busybox高版本提供了 udev的简化版 mdev.
作 linux kernel 高版本能引导的文件系统 rootfs 步骤:
1.  创建必须的文件夹及设备文件
# mkdir rootfs
# cd rootfs
# mkdir bin dev etc lib mnt proc sbin sys root
# mkdir  etc/var etc/tmp etc/sysconfig
# ln  -s  etc/var  var
# ln  -s  etc/tmp  tmp
2。创建设备文件系统
新版本的udev是一个基于用户空间的设备管理系统。在内核启动时并不能
自动创建设备节点,固需手动创建console和null两个启动过程必须的设
备节点。我们将采用busybox中内置的mdev,一个简化的udev版本.
# mknod -m 660 dev/console c 5 1
# mknod -m 660 dev/null        c 1 3
3.      建立动态运行库
# cp -rfd 交叉编译器位置/arm-linux/lib/*  rootfs/lib/
# rm -rf rootfs/lib/*.a  
# arm-linux-strip rootfs/lib/*
4.      交叉编译busybox
解压后修改Makefile,指明交叉编译器:
     ARCH            ?= arm
    CROSS_COMPILE  ?= arm-linux-
执行 make menuconfig
选择系统需要用到的命令或工具。
值得注意的是 shell 的选择,在 Choose your default shell (none) 这一项回车后选择ash
Busybox settings --->
   Build option  --->
      
  • Build BusyBox as a static binary (no shared libs)
    Linux System Utilities  --->
       
  • mdev
       
  •    Support /etc/mdev.conf
       [ ]     Support command execution at device addition/removal
    必须选择 mdev 选项, 否则不能启用udev。
    执行 make install进行编译,编译完后,会出现_install目录,包含bin、sbin、usr三个目录和一个linuxrc文件。
    linuxrc是linux启动后第一执行的文件(由u-boot传给linux的启动参数决定,在kernel的boot option 的目录),其作用是执行相应的初始化工作。但u-boot编译生成的仅是一个指向/bin/busybox的链接文件。由于我们需要作一些初始化工作,如启动web服务器,加载特定驱动程序等,我们将自行编写linuxrc这个文件。bin、sbin、usr这三个目录里除了bin/busybox一个文件外,其余都是指向busybox的链接文件。我们将bin、sbin、usr这三个目录和linuxrc这个链接文件拷贝到rootfs的目录下,基本的文件系统制作完成。
    5.      etc目录制作
    a)        添加 init.d/rcS 文件 添加自动执行部分
    #! /bin/sh
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib:
    runlevel=S
    prevlevel=N
    umask 022
    export PATH runlevel prevlevel
    #
    #Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
    #
    trap ":" INT QUIT TSTP
    /bin/mount -t proc  none  /proc
    /bin/mount -t tmpfs none  /root
    /bin/mount -t tmpfs none  /tmp
    /bin/mount -t tmpfs none  /var
    /bin/mount -t tmpfs none  /dev
    /bin/mount -t sysfs none  /sys
    /bin/mkdir -p /var/lib
    /bin/mkdir -p /var/run
    /bin/mkdir -p /var/log
    /bin/mknod -m 660 /dev/console c 5 1
    /bin/mknod -m 660 /dev/null    c 1 3
    /bin/mknod -m 666 /dev/ptmx    c 5 2
    /bin/mkdir  /dev/shm
    /bin/mkdir  /dev/pts
    echo  "Starting mdev ..."
    /sbin/mdev -s
    echo /sbin/mdev > /proc/sys/kernel/hotplug
    /etc/rc.d/init.d/netd start
    /etc/rc.d/init.d/httpd start
    /sbin/ifconfig lo    127.0.0.1
    /sbin/ifconfig eth0  192.168.0.9 up
    /sbin/route add default eth0
    /bin/hostname -F /etc/sysconfig/HOSTNAM
    b) 可以考虑添加一些其他的配置文件
    生成镜像文件,测试


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/90973/showart_1834111.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP