1.创建根文件目录

mkdir rootfs(名字是随便取的)
2.创建子目录
cd rootfs
mkdir bin dev etc lib proc sbin sys usr mnt tmp var
mkdir usr/bin usr/lib usr/sbin lib/modules
3.创建设备文件
cd dev
mknod -m 666 console c 5 1
mknod -m 666 null c 1 3(两个数字之间有空格,两个数字表示设备的主次设备号,刚开始学习的时候不懂连在一起了总是不对)
4.配置busybox
busybox源代码在www.busybox.net下载
解压busybox压缩包,例如:tar -xvzf busybox-1.15.2
然后进入源码包,修改Makefile
第164行,CROSS_COMPILE=arm-linux-
第190行,ARCH=arm
然后对busybox进行配置make menuconfig,进入菜单后有几项需要修改
(1)busybox settings-->build options-->build busybox as static binary(no shared libs)选上
(2)busybox settings-->installation options-->don't use /usr 选上
(3)busybox settings-->installation options-->busybox installation prefix(编译好之后的安装路径../rootfs)
(4)busybox settings-->busybox library tuning-->username conpletion
(5)busybox settings-->busybox library tuning-->fancy shell prompts
如果不选择上面4 ,5两项,文件系统是不识别PS1这个环境变量的参数的。那么运行linux时候命令行就只显示[\u@\h \W] 不进行动态链接。
然后对busybox进行编译make
安装make install(安装其实就是进行拷贝把编译好的命令拷贝到(3)指定的路径)
5 进入etc添加文件
cd etc
拷贝busybox-1.15.2/examples/bootfloopy/etc/* 到当前目录下
cp -r ../../busybox-1.15.2/examples/bootfloopy/etc/*  ./
包括文件:fstab init.d inittab profile
拷贝 /etc/passwd  /etc/group /etc/shadow到当前目录下
cp /etc/passwd ./
cp /etc/group ./
cp /etc/shadow ./
修改iniitab文件:

# /etc/inittab

::sysinit:/etc/init.d/rcS

console::askfirst:-/bin/sh

//::once:/usr/sbin/telnetd -l /bin/login

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

修改fstab文件
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
var /dev tmpfs defaults 0 0
修改init.d/rcS文件
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
runlevel=S
prevlevel=N
export PATH runlevel prevlevel
mount -a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
mkdir -p /var/lock
/bin/hostname -F /etc/sysconfig/HOSTNAME
修改profile文件
# Ash profile
# vim: syntax=sh
# No core files by default
#ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h \W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
echo "Processing /etc/profile... "
echo "Done"
export USER LOGNAME PS1 PATH
在etc中建sysconfig文件夹在sysconfig文件夹中建HOSTNAME文件在里面写上用户名,此名字将在linux系统的命令行中显示
6.编译内核模块
进入内核模块的目录(例如:linux 2.6.29)
make modules ARCH =arm CROSS_COMPILE=arm-linux
7 内核模块的安装
make modules_install ARCH=arm INSTALL_MOD_PATH=/.../roofs(跟文件系统所在的目录)
这样就将我们内核编译好的内核模块拷贝到了跟文件系统中
8.根据想要做的文件系统的类型,使用不同的工具对其进行编译,然后拷进开发板
以做yaffs2为例:mkyaffs2image rootfs(文件系统名字) rootfs.bin(制作的yaffs2文件系统的名字)

Linux 根文件系统制作的更多相关文章

  1. linux根文件系统制作

    在嵌入式中移植的内核下载到开发板上,是没有办法真正的启动Linux操作系统的,会出现无法加载文件系统的错误. 那么根文件系统在系统启动中到底是什么时候挂载的呢?先将/dev/ram0挂载,而后执行/l ...

  2. 基于mini2440嵌入式Linux根文件系统制作(Initramfs和nfs两种跟文件系统)

    嵌入式系统由三部分构成: 1.bootoader---bootparameters---2.kernel 3.Root-filesysytem 一个内核可以挂载多个文件系统,但是有一个根文件系统所以叫 ...

  3. linux根文件系统制作,busybox启动流程分析

    分析 busybox-1.1.6 启动流程,并 制作一个小的根文件系统 源码百度云链接:https://pan.baidu.com/s/1tJhwctqj4VB4IpuKCA9m1g 提取码 :l10 ...

  4. linux根文件系统制作之busybox编译和系统构建【转】

    转自:http://blog.chinaunix.net/uid-29401328-id-5019660.html 介绍完相关文件后我们开始构建文件系统,涉及到的文件等到具体用到的时候再讲. 一.编译 ...

  5. 嵌入式linux根文件系统制作

    编译Busybox 从http://www.busybox.net/downloads/下载busybox工具.这里我们下载的上最新版: busybox-1.24.2.tar.bz2 解压Busybo ...

  6. 【linux】linux根文件系统制作

    欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  7. 嵌入式linux内核制作、根文件系统制作

    嵌入式系统构成: 主要由bootloader.kernel.以及根文件系统三部分组成. 内核制作步骤: 制作嵌入式平台使用的linux内核制作方法与pc平台上的linux内核基本一致 1.清除原有配置 ...

  8. 制作linux根文件系统

    转载地址:http://wenku.baidu.com/view/2cb1b4707fd5360cba1adb14.html 2011十一月 24 转 嵌入式根文件系统制作 (3985) (0) 转自 ...

  9. S5PV210的根文件系统制作

    一.移植BusyBox1.下载BusyBox的源代码下载地址:http://www.busybox.net/downloads/,此处下载busybox-1.20.2.tar.bz2.2.解压并进入目 ...

随机推荐

  1. what is WLAN ? when and why we need use it ?

    无线局域网络(Wireless Local Area Networks: WLAN)是相当便利的数据传输系统,它利用射频(Radio Frequency: RF)的技术,取代旧式碍手碍脚的双绞铜线(C ...

  2. vsftpd本地用户登录密码错误

    今天发现自己虚拟机的vsftp使用本地用户名无法登陆,于是重新配置,但配置了很多次都没成功,一直显示 530 Login incorrect. Login failed 尝试了网上很多修改PAM的方案 ...

  3. Linux进程间通信IPC学习笔记之消息队列(Posix)

    基础知识: 消息队列可认为是一个消息链表,有足够写权限的线程可往队列中放置消息,有足够读权限的线程可以从队列中取走消息.在某个进程往一人队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达. ...

  4. 一、mysql使用入门

    mysql -h localhost -u root -p123456 登录mysql服务器 show databases 列出所拥有的数据库 use www 选择一个www的数据库 show tab ...

  5. linux工作队列

    工作队列一般用来做滞后的工作,比如在中断里面要做很多事,但是比较耗时,这时就可以把耗时的工作放到工作队列.说白了就是系统延时调度的一个自定义函数. 工作队列是实现延迟的新机制,从 2.5 版本 Lin ...

  6. 【HDU2222】Keywords Search

    Problem DescriptionIn the modern time, Search engine came into the life of everybody like Google, Ba ...

  7. crontab定时任务中文乱码问题

    手动执行都很正常的的脚本,添加到定时任务中日志文件全是乱码经过多方查证终于找到了原因! crontab启动的任务没有获取系统的环境变量,导致中文乱码解决办法:   在执行的脚步中添加编码方式或者添加对 ...

  8. JS创建类和对象

    JavaScript 创建类/对象的几种方式 在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活 ...

  9. css3属性整理

    浏览器内核:主流内容主要有Mozilla(熟悉的有Firefox,Flock等浏览器).WebKit(熟悉的有Safari.Chrome等浏览器).Opera(Opera浏览器).Trident(讨厌 ...

  10. Making your local server accessible from anywhere

    In reality you probably don’t want to host you websites on your local computer unless you have a ver ...