博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用busybox-1.1.0打造自己的2410文件系统2
阅读量:2344 次
发布时间:2019-05-10

本文共 4780 字,大约阅读时间需要 15 分钟。

5.创建相关配置文件

 [root@localhost root]# tree

.

|-- bin

|-- dev

|-- etc

|   |-- fstab

|   |-- init.d

|   |   `-- rcS

|   |-- inittab

|   `-- resolv.conf

|-- home

|-- lib

|   |-- ld-2.3.2.so

|   |-- ld-linux.so.2 -> ld-2.3.2.so

|   |-- libc-2.3.2.so

|   |-- libc.so.6 -> libc-2.3.2.so

|   |-- libcap.so.1 -> libcap.so.1.10

|   |-- libcap.so.1.10

|   |-- libcom_err.so.2 -> libcom_err.so.2.0

|   |-- libcom_err.so.2.0

|   |-- libcrypt-2.3.2.so

|   |-- libcrypt.so.1 -> libcrypt-2.3.2.so

|   |-- libcrypto.so.0.9.7a

|   |-- libcrypto.so.4 -> libcrypto.so.0.9.7a

|   |-- libdl-2.3.2.so

|   |-- libdl.so.2 -> libdl-2.3.2.so

|   |-- libgcc_s-3.3.so.1

|   |-- libgcc_s.so.1 -> libgcc_s-3.3.so.1

|   |-- libm-2.3.2.so

|   |-- libm.so.6 -> libm-2.3.2.so

|   |-- libnss_dns-2.3.2.so

|   |-- libnss_dns.so.2 -> libnss_dns-2.3.2.so

|   |-- libnss_files-2.3.2.so

|   |-- libnss_files.so.2 -> libnss_files-2.3.2.so

|   |-- libpthread-0.10.so

|   |-- libpthread.so.0

|   |-- libresolv-2.3.2.so

|   |-- libresolv.so.2 -> libresolv-2.3.2.so

|   |-- libtermcap.so.2 -> libtermcap.so.2.0.8

|   |-- libtermcap.so.2.0.8

|   `-- modules

|       `-- 2.6.14.7

|-- linuxrc

|-- mnt

|-- proc

|-- root

|-- sbin

|-- sys

|-- tmp

|-- usr

|   |-- bin

|   |-- etc

|    `--  profile

|    `-- rc.local

|   |-- lib

|   `-- sbin

`-- var

 

5.1.创建 linuxrc 文件

*这里需要注意一点的是,只要 install busybox,我们根文件系统下先前建好的 linuxrc 就会被覆盖为一同名二进制文件。所以如果事先已做好了自己的 linuxrc,备份我们自己的 linuxrc,在安装完 busybox 后,将 linuxrc 复制回去就好

5.1.1 创建 linuxrc,加入如下内容:

[root@localhost root]# vi linuxrc

#!/bin/sh    //注:在此bin下必须有sh命令

 

#/bin/mount -n -t proc none /proc  #

/bin/mount -n -t sysfs none /sys    #挂载/syssysfs文件系统

/bin/mount -n -t tmpfs none /tmp  #挂载/tmptmpfs文件系统

/bin/mount -n -t ramfs ramfs /mnt   #挂载/mntramfs文件系统

/bin/mount -t ramfs ramfs /var

#/bin/mount -n -t tmpfs tmpfs /dev/shm

exec /sbin/init

 

另我们也可根据须要添加以下项

/sbin/insmod -f /lib/yaffs.o  ?

由于我这里用到了YAFFS系统, 故将yaffs.o考到root_fs/lib之下

/bin/mount -t  yaffs /dev/mtdblock/4   /usr  ?

