當前位置:股票大全官網 - 基金投資 - 如何制作Linux根文件系統

如何制作Linux根文件系統

根文件系統壹直是所有類Unix操作系統的重要組成部分,也可以認為是嵌入式Linux系統區別於其他傳統嵌入式操作系統的重要特征。它給Linux帶來了許多強大而靈活的功能,但也帶來了壹些復雜性。我們需要清楚地了解根文件系統的基本結構,仔細選擇所需的系統庫、內核模塊和應用程序,並配置各種初始化腳本文件,以及選擇合適的文件系統類型並將其放在實際存儲設備的適當位置。

Linux的根文件系統以樹形結構組織,包括內核和系統管理所需的各種文件和程序。壹般來說,根目錄“/”下的頂級目錄都有壹些固定的名稱和用途。

下面列出了Linux根文件系統中常見的目錄結構:

/bin存儲二進制可執行命令的目錄。

該目錄包含所有用戶都可以使用的基本命令。這些命令可以在掛載其他文件系統之前使用,因此/bin目錄必須與根文件系統在同壹個分區中。

/bin目錄下常用的命令有:cat、chgrp、chmod、CP、ls、sh、kill、mount、umount、mkdir、mknod、[、test和其他"["命令其實就是測試命令。當我們使用Busybox制作根文件系統時,在生成的bin目錄中可以看到壹些可執行文件,也就是壹些可用的命令。

存儲設備文件的/dev目錄。

設備文件存儲在這個目錄中,這是Linux中特有的文件類型。在Linux系統下,各種設備都是以文件的形式訪問的,即通過讀寫壹個設備文件來操作壹個特定的硬件。比如串口0可以通過“dev/ttySAC0”文件操作,MTD設備的第二個分區可以通過“/dev/mtdblock1”訪問。

/etc存儲系統管理和配置文件的目錄。

各種配置文件都存儲在這個目錄中。對於PC上的Linux系統,/etc目錄下有很多文件和目錄。這些目錄文件是可選的,它們取決於系統中的應用程序以及這些程序是否需要配置文件。在嵌入式系統中,這些內容可以大大減少。

/home用戶的主目錄,比如用戶的主目錄是/home/user,可以用~user來表示。

用戶目錄,這是可選的。對於每壹個普通用戶來說,在/home目錄下都有壹個以用戶名命名的子目錄,存放用戶相關的配置文件。

/lib是動態鏈接* * *享庫的目錄。

這個目錄存儲* * *共享庫和可加載(驅動),* * *共享庫用於啟動系統。運行根文件系統中的可執行程序,比如/bin /sbin目錄中的程序。

/sbin是存儲系統管理員使用的hypervisor的目錄。

該目錄存儲系統命令,即只能由管理員使用的命令。系統命令也可以存儲在/usr/sbin、/usr/local/sbin目錄中。/sbin目錄存儲基本的系統命令,這些命令用於啟動系統和修復系統。與/bin目錄類似,/sbin可以在掛載其他文件系統之前使用,因此/sbin目錄必須與根文件系統位於同壹位置。

/sbin目錄下的常用命令有:shutdown reboot fdisk fsck等。本地用戶安裝的系統命令放在/usr/local/sbin目錄中。

/tmp通用的臨時文件存儲點

用於存儲臨時文件,通常是壹個空目錄,位於某些需要生成臨時文件的程序所使用的/tmp目錄下,所以/tmp目錄必須存在並且可以訪問。

/root系統管理員的主目錄

root用戶的目錄,對應的,普通用戶的目錄是/home下的子目錄。

/mnt system為用戶臨時掛載其他文件系統提供此目錄。

用來臨時掛載文件系統的掛載點通常是壹個空的目錄,也可以在裏面創建壹個空的子目錄,比如/mnt/cdram /mnt/hda1。用於臨時安裝CD和硬盤。

/proc虛擬文件系統,可以直接訪問它來獲取系統信息。

這是壹個空目錄,通常用作proc文件系統的掛載點。proc文件系統是壹個虛擬文件系統,它沒有實際的存儲設備。裏面的目錄和文件是內核臨時生成的,用來指示系統的運行狀態,也可以操作文件控制系統。

/usr是最大的目錄,幾乎所有要用的應用程序和文件都在這個目錄裏。

/usr目錄的內容可以存儲在另壹個分區中,然後在系統啟動後鏈接到根文件系統中的/usr目錄。其中存儲的程序和數據是* * *共享的,只讀的,說明/usr目錄中的內容可以在多臺主機之間共享,這主要是符合FHS標準的。/usr中的文件應該是只讀的,與其他主機相關的變量文件應該保存在其他目錄中,比如/var。/usr目錄可以在嵌入式系統中細化。

/var壹些大文件的溢出區。

與/usr目錄相反,/var目錄存儲可變數據,例如假脫機目錄(郵件、新聞)、日誌文件和臨時文件。

-

壹、移植環境:

1,Ubuntu 10.10分配

2、優步. bin

3.目標機器:FS_S5PC100平臺。

4.交叉編譯器ARM-Cortex _ A8-Linux-GNUEABI-GCC

-

二、移植步驟

1,源代碼下載

我們選擇的版本是busybox-1.17.3 . tar . bz2 .下載路徑是:

/下載/

2.解壓縮源代碼

$ tar xvf busybox-1.17.3 . tar . bz2

3.輸入源目錄

$ cd busybox-1.17.3

4.配置源代碼

$ make menuconfig

Busybox設置-& gt;

構建選項-& gt;

[*]將BusyBox構建為靜態二進制文件(沒有共享庫)

[ ]強制NOMMU構建

[ ]支持大文件構建(用於訪問文件& gt2 GB)

(arm-cortex_a8-linux-gnueabi-)交叉編譯器前綴

()附加CFLAGS

5.編制

$ make

6.裝置

busybox的默認安裝路徑是源目錄中的_install。

$進行安裝

7.輸入安裝目錄。

$ cd _install

$ ls

bin linuxrc sbin usr

8.創建其他所需的目錄。

$ mkdir dev等管理進程變量tmp系統根

9.添加庫

在_install目錄下創建壹個lib文件夾,將工具鏈中的庫復制到lib目錄下。

$ mkdir庫

$ CP/home/Linux/x-tools/arm-cortex _ A8-Linux-gnueabi/arm-cortex _ A8-Linux-gnueabi/lib/*。/lib/

刪除所有目錄,。o文件和。a文件下的lib和slim down庫,以減少文件系統的大小。

$ rm *。o *。a

$ arm-cortex _ A8-Linux-gnueabi-strip lib/*

10,添加系統啟動文件

在etc下添加文件inittab。

$ vim /etc/inittab

該文件的內容如下:

#除了在單用戶模式下啟動之外,它首先運行。

* sysinit:/etc/init . d/rcS

所選tty上的# /bin/sh調用

#在控制臺上啟動壹個“ask first”shell(不管是什麽)

* ask first:-/bin/sh

#重新啟動初始化進程時要做的事情

* restart:/sbin/init

#重啟前要做的事情

* ctrl altdel:/sbin/reboot

在etc下添加文件fstab。

$ vim /etc/fstab

該文件的內容如下:

#設備掛載點類型選項轉儲fsck順序

過程/過程過程默認值0 0

tmpfs /tmp tmpfs默認值0 0

sysfs /sys sysfs默認值0 0

tmpfs /dev tmpfs默認值0 0

這裏有三個文件系統:proc、sysfs和tmpfs。在內核中,默認情況下proc和sysfs都受支持,但tmpfs不受支持。我們需要添加tmpfs支持。

修改內核配置:

$ make menuconfigFile系統-& gt;

偽文件系統-& gt;

[*]虛擬內存文件系統支持(以前的shm fs)

[*] Tmpfs POSIX訪問控制列表

重新編譯內核

$ make zImage

在etc下創建init.d目錄,在init.d下創建rcS文件。

$ mkdir /etc/init.d -p

$ vim /etc/init.d/rcS

rcS文件的內容是:

#!/bin/sh

#這是init進程調用的第壹個腳本

/bin/mount -a

為rcS添加可執行權限:

$ chmod +x init.d/rcS

在etc下添加配置文件。

$ vim /etc/profile

文件內容是:

#!/bin/sh

導出主機名=遠視

導出用戶=root

導出主頁=根

# export PS 1 = " \[\ u @ \ h \ W \]\ $ "

export PS 1 = "[$ USER @ $ HOSTNAME \ W]\ # "

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

LD _ LIBRARY _ PATH =/lib:/usr/lib:$ LD _ LIBRARY _ PATH

導出路徑LD_LIBRARY_PATH

11,設備文件創建

根文件系統中必須有壹個設備節點。在dev下創建壹個控制臺節點。

$ mknod開發/控制臺c 5 1

重要提示:如果新創建的文件系統的大小超過8M,請刪除不必要的庫文件。