Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9146922
  • 博文数量: 1726
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19850
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1726)

文章存档

2024年(1)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: LINUX

2009-02-19 15:02:34

linux-2.6.18以上版本完全抛弃了 devfs,使用 udev. udev可以在 目录下找到,不过 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是一个基于用户空间的设备管理系统。在内核启动时并不能

自动创建设备节点,固需手动创建consolenull两个启动过程必须的设

备节点。我们将采用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目录,包含binsbinusr三个目录和一个linuxrc文件。

linuxrclinux启动后第一执行的文件(由u-boot传给linux的启动参数决定,在kernelboot option 的目录),其作用是执行相应的初始化工作。但u-boot编译生成的仅是一个指向/bin/busybox的链接文件。由于我们需要作一些初始化工作,如启动web服务器,加载特定驱动程序等,我们将自行编写linuxrc这个文件。binsbinusr这三个目录里除了bin/busybox一个文件外,其余都是指向busybox的链接文件。我们将binsbinusr这三个目录和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) 可以考虑添加一些其他的配置文件


生成镜像文件,测试


阅读(2928) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~