http://..com/question/29518118.html
http://topic.csdn.net/u/20070630/22/62ee4833-4904-4e39-bb6a-b21a00149334.html
⑵ 如何製作Linux根文件系統
根文件系統一直以來都是所有類Unix操作系統的一個重要組成部分,也可以認為是嵌入式Linux系統區別於其他一些傳統嵌入式操作系統的重要特徵,它給Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。我們需要清楚的了解根文件系統的基本結構,以及細心的選擇所需要的系統庫、內核模塊和應用程序等,並配置好各種初始化腳本文件,以及選擇合適的文件系統類型並把它放到實際的存儲設備的合適位置。
Linux的根文件系統以樹型結構組織,包含內核和系統管理所需要的各種文件和程序,一般說來根目錄」/」下的頂層目錄都有一些比較固定命名和用途。
下面列出了一個Linux根文件系統中的比較常見的目錄結構:
/bin 存放二進制可執行命令的目錄
該目錄下存放所有用戶都可以使用的、基本的命令,這些命令在掛接其它文件系統之前就可以使用,所以/bin目錄必須和根文件系統在同一個分區中。
/bin目錄下常用的命令有:cat,chgrp,chmod,cp,ls,sh,kill,mount,umount,mkdir,m knod,[,test等「[」命令其實就是test命令,我們在利用Busybox製作根文件系統時,在生成的bin目錄下,可以看到一些可執行的文件,也就是可用的一些命令。
/dev 存放設備文件的目錄
該目錄下存放的是設備文件,設備文件是Linux中特有的文件類型,在Linux系統下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬體。比如通過"dev/ttySAC0"文件可以操作串口0,通過"/dev/mtdblock1"可以訪問MTD設備的第2個分區。
/etc 存放系統管理和配置文件的目錄
該目錄下存放著各種配置文件,對於PC上的Linux系統,/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴於系統中所擁有的應用程序,依賴於這些程序是否需要配置文件。在嵌入式系統中,這些內容可以大為精減。
/home 用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user表示
用戶目錄,它是可選的,對於每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,裡面存放用戶相關的配置文件。
/lib 存放動態鏈接共享庫的目錄
該目錄下存放共享庫和可載入(驅動程序),共享庫用於啟動系統。運行根文件系統中的可執行程序,比如:/bin /sbin 目錄下的程序。
/sbin存放系統管理員使用的管理程序的目錄
該目錄下存放系統命令,即只有管理員能夠使用的命令,系統命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基 本的系統命令,它們用於啟動系統,修復系統等,與/bin目錄相似,在掛接其他文件系統之前就可以使用/sbin,所以/sbin目錄必須和根文件系統在同一個分區中。
/sbin目錄下常用的命令有:shutdown reboot fdisk fsck等,本地用戶自己安裝的系統命令放在/usr/local/sbin目錄下。
/tmp 公用的臨時文件存儲點
用於存放臨時文件,通常是空目錄,一些需要生成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在並可以訪問。
/root 系統管理員的主目錄
根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。
/mnt 系統提供這個目錄是讓用戶臨時掛載其他的文件系統。
用於臨時掛載某個文件系統的掛接點,通常是空目錄,也可以在裡面創建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光碟、硬碟。
/proc 虛擬文件系統,可直接訪問這個目錄來獲取系統信息。
這是一個空目錄,常作為proc文件系統的掛接點,proc文件系統是個虛擬的文件系統,它沒有實際的存儲設備,裡面的目錄,文件都是由內核臨時生成的,用來表示系統的運行狀態,也可以操作其中的文件控制系統。
/usr 最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。
/usr目錄的內容可以存在另一個分區中,在系統啟動後再掛接到根文件系統中的/usr目錄下。裡面存放的是共享、只讀的程序和數據,這表明/usr目錄下的內容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。
/var 某些大文件的溢出區
與/usr目錄相反,/var目錄中存放可變的數據,比如spool目錄(mail,news),log文件,臨時文件。
---------------------------------------------------------------------
一、移植環境:
1、 Ubuntu 10.10發行版
2、 u-boot.bin
3、 目標機:FS_S5PC100平台
4、 交叉編譯器 arm-cortex_a8-linux-gnueabi-gcc
---------------------------------------------------------------------
二、移植步驟
1、 源碼下載
我們選擇的版本是busybox-1.17.3.tar.bz2下載路徑為:
http://busybox.net/downloads/
2、 解壓源碼
$ tar xvf busybox-1.17.3.tar.bz2
3、 進入源碼目錄
$ cd busybox-1.17.3
4、 配置源碼
$ make menuconfig
Busybox Settings --->
Build Options --->
[*] Build BusyBox as a static binary (no shared libs)
[ ] Force NOMMU build
[ ] Build with Large File Support (for accessing files > 2 GB)
(arm-cortex_a8-linux-gnueabi-) Cross Compiler prefix
() Additional CFLAGS
5、 編譯
$ make
6、 安裝
busybox默認安裝路徑為源碼目錄下的_install
$ make install
7、 進入安裝目錄下
$ cd _install
$ ls
bin linuxrc sbin usr
8、 創建其他需要的目錄
$ mkdir dev etc mnt proc var tmp sys root
9、 添加庫
在_install目錄下創建一個lib文件夾,將工具鏈中的庫拷貝到lib目錄下
$ mkdir lib
$ cp /home/linux/x-tools/arm-cortex_a8-linux-gnueabi/arm-cortex_a8-linux-gnueabi/lib/* ./lib/
刪除lib下的所有目錄、.o文件和.a文件,對庫進行瘦身以減小文件系統的大小
$ rm *.o *.a
$ arm-cortex_a8-linux-gnueabi-strip lib/*
10、 添加系統啟動文件
在etc下添加文件inittab
$ vim /etc/inittab
文件內容如下:
#this is run first except when booting in single-user mode.
:: sysinit:/etc/init.d/rcS
# /bin/sh invocations on selected ttys
# Start an "askfirst" shell on the console (whatever that may be)
::askfirst:-/bin/sh
# Stuff to do when restarting the init process
::restart:/sbin/init
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
在etc下添加文件fstab
$ vim /etc/fstab
文件內容如下:
#device mount-point type options mp fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
這里我們掛在的文件系統有三個proc、sysfs和tmpfs,在內核中proc和sysfs默認都支持,而tmpfs是沒有支持的,我們需要添加tmpfs的支持
修改內核配置:
$ make menuconfigFile systems --->
Pseudo filesystems --->
[*] Virtual memory file system support (former shm fs)
[*] Tmpfs POSIX Access Control Lists
重新編譯內核
$ make zImage
在etc下創建init.d目錄,並在init.d下創建rcS文件
$ mkdir /etc/init.d -p
$ vim /etc/init.d/rcS
rcS文件內容為:
#!/bin/sh
# This is the first script called by init process
/bin/mount -a
為rcS添加可執行許可權:
$ chmod +x init.d/rcS
在etc下添加profile文件
$ vim /etc/profile
文件內容為:
#!/bin/sh
export HOSTNAME=farsight
export USER=root
export HOME=root
#export PS1="\[\u@\h \W\]\$ "
export PS1="[$USER@$HOSTNAME \W]\# "
PATH=/bin:/sbin:/usr/bin:/usr/sbin
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export PATH LD_LIBRARY_PATH
11、 設備文件創建
根文件系統中有一個設備節點是必須的,在dev下創建console節點
$ mknod dev/console c 5 1
重要:新製作的文件系統尺寸若超出8M,刪除不需要的庫文件。
⑶ Linux文件系統特點
Linux之所以能在嵌人式系統領域取得如此輝煌的成績,與其自身的優良特性是分不開的。與其他操作系統相比,Linux具有以下一系列顯著的特點。
1.模塊化程度高
Linux的內核設計非常精巧,分成進程調度、內存管理、進程間通信、虛擬文件系統和網路介面五大部分;其獨特的模塊機制可根據用戶的需要,實時地將某些模塊插入或從內核中移走,使得Linux系統內核可以裁剪得非常小巧,很適合於嵌入式系統的需要。
2.源碼公開
由於Linux系統的開發從一開始就與GNU項目緊密地結合起來,所以它的大多數組成部分都直接來自GNU項目。任何人、任何組織只要遵守GPL條款,就可以自由使用Linux 源代碼,為用戶提供了最大限度的自由度。這一點也正投嵌入式系統所好,因為嵌入式系統應用千差萬別,設計者往往需要針對具體的應用對源碼進行修改和優化,所以是否能獲得源代碼 對於嵌入式系統的開發是至關重要的。加之Linux的軟體資源十分豐富,每種通用程序在Linux上幾乎都可以找到,並且數量還在不斷增加。這一切就使設計者在其基礎之上進行二次開發變得非常容易。另外,由於Linux源代碼公開,也使用戶不用擔心有「後閘」等安全隱患。
同時,源碼開放給各教育機構提供極大的方便,從而也促進了Linux的學習、推廣和應用。
3.廣泛的硬體支持
Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多種體系結構的微處理器。目前已成功地移植到數十種硬體平台,幾乎能運行在所有流行的處理器上。
由於世界范圍內有眾多開發者在為Linux的擴充貢獻力量,所以Linux有著異常豐富的驅動程序資源,支持各種主流硬體設各和最新的硬體技術,甚至可在沒有存儲管理單元MMU 的處理器上運行,這些都進一步促進了Linux在嵌入式系統中的應用。
4.安全性及可靠性好
內核高效穩定。Linux內核的高效和穩定已在各個領域內得到了大量事實的驗證。
Linux中大量網路管理、網路服務等方面的功能,可使用戶很方便地建立高效穩定的防火牆、路由器、工作站、伺服器等。為提高安全性,它還提供了大量的網路管理軟體、網路分析軟體和網路安全軟體等。
5.具有優秀的開發工具
開發嵌入式系統的關鍵是需要有一套完善的開發和調試工具。傳統的嵌入式開發調試工具是在線模擬器(In Circuit Emulator,ICE),它通過取代目標板的微處理器,給目標程序提供一個完整的模擬環境,從而使開發者能非常清楚地了解到程序在目標板上的工作狀態,便於監視和調試程序。在線模擬器的價格非常高,而且只適合做非常底層的調試。如果使用的是嵌人式Linux,一旦軟硬體能支持正常的串口功能,即使不用在線模擬器,也可以很好地進行開發和調試工作,從而節省了一筆不小的開發費用。嵌入式Linux為開發者提供了一套完整的工具鏈(Tool Chain),能夠很方便地實現從操作系統到應用軟體各個級別的調試。
6.有很好的網路支持利文件系統支持
Linux從誕生之日起就與Internet密不可分,支持各種標準的Internet網路協議,並且很容易移植到嵌入式系統當中。目前,Linux幾乎支持所有主流的網路硬體、網路協議和文件系統,因此它是NFS的一個很好的平台。
另一方面,由於Linux有很好的文件系統支持(例如,它支持Ext2、FAT32、romfs等文件系統),是數據各份、同步和復制的良好平台,這些都為開發嵌入式系統應用打下了堅實的基礎。
7.與UNIX完全兼容
目前,在Linux中所包含的工具和實用程序,可以完成UNIX的所有主要功能。
但由於Linux不是為實時而設計的,因而這就成了Linux在實時系統中應用的最大遺憾。不過,目前有眾多的自由軟體愛好者正在為此進行不懈的努力,也取得了諸多成果
⑷ Linux的根分區的文件系統類型是什麼
linux文件系統格式挺復雜多樣的,如ext、ext2、ext3、ext4、jsf、 、xfs、ReiserFS等。
一般情況下,linux根分區文件系統多數用ext3、ext4,安裝時你可以選擇。
⑸ Linux 根文件系統 為什麼 重要
沒有根,來也就沒法向上長成樹;當自然,Linux里的文件系統一般是一棵倒著的樹。
既然根對一棵真樹那麼重要,在Linux里也可以類推了。
根文件系統是其他文件的最終掛載點,沒有根文件系統,就像一棵被砍成七零八落的樹,亂七八糟了。。。
⑹ Linux根文件系統基本包括哪些內容
/bin:存放最常用命令;
/boot:啟動Linux的核心文件;
/dev:設備文件;
/etc:存放各種配置文件;
/home:用戶主目錄;
/lib:系統最基本的動態鏈接共享庫;
/mnt:一般是空的,用來臨時掛載別的文件系統;
/proc:虛擬目錄,是內存的映射;
/sbin:系統管理員命令存放目錄;
/usr:最大的目錄,存許應用程序和文件;
/usr/X11R6:X-Window目錄;
/usr/src:Linux源代碼;
/usr/include:系統頭文件;
/usr/lib:存放常用動態鏈接共享庫、靜態檔案庫;
/usr/bin、/usr/sbin:這是對/bin、/sbin的一個補充;
⑺ Linux根文件系統與Cramfs文件系統是什麼關系
根文件系統其抄實不是文件系統,而是指的數據。你可以認為是你要寫的文字。
cramfs 才是文件系統,而不是數據。你可以認為他是一種紙張。
紙上寫文字。就是這兩個東東的關系。
所以,你可以用不同的紙,信紙、復印紙、手紙都可以寫字(當然手紙寫字有點那啥)。也就是可以用 cramfs、ext2、ext3、yaffs、fat32 什麼的來保存根文件系統數據。
所以,有的時候根文件系統又叫「根分區」這個更容易理解,但根文件系統又不一定是分區,也可以是內存檔,也可以是磁碟光碟U盤,乃至網路數據共享。
⑻ Linux根文件系統詳解
Linux的文件和目錄組織是一個單根的倒置的樹狀結構,文件系統從根目錄下開始,用"/"表示,我們也可稱為根文件系統(rootfs),這樣的根文件系統,有以下特性:
(1) 文件名稱區分大小寫
(2)滾余 以.開頭的文件為隱藏文件
(3) 以/作為路徑分隔符
在Linux各大發行版中它們的文件和目錄組織其實是遵循FHS(Filesystem Hierarchy Standard)標准,FHS定義了系統中每個目錄的用途。FHS有2層規范,第一層里定義了/下的各個目錄應該要放什麼數據。第2層則是針對/usr及/var這2個目錄的子目錄來定義。最新版本FHS2.3,大致內容如下表所示大銷滾:
各大發行版除了遵循基本的LFS之外,也可以追加自己的目錄結構,形成自己的風格;例如:在Ubuntu中網卡配置文件是存放在/etc/network/目錄下,CentOS是在/etc/sysconfig/network-scripts/目錄下。CentOS系統一些重要的目錄及其基本用斗和途如下圖所示:
CentOS7之後bin,lib,lib64,sbin合並到/usr/bin,/usr/lib/,/usr/lib64,/usr/sbin里了。
⑼ linux中/是根目錄,/home是家目錄,二者有什麼區別家目錄是不是在根目錄裡面的
家目錄是在根目錄裡面。
區別:
1、目錄層次不同:
/:根目錄,所有的目錄、文件、設備都在/之下,/就是Linux文件系統的組織者,是最上級的目錄。
/home:如果建悄做立一個用戶,用戶名是"xx",那麼在/home目錄下就有一個對應的/home/xx路徑,用來存放用戶的主目錄。
2、目錄產生的時間不同:
/根目錄作為文件系統的必備,一開始就需要在系統運行時建立,而/home目錄只有建立新用戶的時候才產生。
3、文件許可權啟返衡不同:
Linux作為多用戶系統,對文件許可權有嚴格的管理機制。三種不同類型的用戶可對文件或目錄進行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創建者。所有者能允許同組用戶有權訪問文件,還能將文件的訪問許可權賦予系統中的其他用戶。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的Unix工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和Unix的多用戶、多任務、支持多線程和多CPU的操作系統。伴隨著互世基聯網的發展,Linux得到了來自全世界軟體愛好者、組織、公司的支持。
它除了在伺服器操作系統方面保持著強勁的發展勢頭以外,在個人電腦、嵌入式系統上都有著長足的進步。使用者不僅可以直觀地獲取該操作系統的實現機制,而且可以根據自身的需要來修改完善這個操作系統,使其最大化地適應用戶的需要。
(9)linux文件系統與根文件系統擴展閱讀:
linux優點:
1、Linux由眾多微內核組成,其源代碼完全開源;
2、Linux繼承了Unix的特性,具有非常強大的網路功能,其支持所有的網際網路協議,包括TCP/IPv4、TCP/IPv6和鏈路層拓撲程序等,且可以利用Unix的網路特性開發成出新的協議棧;
3、Linux系統工具鏈完整,簡單操作就可以配置出合適的開發環境,可以簡化開發過程,減少開發中模擬工具的障礙,使系統具有較強的移植性;
參考資料來源:
網路-linux
網路-Linux目錄許可權
⑽ Linux內核中有文件系統模塊, 那它和根文件系統什麼關系哦
linux內核是來linux的真實的操作系統源,所有的操作系統的相關功能都是由用戶介面程序傳遞到內核由內核來完成的。
linux文件系統是指linux操作系統對整個系統中的所有的數據、文件的管理的一種實現方式。
簡單點說:像windows它的文件系統是NTFS文件系統或者FAT文件系統,通過這種方式將windows的各種文件保存在磁碟上,用於存儲和訪問了。
而linux系統則使用ext這種文件系統來實現。