【Tiny4412--4】基於busybox的簡單根檔案系統構建
閱讀說明
該系列文章,基於的平臺均為Tiny4412SDK 1312;4G EMMC; 1G DDR3
帶@lamar: 字首的表示終端裡面的命令 帶@tiny4412: 字首的表示開發板終端裡的命令 |
準備
- tiny4412 開發板
- ubuntu 12.04
- busybox原始碼包:busybox-1.22.1.tar
- 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.NET】1、簡單配置與使用
字符串 文件中 .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.4】DB::table的操作
3.2 數組 clas ice enc spa and echo 簡單 基於laravel5.4版本的查詢構造器的簡單幾個操作:(相對於TP3.2版本) //獲取指定多行多列,二維,,對象 【select】 $names = ‘‘;
【laravel5.4】hasOne和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