linux系统建立文件系统,linux文件系统的建立
1
根文件系統
嵌入式Linux中都需要構建根文件系統,構建根文件系統的規則在FHS(Filesystem Hierarchy
Standard)文檔中,下面是根文件系統頂層目錄。
目錄
內容
bin
存放所有用戶都可以使用的、基本的命令。
sbin
存放的是基本的系統命令,它們用于啟動系統、修復系統等。
usr
里面存放的是共享、只讀的程序和數據。
proc
這是個空目錄,常作為proc文件系統的掛載點。
dev
該目錄存放設備文件和其它特殊文件。
etc
存放系統配置文件,包括啟動文件。
lib
存放共享庫和可加載塊(即驅動程序),共享庫用于啟動系統、運行根文件系統中的可執行程序。
boot
引導加載程序使用的靜態文件
home
用戶主目錄,包括供服務賬號鎖使用的主目錄,如FTP
mnt
用于臨時掛接某個文件系統的掛接點,通常是空目錄。也可以在里面創建空的子目錄。
opt
給主機額外安裝軟件所擺放的目錄。
root
root用戶的主目錄
tmp
存放臨時文件,通常是空目錄。
var
存放可變的數據。
2、構建根文件按系統
2.1、建立根文件系統目錄
進入到/opt/st
yarm目錄,新建建立根文件系統目錄的腳本文件create_rootfs_bash,使用命令chmod +x
create_rootfs_bash改變文件的可執行權限,./create_rootfs_bash運行腳本,就完成了根文件系統目錄的創建。
#!/bin/sh
echo "------Create
rootfs directons start...--------"
mkdir
rootfs
cd
rootfs
echo
"--------Create root,dev....----------"
mkdir root dev etc
boot tmp var sys proc lib mnt home
mkdir etc/init.d
etc/rc.d etc/sysconfig
mkdir usr/sbin
usr/bin usr/lib usr/modules
echo "make node in
dev/console dev/null"
mknod -m 600
dev/console c 5 1
mknod -m 600
dev/null
c 1 3
mkdir mnt/etc
mnt/jffs2 mnt/yaffs mnt/data mnt/temp
mkdir var/lib
var/lock var/run var/tmp
chmod 1777
tmp
chmod 1777
var/tmp
echo "-------make
direction done---------"
改變了tmp目錄的使用權,讓它開啟sticky位,為tmp目錄的使用權開啟此位,可確保tmp目錄底下建立的文件,只有建立它的用戶有權刪除。盡管嵌入式系統多半是單用戶,不過有些嵌入式應用不一定用root的權限來執行,因此需要遵照根文件系統權限位的基本規定來設計。
2.2、建立動態鏈接庫
動態鏈接庫直接用友善之臂的,先解壓友善之臂的根文件包,拷貝lib的內容到新建的根文件目錄lib內。
cd
/mnt/hgfs/share
tar
–zxvf root_qtopia.tgz –C /home
cp –rfd
/hmoe/root_qtopia/lib/* /fs/rootfs/lib/*
2.3
交叉編譯Bosybox
Bosybox是一個遵循GPL v2協議的開源項目,它在編寫過程總對文件大小進行優化,并考慮了系統資源有限(比如內存等)的情況,使用Busybox可以自動生成根文件系統所需的bin、sbin、usr目錄和linuxrc文件。
1、解壓busybox
cd
/mnt/hgfs/share
tar
–zxvf busybox-1.13.3.tar.tgz –C /home
2、進入源碼,修改Makefile文件:
cd
/home/busybox-1.13.3
修改:
CROSS_COMPILE
?=arm-linux-
//第164行
ARCH
?=arm
//第189行
3、配置busybox
輸入make men
onfig進行配置
(1)、Busybox
Settings--->
General Configuration--->
[*] Show verbose applet usage messages
[*] Store applet usage messages in compressed form
[*] Support –install [-s] to install applet links at
runtime
[*] Enable locale support(system needs locale for this to
work)
[*] Support for –long-options
[*] Use the devpts filesystem for unix98 PTYs
[*] Support writing pidfiles
[*] Runtime SUID/SGID configuration via
/etc/busybox.config
[*] Suppress warning message if
/etc/busybox.conf is not readable
Build
Options--->
[*] Build BusyBox as a static binary(no shared libs)
[*] Build with Large File Support(for accessing
files>2GB)
Installation
Options->
[]Don’t use /usr
Applets links (as soft-links) --->
(./_install) BusyBox installation prefix
Busybox Library
Tuning --->
(6)Minimum password legth
(2)MD5:Trade Bytes for Speed
[*]Fsater /proc scanning code(+100bytes)
[*]Command line editing
(1024)Maximum length of input
[*] vi-style line
editing commands
(15) History size
[*] History
saving
[*] Tab
completion
[*]Fancy shell prompts
(4) Copy b?r size ,in
kilobytes
[*]Use ioctl names
rather than hex vals in error messages
[*]Support
infiniband HW
(2)、Linux Module
Utilities--->
(/lib/modules)Default directory containing modules
(modules.dep)Default name of modules.dep
[*]
insmod
[*]
rmmod
[*]
lsmod
[*]
modprobe
-----options common to multiple modutils
[ ]
support version 2.2/2.4 Linux kernels
[*]Support tainted module checking with new
kernels
[*]Support for module .aliases file
[*]
support for modules.symbols file
(3)、在busybox中配置對dev下設備類型的支持
dev的創建有三種方法:
手動創建:在制作根文件系統的時候,就在dev目錄下創建好要使用的設備文件,系統掛接根文件系統后,就可以使用dev目錄下的設備文件了。
使用devfs文件系統:這種方法已經過時,具有不確定的設備映射、沒有足夠的主/次設備號、devfs消耗大量的內存。
ev:它是個用戶程序,能根據系統中硬件設備的狀態動態的更新設備文件,包括設備文件的創建、刪除等。它的操作相對復雜,但靈活性很高
mdev是busybox自帶的一個簡化版的 ev,適合于嵌入式的應用埸合。其具有使用簡單的特點。它的作用,就是在系統啟動和熱插拔或動態加載驅動程序時,自動產生驅動程序所需的節點文件。在以busybox為基礎構建嵌入式linux的根文件系統時,使用它是最優的選擇。下面的選項將增加對mdev的支持。
Linux System
Utilities
--->
[*]Support
/etc/mdev.conf
[*]Support command execution at device addition/removal
4、 編譯busybox
編譯busybox到指定目錄:
cd
/home/busybox-1.13.3
make
CONFIG_PREFIX=/fs/rootfs install
在rootfs目錄下會生成目錄bin、sbin、usr和文件linuxrc的內容。
2.4
建立etc目錄下的配置文件
1、etc/mdev.conf文件,內容為空。
2、拷貝主機etc目錄下的passwd、group、shadow文件到rootfs/etc目錄下。
3、etc/sysconfig目錄下新建文件HOSTNAME,內容為”MrHung”。
4、etc/inittab文件:
#etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
5、etc/init.d/rcS文件:
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask
022
export PATH
runlevel prevlevel
echo
"----------munt all----------------"
mount
-a
echo
/sbin/mdev>/proc/sys/kernel/hotplug
mdev -s
echo
"***********************************************"
echo
"****************St ying ARM*********************"
echo "Kernel
version:linux-2.6.32.2"
echo "St
ent:Huang"
echo
"Date:2011.07.9"
echo
"***********************************************"
/bin/hostname -F
/etc/sysconfig/HOSTNAME
使用以下命令改變rcS的執行權限:
Chmod
+x rcS
6、etc/fstab文件:
#device
mount-point
type
option
dump
fsck
order
proc
/proc
proc
defaults
0
0
none
/tmp
ramfs
defaults
0
0
sysfs
/sys
sysfs
defaults
0
0
mdev
/dev
ramfs
defaults
0
0
7、 etc/profile文件:
#Ash
profile
#vim:syntax=sh
#No core file by
defaults
#ulimit -S -c
0>/dev/null
2>&1
USER="id
-un"
LOGNAME=$USER
PS1='[\u@\h
\W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER
LOGNAME PS1 PATH
2.5
制作根文件系統映像文件
使用以下命令安裝好yaffs文件系統制作工具:
tar
–zxvf mkyaffs2image.tgz –C /
在/目錄下,使用命令mkyaffs2image-128M
rootfs rootfs.img生成根文件系統映像文件。
總結
以上是生活随笔為你收集整理的linux系统建立文件系统,linux文件系统的建立的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu的java环境变量_Ubun
- 下一篇: linux 查看指定ip的路由