uboot載入核心時會從sd中讀取核心映象,和老版本的uboot不同,新版本的uboot支援檔案系統,直接將核心映象複製到sd卡中,然後uboot啟動時就會訪問sd卡的檔案系統,找到核心映象檔案並載入。uboot支援什麼檔案系統是是由環境變數loaduimage
決定的,這裡我的環境變數為:
loaduimage=ext4load mmc $
:$ 0x30007fc0 uimage
意思很明確,就是使用ext4格式訪問sd卡指定分割槽的檔案系統,然後從根目錄找到uimage
並載入到0x30007fc0
這個位址。
那麼我需要將sd卡格式化為ext4檔案系統並掛載到作業系統中。
首先對sd卡分割槽,使用如下命令,其中sdx為sd卡的裝置檔案:
$ sudo
fdisk /dev/sdx
進入fdisk命令列後,使用p
檢視所有分割槽:
command (m for help): p
disk /dev/sdc: 7.6 gib, 8179941376 bytes, 15976448 sectors
units: sectors of 1 * 512 = 512 bytes
sector size (logical/physical): 512 bytes / 512 bytes
i/o size (minimum/optimal): 512 bytes / 512 bytes
disklabel type: dos
disk identifier: 0x726119ce
device boot start end sectors size id type
/dev/sdc1 20480 15976447 15955968 7.6g 83 linux
這裡有乙個我已經分好的區域,使用d
刪除這個分割槽:
command (m for help): d
selected partition 1
partition 1 has been deleted.
然後輸入指令n
進行重新分割槽,然後輸入p
表示使用主分割槽,輸入1
表示使用碟符1,然後輸入開始扇區,我這裡因為要為uboot**留乙個空間,所以指定開始扇區是20480
,也就是10mb的位置,結束扇區直接回車選擇預設:
command (m for help): n
partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
select (default p): p
partition number (1-4, default 1): 1
first sector (2048-15976447, default 2048): 20480
last sector, +sectors or +size
(20480-15976447, default 15976447):
created a new partition 1 of type
'linux' and of size 7.6 gib.
partition #1 contains a ext4 signature.
do you want to remove the signature? [y]es/[n]o: y
the signature will be removed by a write command.
此時更改只是在記憶體中,使用w
指令執行更改,此時sd卡才真正被分割槽,分割槽後使用:
$ ls /dev/sd*
可以看到多了乙個sdx1
檔案,這個就是剛才建立的分割槽。
接下來開始格式化,使用如下指令,sdx替換為對應的碟符:
$ sudo mke2fs -t ext4 -o /dev/sdx1
mke2fs 1.43.4 (31-jan-2017)
建立含有 1994496 個塊(每塊 4k)和 498736 個inode的檔案系統
檔案系統uuid:3f210d72-31d6-4754-bdee-4b4e4134588d
超級塊的備份儲存於下列塊:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
正在分配組表: 完成
正在寫入inode表: 完成
寫入超級塊和檔案系統賬戶統計資訊: 已完成
格式化完成後就可以掛載了,使用如下指令:
sudo
mount /dev/sdx1
注意:成功掛載後可以在檔案資源管理器中看到sd卡。掛載時如顯示以下錯誤:
mount: wrong fs type, bad option, bad superblock on /dev/sdd1,
missing codepage or helper program, or other error
in some cases useful info is found in syslog - try
dmesg | tail or so.
建議更換sd卡,雖然在格式化時加
-o ^has_journal
選項,電腦能夠成功掛載,但是uboot卻不能正常讀取。
實際上是不需要手動掛載的,當再次插入sd卡後,系統識別到ext4檔案系統會自動掛載到/media//***
目錄下。
Linux 下將sd格式化成ext2格式並掛載
sd卡在windows下格式化,只能格式化為fat檔案系統格式的,但是fat檔案系統在linux下不支援軟鏈結。所以又必要將其格式化成linux下的檔案系統格式,例如ext2。使用嵌入式linux中自帶的工具命令mkfs.ext2。root target mkfs.ext2 dev mmcblk0 ...
如何製作Ext4格式映象檔案
如果像要把已經有的檔案目錄製作為ext4映象,像使用壓縮包工具壓縮檔案目錄為zip一下。直接使用 mkfs.ext4會導致不知道該用什麼引數,這裡有乙個例子create file image container。那麼就來找乙個靠山吧,現在android中的system分割槽一般是ext4格式的,那麼...
Linux 下將sd格式化成ext2並掛載
sd卡在windows下格式化,只能格式化為fat檔案系統格式的,但是fat檔案系統在linux下不支援軟鏈結。所以又必要將其格式化成linux下的檔案系統格式,例如ext2。使用嵌入式linux中自帶的工具命令mkfs.ext2。root target mkfs.ext2 dev mmcblk0 ...