在做的過程中,發現通過普通的make_ext4fs制作的文件系統鏡像燒寫后無法成功啟動系統,幾番嘗試之后,使用如下的方式能夠成功制作文件系統并且成功啟動android系統。這里只介紹如何制作適用于SD卡上的文件系統,不介紹如何燒寫。
文件系統制作
編譯完成進入"out/target/product/fs210"目錄,可以看到有下圖所示的內容。
$ cd out/target/product/fs210
用戶在該目錄下看到的system.img、userdata.img、ramdisk-uboot.img就是一般android系統所需要的鏡像,但是本文檔針對的是SD卡啟動android,所以需要重新制作文件系統的鏡像,制作過程如下。
NOTE:建議用戶在該目錄下進行操作!
使用dd if=/dev/zero of=system.img bs=512K count=400制作一個img文件,如下圖:
使用linux系統工具 mkfs.ext4 –F system.img,如下圖:
創建一個文件夾mkdir mnt,建議叫做mnt,如下圖:
將img文件掛載到mnt目錄下sudo mount system.img mnt/ //mount需要使用超級用戶權限sudo
將下圖中system文件夾內的所有文件復制到mnt文件夾下cp system/* mnt/ -a
改變mnt文件夾下所有文件的權限 sudo chmod 777 mnt/* -R //必須做,否則系統有可能無法啟動
到此system.img已經成功做好,做完之后,需要將之前掛載的鏡像目錄卸載,使用如下命令
下面開始制作userdata.img,過程和system.img基本一致。
使用dd if=/dev/zero of=userdata.img bs=512K count=400制作一個img文件,如下圖:
NOTE:該鏡像文件用戶可以根據自己的需要改變大小,但是大不能夠超過1024M。
使用linux系統工具 mkfs.ext4 –F userdata.img,如下圖:
mnt文件夾已經創建過,跳過
將img文件掛載到mnt目錄下sudo mount userdata.img mnt/ //mount需要使用超級用戶權限sudo
將下圖中system文件夾內的所有文件復制到mnt文件夾下cp data/* mnt/ -a
后一步,將掛載到mnt目錄下的userdata.img卸載 sudo umount mnt
我們再次ls查看目錄的所有文件,如下圖:
圖中紅色框內的鏡像文件就是我們需要燒寫到SD卡的鏡像,將這些鏡像拷貝到虛擬機的共享目錄下。