1. 程式人生 > 實用技巧 >龍芯LS1A500根檔案系統構建

龍芯LS1A500根檔案系統構建

Busybox用於構建最簡根檔案系統是非常方便的,我們只需要更改或配置其中幾個簡單的選項便可以配置好根檔案系統。如今嵌入式裝置的板載資源已經得到了擴充套件,我們已經不必再像從前一樣的仔細配置各個選項以裁剪根檔案系統的大小,這裡我將演示一遍如何快速的構建起一個可以使用的根檔案系統,至於對系統的具體裁剪,可以按照自己的需求進行這裡便不再講解。

  板子:LS1A500(龍芯)
  板子核心:Linux4.10
  編譯系統:ubuntu18.04伺服器版
  Busybox:1.30
  1. 下載 busybox
wget httpp://busybox.net/downloads/busybox−1.18.5.tar.bz2 
tar jxvf busybox−1.30.0.tar.bz2 
cd busybox−1.30.0
  1. 配置 busybox
make menuconfig 
Busybox Se ngs −−−> 
Build Op ons −−−> 
[*] Build BusyBox as a static binary (no shared libs) 
  (mipsel‐linux‐) Cross Compiler prefix 

在我選擇的Busybox中預設選擇了對大於2GB檔案的支援:

[*]Surport files > 2GB

但是在老版本中並沒有包含這樣的支援:可以如下選中:

[*] Build with Large File Support (for accessing files > 2 GB) 

如果沒有將交叉編譯工具新增到環境變數 mipsel‐linux‐前需要新增絕對路徑。

  1. 編譯安裝 busbox
make 
make install 

這裡會自動的把busybox編譯出來的目標檔案和目錄安裝到原始碼目錄下的_install目錄中。

cd _install 
mkdir dev 
cp −a /dev/null dev 
cp −a /dev/console dev 
cp −a /dev/ y* dev 
mkdir etc 
mkdir etc/init.d
cp ../examples/inittab etc 

這裡的作用是構建Linux系統執行時的檔案系統目錄框架。關於Linux最簡檔案系統所需的目錄,讀者可以自行探究一下_

  1. 建立init程序
#!/bin/sh

echo "mount proc and sys...."
mount -t proc proc proc/
mount -t sysfs sys sys/
mount n /dev -t devtmpfs
exec 2>/dev/console 1>/dev/console </dev/console
echo "mount sys and proc end...."

if [ -e /sbin/init ];then
      exec /sbin/init
elif [ -e /lib/systemd/systemd ];then
      exec /lib/systemd/systemd
else
      exec /bin/sh
fi

這裡最重要的部分是exec /sbin/init,也就是執行init程序。如果沒有制定一個init程序執行,那麼系統最終啟動時會爆出panic的錯誤!我們在該檔案中一定要指定自己需要執行的init程序。

  1. 系統配置[系統啟動項]
#!/bin/sh

# Start all init scripts in /etc/init.d
# executing them in numerical order.
#
for i in /etc/init.d/S??* ;do

     # Ignore dangling symlinks (if any).
     [ ! -f "$i" ] && continue

     case "$i" in
	*.sh)
	    # Source shell script for speed.
	    (
		trap - INT QUIT TSTP
		set start
		. $i
	    )
	    ;;
	*)
	    # No sh extension, so fork subprocess.
	    $i start
	    ;;
    esac
done

這裡主要是系統啟動項的配置,我們可以在/etc/init.d/中發現許多SXX.sh(sh可以沒有)的檔案,這裡的S代表start--啟動配置,XX代表連個數字,代表任意的字元。舉個檔案的例子:S01telnet表示配置telnet的檔案,該目錄會以兩位的數字作為優先順序,依次取相應的檔案執行從而完成系統的初始化。