從上篇文章里已經(jīng)了解到随橘,ROM里的出廠代碼決定了:GPU啟動(dòng)之后拭宁,只能去SD卡上的FAT32格式的文件系統(tǒng)里的目錄下姓迅,尋找一個(gè)叫bootcode.bin的啟動(dòng)文件。所以肋乍,將SD卡里肯定有一個(gè)FAT32的分區(qū)鹅颊。這個(gè)分區(qū)里存放啟動(dòng)文件bootcode.bin(階段1)、類似U-Boot的BootLoader文件名叫start.elf(階段2)和Linux內(nèi)核文件kernel.img(階段3)墓造。
Linux啟動(dòng)以后堪伍,肯定要掛載根文件系統(tǒng),那么顯然SD卡里還需要一個(gè)EXT4格式的分區(qū)觅闽,EXT4是Linux御用的文件系統(tǒng)格式帝雇。這樣一來,SD卡就有兩個(gè)分區(qū)蛉拙,一個(gè)FAT分區(qū)放啟動(dòng)文件和內(nèi)核尸闸,一個(gè)EXT4分區(qū)放Linux操作系統(tǒng)文件。
官網(wǎng)上給出的SD卡安裝鏡像文件raspbian-stretch.img孕锄,你可以使用SD卡燒錄軟件etcher或者其他燒錄軟件吮廉,把鏡像燒寫到SD卡里。我們可以用二進(jìn)制編輯軟件winhex打開鏡像看一下里面是啥:
你看畸肆,如文所述宦芦,里面有兩個(gè)分區(qū) 。SD卡最開始預(yù)留了一段4MB的空白轴脐,兩個(gè)分區(qū)之間有820KB的間隔(為了后面對(duì)齊)调卑。
燒寫完鏡像之后,SD卡就變成圖片中的樣子豁辉。SD卡插在電腦上令野,win10系統(tǒng)只能讀到一個(gè)FAT32分區(qū),另一個(gè)分區(qū)顯示磁盤沒有格式化(win系統(tǒng)不認(rèn)EXT4)徽级。
把SD卡插入樹莓派气破,上電就可以看到開機(jī)啟動(dòng)logo了,然后等一會(huì)兒就可以進(jìn)入Raspbian系統(tǒng)餐抢。
另外现使,官方還推薦了另一套看似簡(jiǎn)單的辦法,使用NOOBS工具旷痕。我不推薦使用NOOBS碳锈,因?yàn)樗咽虑榕煤軓?fù)雜。
簡(jiǎn)單說一下:如果你把NOOBS解壓后放在格式化為FAT32的SD卡里欺抗,開機(jī)后NOOBS內(nèi)核會(huì)把SD卡的后續(xù)一部分空間格式化為EXT4售碳,用來掛載NOOBS內(nèi)核的文件系統(tǒng);然后解壓縮os目錄下的boot.tar.xz(內(nèi)核在里面),并把SD卡的再后續(xù)一部分空間格式化為FAT32贸人,然后把boot.tar.xz的內(nèi)容放進(jìn)去间景;再解壓root.tar.xz(操作系統(tǒng)在里面),再把SD卡的再后續(xù)一部分空間格式化為EXT4艺智,然后把root.tar.xz的內(nèi)容放進(jìn)去倘要。這樣子,你的SD卡就有四個(gè)分區(qū):FAT32 --> EXT4 --> FAT32 --> EXT4十拣。把你的SD卡滲透得和篩子一樣封拧,讓你想拿板磚拍人。
八卦時(shí)間到夭问,為什么會(huì)誕生NOOBS這樣一套看起來畫蛇添足的辦法呢泽西?
據(jù)論壇里的水貼說,樹莓派某Boss發(fā)話甲喝,“我們需要更簡(jiǎn)單的辦法尝苇!我們要把系統(tǒng)文件直接復(fù)制粘貼到SD卡里就可以用铛只!要讓最小白的小白也能上手埠胖!” 于是,苦逼的程序員們淳玩,加班加點(diǎn)弄了一套NOOBS直撤。
我的下一篇文章是《(3)移植最常用的BootLoader:U-Boot》。