拋棄SD卡,使用U盤啟動樹梅派3

樹莓派3之前的版本其系統(tǒng)一般是安裝在SD卡上,但是SD卡比較脆弱,如果頻繁的讀寫數(shù)據(jù),會導(dǎo)致SD卡損壞。SD卡的讀寫速度也比U盤慢。之前哪怕是系統(tǒng)裝在u盤里面也需要SD卡進行引導(dǎo),但是樹梅派3開始,支持從USB進行引導(dǎo)了,現(xiàn)在我們可以徹底拋棄SD卡,將樹莓派系統(tǒng)安裝在U盤中,利用更加強壯、速度更快的U盤啟動樹莓派,則可以解決使用SD卡遇到的問題。

準(zhǔn)備

  1. 樹梅派3
  2. HDMI 顯示屏
  3. SD卡+U盤

安裝系統(tǒng)

首先在SD卡上安裝系統(tǒng),當(dāng)前最新的版本是Jessie,下載地址

按照官方的安裝文檔,將系統(tǒng)燒進SD卡即可。燒完之后注意(第一坑):新版本的系統(tǒng)默認是關(guān)閉了ssh服務(wù)的,你需要在sd卡下新建一個名稱為ssh的文件夾,這樣才能通過ssh遠程登錄。

升級固件

接入網(wǎng)線并連接HDMI顯示屏后,樹梅派在啟動時會把ip打印在屏幕上,通過ssh進行連接,默認用戶是pi,密碼是raspberry
如果網(wǎng)絡(luò)有問題可以先更換軟件源。

sudo vi /etc/apt/sources.list

注釋現(xiàn)有的軟件源,并復(fù)制以下代碼

deb http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ jessie main non-free contrib

接下來執(zhí)行下面的命令

sudo apt-get update
sudo apt-get install rpi-update
sudo BRANCH=next rpi-update

上面的命令會自動更新/boot目錄下默認的start.elf和bootcode.bin文件。接下來開啟USB啟動模式。

echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt

重啟樹梅派,并查看OTP寄存器的信息:

vcgencmd otp_dump | grep 17

輸出信息應(yīng)該為 17:3020000a或者大于他,我升級前的OTP為17:1020000a。
現(xiàn)在樹莓派已經(jīng)開啟USB模式,你可以把/boot/config.txt文件中的program_usb_boot_mode=1一行移除掉。

系統(tǒng)安裝到U盤

把U盤插入到樹莓派,使用如下命令查看設(shè)備名:

lsblk
image.png

上圖中,sda設(shè)備是U盤,分區(qū)sda1。依次執(zhí)行下面的命令,對磁盤進行分區(qū),創(chuàng)建一個100M的FAT32分區(qū)和一個Linux分區(qū)。U盤數(shù)據(jù)會丟失,注意備份。

sudo umount /dev/sda
sudo parted /dev/sda
(parted) # 進入到parted命令行,help查看幫助
(parted)  mktable msdos   # 分區(qū)表
# 如果有警告信息則輸入yes 忽略
(parted) mkpart primary fat32 0% 100M   # 分區(qū)
(parted) mkpart primary ext4 100M 100%
(parted) print

分區(qū)完成之后,輸入Ctrl+C 退出。
創(chuàng)建boot文件系統(tǒng)和root文件系統(tǒng):

sudo mkfs.vfat -n BOOT -F 32 /dev/sda1
sudo mkfs.ext4 /dev/sda2

把當(dāng)前Raspbian系統(tǒng)拷貝到USB設(shè)備:

sudo mkdir /mnt/target
sudo mount /dev/sda2 /mnt/target/  # 掛載分區(qū)

sudo mkdir /mnt/target/boot
sudo mount /dev/sda1 /mnt/target/boot/  # 掛載分區(qū)

sudo apt-get update
sudo apt-get install rsync   # rsync命令用于同步數(shù)據(jù)
sudo rsync -ax --progress / /boot /mnt/target   # 把系統(tǒng)拷貝到U盤

刷新SSH密鑰:

cd /mnt/target
sudo mount --bind /dev dev
sudo mount --bind /sys sys
sudo mount --bind /proc proc
sudo chroot /mnt/target
rm /etc/ssh/ssh_host*
dpkg-reconfigure openssh-server
exit
sudo umount dev
sudo umount sys
sudo umount proc

編輯cmdline.txt文件及fstab文件(注意:第二坑)

#很多教程里面都會用如下命令進行兩個文件的更改:
sudo sed -i "s,root=/dev/mmcblk0p2,root=/dev/sda2," /mnt/target/boot/cmdline.txt
sudo sed -i "s,/dev/mmcblk0p,/dev/sda," /mnt/target/etc/fstab

新版本cmdline.txt內(nèi)為root=PARTUUID=xxxxx-02 fstab內(nèi)也為PARTUUID=xxxxx-01/02,所以我們需要更改該PARTUUID。
執(zhí)行命令:

blkid

會得到boot所對應(yīng)的PARTUUID,將該uuid復(fù)制到cmdline.txt 覆蓋本來的uuid,然后更改fstab內(nèi)的PARTUUID即可?;蛘邔mdline.txt和fstab都改為/dev/sda形式(未嘗試)。
后面會將PARTUUID部分代碼補上。

卸載掛載的文件系統(tǒng),然后關(guān)閉樹莓派:

cd ~
sudo umount /mnt/target/boot
sudo umount /mnt/target
sudo poweroff   # poweroff是新命令,以前是用shutdown

從U盤啟動

關(guān)閉樹莓派之后,斷掉電源->拔出SD卡->從U盤啟動樹莓派。

參考資料:
http://blog.topspeedsnail.com/archives/8814

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容