1. 程式人生 > >【Tiny4412--4】基於busybox的簡單根檔案系統構建

【Tiny4412--4】基於busybox的簡單根檔案系統構建

閱讀說明

該系列文章,基於的平臺均為Tiny4412SDK 1312;4G EMMC; 1G DDR3

帶@lamar: 字首的表示終端裡面的命令
帶@tiny4412: 字首的表示開發板終端裡的命令

準備

  1. tiny4412 開發板
  2. ubuntu 12.04
  3. busybox原始碼包:busybox-1.22.1.tar
  4. SD卡、串列埠線

開始

==>>1. SD卡分割槽和格式化
主要分出兩個分割槽,一個分割槽用來存放核心的zImage映象檔案;另一個分割槽用來存放檔案系統,也就是本文提到的主角。
分割槽建立如下(需要注意自己的SD卡掛到哪一個裝置上):
這裡寫圖片描述


建立完分割槽之後,需要關機重啟,對各個分割槽進行格式化。其中,kernel分割槽格式化城fat32;檔案系統格式化成ext2。使用如下命令即可:
這裡寫圖片描述
==>>2. busybox編譯事項
@lamar: tar xvf busybox-1.22.1.tar
@lamar: cd busybox-1.22.1; make menuconfig
這裡寫圖片描述
1) 配置動態連結庫和設定編譯器字首
進入Busybox Setting選單後進入Build Options選單
這裡寫圖片描述
這裡寫圖片描述
這裡編譯器是arm-linux-gcc,所以字首填arm-linux-,這裡選擇動態連結庫,連結的是arm-linux-gcc的庫,後面要從安裝arm-linux-gcc的地方考出要用到的庫。
這裡寫圖片描述

2) 配置安裝路徑
這裡寫圖片描述
在這裡面,可以選擇相對路徑或者絕對路徑

3) 配置模組命令
進入Linux Module Utilities
這裡寫圖片描述

這邊需要注意,先去掉 Simplified modutils 選項,然後選擇 insmod, rmmod, lsmod, modprobe
這裡寫圖片描述

4) 儲存配置
進入Save Configuration to an Alternate File選單
這裡寫圖片描述
這裡寫圖片描述

最後使用如下命令,進行編譯即可:
@lamar: make -j; make install;

==>>3. 完善基本的配置檔案並拷貝根檔案系統
編譯之後,會在你之前設定的安裝路徑下,生成如下產物:
這裡寫圖片描述


接下來我們,需要配置一些基本的檔案,讓核心能夠正常引導根檔案系統。
1) @lamar: cd ../root_fs; mkdir dev etc sys proc mnt tmp; //建立基本的目錄結構

//建立rcS檔案
2) @lamar: cat > etc/init.d/rcS << EOF (rcS:run command Start)
mount -t ramfs none /dev
mount -t sysfs none /sys
mount -t proc none /proc
mount -t tmpfs none /tmp
/sbin/mdev -s
EOF

3) @lamar: mknod dev/console c 5 1 //設定終端結點

//建立inittab檔案
4) @lamar: cat > etc/inittab << EOF
::sysinit:/etc/init.d/rcS
ttySAC0::askfirst:-/bin/sh #/bin/sh前面的-表示sh會預設載入/etc/profile
EOF

//建立profile檔案
5) @lamar: cat > etc/profile << EOF
export PS1=”[[email protected] \W]# ” #設定命令提示前面的那段文字
EOF