/bin/cp ­a /mnt/etc/* /etc

echo "re­create the /etc/mtab entries"

# re­create the /etc/mtab entries

/bin/mount ­f ­t cramfs ­o remount,ro /dev/mtdblock/3 /

5.1.2修改权限

[arm@localhost my_rootfs]#chmod 775 linuxrc

[arm@localhost my_rootfs]#ls linuxrc ­al

­rwxrwxr­x  1 root root  533 Jun  4 11:19 linuxrc

当编译内核时,指定命令行参数如下

Boot options  ­­­> Default kernel command string: 我的命令行参数如下

noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200

其中的 init 指明 kernel 执行后要加载的第一个应用程序,缺省为/sbin/init,此处指定为/linuxrc

4.       编写 inittab文件

[root@localhost etc]# vi inittab

# This is run first except when booting

::sysinit:/etc/init.d/rcS    //指定系统初始化脚本文件

 

# Start an "askfirst" shell on the console

::askfirst:/bin/sh        //指定一个登陆的shell (注意,这里如果用gettyminigetty代替sh,那么shell就会等待用户登录,而不会直接进入shell)

 

# Stuff to do when restarting the init process

::restart:/sbin/init    //指定系统重启时执行的初始化程序

 

#::once:/usr/sbin/inetd

::once:/usr/etc/rc.local   //指定首次执行的脚本文件

 

# Stuff to do before rebooting

#::ctrlaltdel:/sbin/reboot         //指定当按下ctrl+alt+del键时执行的命令,嵌入式中不用。

::shutdown:/bin/umount -a –r    //指定关机时执行的操作

 

/etc/下面须有init.d/rcS,

  passwd,  group, fstab
  至于是否是非要这几个文件不可, 还有待考证,我做的文件系统就没要它。
 

[root@localhost etc]# vi init.d/rcS

#! /bin/sh

 

echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

echo "^     Welcome to YAFFS root filesystem!   ^"

echo "^                                         ^"

echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"

 

PATH=/sbin:/bin:/usr/sbin:/usr/bin

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 –a   //将调用fstab文件执行

/bin/mkdir -p /var/tmp

/bin/mkdir -p /var/run

/bin/mkdir -p /var/log

/bin/mkdir -p /var/lock

/bin/mkdir -p /var/lib

 

#/etc/rc.d/init.d/netd start

#/etc/rc.d/init.d/httpd start

 

/bin/hostname -F /etc/sysconfig/HOSTNAME(这句很明显配置hostname ,要不要随你)

#/bin/mount -o remount,rw  /
5.3
fstab ------->
none          /proc           proc      defaults    0   0
none         /dev/pts         devpts    mode=0622     0    0
tmpfs        /dev/shm         tmpfs     defaults      0    0

[root@localhost etc]# vi ../usr/etc/rc.local

#!/bin/sh

. /usr/etc/profile

 

/sbin/ifconfig lo 127.0.0.1 up

#/sbin/ifconfig eth0 192.168.2.223 netmask 255.255.255.0 up

#/bin/route add default gw 192.168.2.1 eth0

#/sbin/inetd

#/usr/sbin/makelinks

#source /.bashrc

/bin/ln -s /dev/sound/dsp /dev/dsp

/bin/ln -s /dev/sound/mixer /dev/mixer

 

 

/bin/mkdir /mnt/udisk

/bin/mkdir /mnt/sdcard

[root@localhost etc]# vi ../usr/etc/profile

# Ash profile

# vim: syntax=sh

 

# No core files by default

 

#/bin/mkdir /dev/bus/usb

ulimit -S -c 0 > /dev/null 2>&1

 

 

#USER="`id -un`"

LOGNAME=$USER

PS1='[\u@\h \W]\$ '

PATH=$PATH

LD_LIBRARY_PATH=/lib:/usr/lib

 

HOSTNAME=`/bin/hostname`

 

export USER LOGNAME PS1 PATH LD_LIBRARY_PATH

 

创建dev目录下相关连接文件

所有节点添加相应驱动才有的。

/bin/ln -s /dev/sound/dsp /dev/dsp    音频播放须要用到的设备节点

/bin/ln -s /dev/sound/mixer /dev/mixer  音频播放须要用到的设备节点

/bin/ln -s /dev/misc/rtc /dev/rtc

/bin/ln -s /dev/vc/0 /dev/tty0

/bin/ln -s /dev/vc/1 /dev/tty1

/bin/ln -s /dev/vc/2 /dev/tty2

/bin/ln -s /dev/tts/0 /dev/ttyS0

转载地址:http://oznvb.baihongyu.com/

你可能感兴趣的文章
谈谈:如何由浅入深的学习一门编程语言?
查看>>
讨论:程序员薪资凭啥那么高?
查看>>
都2021年了,现在转行搞JAVA还来的及么?
查看>>
为什么这么多人Java基础薄弱?该如何提升?
查看>>
如何成为一名合格的Java程序员?
查看>>
spring框架中5种自动装配模式介绍
查看>>
如何学习Spring框架?有哪些建议?
查看>>
Java程序员烂大街了吗?是,也不是
查看>>
为什么学编程大部分人选Java编程语言?
查看>>
初学者学习Java必须了解的Java基础知识!
查看>>
想要学习Java,没有英语基础可以学吗?
查看>>
学Java需要数学好吗?数学基础差就不能学Java吗?
查看>>
Java常用英文单词列表
查看>>
2021年Java最新自学之路,非常适合零基础自学【建议收藏】
查看>>
diff命令
查看>>
ifconfig命令
查看>>
route命令和netstat命令
查看>>
lsof命令
查看>>
IP(Internet Protocal) 地址 说明
查看>>
wget命令 scp命令 rcp命令
查看>>