6) @lamar: mkdir lib; cp /toolschain/4.5.1/arm-none-linux-gnueabi/lib/* lib //拷貝支援busybox的編譯庫,一般就是本地的編譯lib庫
7) @lamar: chmod 777 -R root_fs/ //修改檔案許可權
8) @lamar: mount /dev/sdb3 /mnt //掛載需要存放根檔案系統的SD卡分割槽
9) @lamar: cp -rf root_fs/* /mnt //檔案拷貝
10) @lamar: umount /mnt //解除安裝

==>>4. 配置bootargs環境變數
做完了以上所有的步驟,現在我們就可以在板子上進行驗證了。首先我們需要配置bootargs,進入uboot,配置如下:
@tiny4412: set bootargs “root=/dev/mmcblk0p3 console=ttySAC0,115200 lcd=S70” //mmcblk0p3表示的mmc0的第三塊分割槽,這一個根據你之前的分割槽情況來決定。
最後的效果如下(perfect~):
這裡寫圖片描述
在此之後,我們就可以在此基礎上,最一些有針對性的功能開發。

補充

==>>核心映象的拷貝和設定開機bootcmd
1) 如上,已經對SD卡進行了分割槽和格式化(注意核心的分割槽是格式化成mkfs.vfat); 同樣的,我們只需要掛載裝置,然後,拷貝核心到掛載的目錄即可。
2)配置bootcmd
@tiny4412: set bootcmd “fatload mmc 0:2 0x40008000 zImage;bootm 0x40008000” //mmc 0:2 表示mmc0上第二塊分割槽
@tiny4412: save
通過以上配置,就可以實現每次開機之後,系統自動去SD卡里啟動核心。改善了DNW每次只能啟動一次核心的問題。

相關推薦

Tiny4412--4基於busybox簡單檔案系統構建

閱讀說明 該系列文章,基於的平臺均為Tiny4412SDK 1312;4G EMMC; 1G DDR3 帶@lamar: 字首的表示終端裡面的命令 帶@tiny4412: 字首的表示開發板終端裡的命令 準備 tiny4412 開發板 ubunt

tiny4412 busybox製作檔案系統rootfs nfs 掛載 ubuntu 14.04

首先得要有製作好的uboot和linux核心映象zImage,先燒錄到sd卡里,這個是已經做好了的工作。 一,ubuntu上先設定好nfs服務 1.新建一個要掛載的檔案 [email protected]:~/share$ pwd /home/liudijian

親測centos7下掛載ntfs檔案系統型別的行動硬碟

【親測】centos7下掛載ntfs檔案系統型別的行動硬碟 【參考】 【流程】 2.解壓,配置,編譯,安裝 $tar zxvf ntfs-3g_ntfsprogs-2017.3.23.tgz $ cdntfs-3g_ntfsprogs-2017.3.23/

《19.檔案系統構建實驗及過程詳解》

《19.根檔案系統構建實驗及過程詳解》 第一部分、章節目錄 2.19.1.根檔案系統的構建路線 2.19.2.busybox的移植實戰 2.19.3.inittab詳解 2.19.4.busybox原始碼分析1 2.19.5.busybox原始碼分析2 2.19.6.rcS檔案介紹1 2

大戰設計模式4—— 簡單工廠模式

ref ins 復雜 nsa sta 對象比較 cto cnblogs 配置文件 簡單工廠模式(Simple Factory) 設計模式使用的例子 https://github.com/LinkinStars/DesignPatternsAllExample 一、

SVM理論到實踐4基於OpenCv中的SVM的手寫體數字識別

//由於本人每天時間非常緊張,所以細節寫的不詳細,部落格僅供各位參考,裡面的程式碼都是執行過的,直接可以執行 本章的學習目標:      1)手寫體數字識別資料庫MNIST      2)基於SVM訓練的具體步驟   1)手寫體數字識別資料庫MNIST MNIST(Mixe

ADO.NET1、簡單配置與使用

字符串 文件中 .exe 增加 獲取字符串 pass 數據庫連接 rect manage 1、一些基礎的知識點 ExecuteReader(); //返回查詢到的數據,一次一行,用於 selectExecuteNonQuery(); //返回影響的行數,用於 delete,

MySQL高可用基於MHA架構的MySQL高可用故障自動切換架構

bin candidate nlog repo sage $1 內容 data from 基於MHA架構的MySQL高可用切換架構 環境: ? CentOS7+MySQL 5.7 + GTID 業務系統:mainBusiness ? nod

學習筆記初識FreeMarker簡單使用

als 大小 宋體 屬性 list mage equal port template 楔子:    之前在和同事討論,同事說“jsp技術太古老了,有幾種頁面技術代替,比如FreeMarker、Velocity、thymeleaf,jsp快廢棄了……”雲雲。我這一聽有點心虛…

laravel5.4DB::table的操作

3.2 數組 clas ice enc spa and echo 簡單 基於laravel5.4版本的查詢構造器的簡單幾個操作:(相對於TP3.2版本) //獲取指定多行多列,二維,,對象 【select】 $names = ‘‘;

laravel5.4hasOne和belongsTo的區別

關聯關系 cti col body header func 就是 pro 模型 1、從字面理解:假如A比B大,那麽A hasOne B; B belongsTo A; 2、個人總結: 3、從代碼角度: 主要是看你是在哪一個model(模型)中編寫這個關聯關系,父關

laravel5.4安裝predis

echo conn 所有 usr ech redis src 返回 使用 1、服務器先安裝redis-server,這是毋庸置疑的!!! 2、服務器開啟redis-server,配置相關參數 3、laravel執行 : $ yourPhpPath composer.pha

R統計基於相似系數的聚類分析

ant 建模 sub plc str 選擇 pre light 均值 題目: 對48名應聘者數據的自變量作聚類分析,選擇變量的相關系數作為變量間的相似系數(cij),距離定義為dij=1-cij。分別用最長距離法、均值法、重心法和Ward法作聚類分析,並畫出相應的譜系圖。

UOJ#52. UR #4元旦激光炮(交互)

一段 height algo 成績 owb width assert using space 題意 給出三個已經排好序的數組$a, b, c$ 在$100$次詢問內找出第$k$小的元素 Sol 一種很顯然的$log^2n$的做法:首先在$a$中二分,然後再$b,c$

python練習基於socket的FTP程序(僅支持單用戶)

查看 切換目錄 md5加密 查看當前目錄 傳輸 conf 存儲 settings ces 程序功能: 本程序模擬實現了一個FTP程序: 1.程序分為客戶端和服務端 2.用戶可以登錄和註冊賬號,登錄密碼有MD5加密 3.每個用戶有自己的家目錄 ,且只能訪問自己的家目錄 4.用

資訊科技2002.04基於區域性分割的數字影象處理

本文為澳大利亞莫納什大學(作者:Torsten Seemann)的博士論文,共300頁。 本文提出了一種實現“區域性分割”的低層次影象處理的統一思想。區域性分割提供了一種檢查並理解現有演算法的方式,以及建立新演算法的範例。區域性分割可以應用於重要的影象處理任務。利用傳統的強度閾值分割技

USACO1.4解題報告

前言 本章主要考的是貪心和一些比較麻煩的模擬。難度相比上一章有很明顯的提升。但是稍微想一下還是可以想出來的(第五題除外,看了一下題解的思路)。 USACO:http://train.usaco.org 1.4.2.Mixing Milk 思路: 很明顯是一道貪心基礎

演算法學習基於“平均”的隨機分配演算法(貪婪,回溯),以按平均工作量隨機分配單位為例

一、背景介紹   在工作中,遇到一個需求:將 N 個單位隨機分配給 n 個人,其中每個單位有對應的工作量,分配時要儘量按工作量平均分給 n 個人,且人員的所屬單位不能包括在被分配的單位中(N >= n)。例如:有三個部門分給兩個人([A]屬於部門2和[B]屬於部門3),部門1的

Android架構基於MVP模式的Retrofit2+RXjava封裝之常見問題(四)

###先回顧下之前的 【Android架構】基於MVP模式的Retrofit2+RXjava封裝(一) 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案下載(二) 【Android架構】基於MVP模式的Retrofit2+RXjava封裝之檔案上傳(三)

Android架構基於MVP模式的Retrofit2+RXjava封裝(一)

#最近有個新專案要做,搭建框架的時候,順便梳理了下MVP模式,特此記錄,歡迎大家指正。 專案地址GitHub 一 、首先是依賴 compile 'com.google.code.gson:gson:2.8.0' compile 'com.squareup.ok