樹莓派4可以不用SD卡啟動?

2020-12-14 電子工程專輯

樹莓派4可以不用SD卡啟動?


  • 1.說明

  • 2.什麼是PXE啟動

  • 3.樹莓派4設置PXE啟動

  • 4.關鍵配置參數說明

  • 5.配置TFTP伺服器

  • 6.網絡文件系統

    • 6.1 主機上設置NFS文件系統

    • 6.2 樹莓派上設置啟動NFS的rootfs腳本


1.說明

Raspberry Pi 4具有一個SPI連接的EEPROM(4MBits / 512KB),其中包含用於啟動系統的代碼,並替換了先前在SD卡的啟動分區中找到的bootcode.bin。請注意,如果Pi 4的SD卡的啟動分區中存在bootcode.bin,則將其忽略。

也就是說,樹莓派4的啟動方式可以從SPI的EEPROM啟動了。關於為什麼需要這個EEPROM官方的說法是:

1.與以前的Raspberry Pi型號相比,Raspberry Pi 4的啟動過程和SDRAM的設置要複雜得多,因此,永久包含在SoC ROM中的代碼固有的風險更大。

2.USB已移至PCIe總線,千兆位乙太網驅動程序與以前的型號完全不同,因此,再次將其永久固定在SoC的ROM中是不可行的。

3.小容量SPI EEPROM允許在現場修復錯誤並在啟動後添加功能。

4.本地可修改狀態意味著Raspberry Pi 4上的網絡或USB大容量存儲啟動不需要OTP引導模式設置。Pi4上沒有用戶可修改的OTP引導模式位。

本文就講述一下如何設置樹莓派啟動,而改為網絡啟動的方式(TFTP),目前樹莓派U盤啟動方式還不完善。雖然不用SD卡啟動,但是操作EEPROM的時候,還是要藉助SD卡進行啟動Linux,然後將啟動固件寫入到eeprom中。下面來詳細說明一下這個過程。

2.什麼是PXE啟動

PXE是用來通過網絡引導系統的。也就是系統通過網絡進行啟動,這樣就不用硬碟,從伺服器中獲取系統鏡像。

當安裝大量設備系統的時候,如果有了PXE啟動,那麼就可以大大加快系統的安裝的速度。

上面就是基本的一個PXE啟動的流程。

3.樹莓派4設置PXE啟動

樹莓派4上有EEPROM,可以將啟動固件放到EEPROM中。但是不幸的是,操作樹莓派自帶的EEPROM需要樹莓派的系統,也就是必須最開始的時候,需要製作啟動樹莓派4的SD卡鏡像,然後通過SD卡啟動Linux後,修改EEPROM中的內容。

關於如何製作樹莓派SD卡鏡像,可以參考我下面的文章:

樹莓派4最小化安裝Linux

三個前提條件:

1.登錄控制臺(用戶名:pi,密碼:raspberry)

2.樹莓派要能夠連接網絡

3.可以安裝配置rpi-config程序

3.1 安裝rpi-eeprom

rpi-eeprom是在樹莓派固件中操作樹莓派4的eeprom的程序,通過下面的命令進行安裝。

sudo apt-get updatesudo apt-get full-upgradesudo apt-get install rpi-eeprom

以上操作如果下載比較慢可以更換國內的源進行:

修改sources.list文件

sudo vim /etc/apt/sources.list

用#注釋掉之前的源,然後新增

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contribdeb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

接著修改raspi.list

sudo vim /etc/apt/sources.list.d/raspi.list

同樣注釋掉之前的源

修改如下:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

修改完成就OK了。

安裝完成,檢測一下eeprom現有的配置。

vcgencmd bootloader_config

可以見到如下信息

以上的信息是我以及配置好了的,最開始的信息可能不是這個。但是沒關係,接下來教你設置。

第一步:提取配置文件

cp /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-01-17.bin pieeprom.binrpi-eeprom-config pieeprom.bin > bootconf.txt

將配置文件進行拷貝,並且放到指定的目錄。pieeprom.bin就是配置文件,然後導出成txt文件。該文件的作用與之前樹莓派SD卡中的config.txt類似。

第二步:設置bootconf.txt中的內容

我配置的內容如下:

[all]BOOT_UART=1WAKE_ON_GPIO=1POWER_OFF_ON_HALT=0DHCP_TIMEOUT=45000DHCP_REQ_TIMEOUT=4000TFTP_FILE_TIMEOUT=30000TFTP_IP=192.168.12.194TFTP_PREFIX=1BOOT_ORDER=0x21SD_BOOT_MAX_RETRIES=3NET_BOOT_MAX_RETRIES=5TFTP_PREFIX_STR=raspi4/[none]FREEZE_VERSION=0

後面會解釋一下其中的內容。

第三步:將配置寫回pieeprom.bin文件中

rpi-eeprom-config --out pieeprom-new.bin --config bootconf.txt pieeprom.bin

這一步用於將配置文件寫回。

第四步:將pieeprom.bin燒錄到eeprom中

sudo rpi-eeprom-update -d -f ./pieeprom-new.bin

看到如下輸出信息即可

此時將SD卡取出,就可以看到系統從eeprom起來。

4.關鍵配置參數說明

BOOT_UART【關注】

如果設置為1,表示使能GPIO 14和 15的輸出,也就是我們可以連接串口打開信息。其串口參數為波特率115200,8位,無奇偶校驗位,1位的停止位。

對於有串口調試助手的,建議用硬體串口輸出信息,所以該位設置為1。

WAKE_ON_GPIO

如果為1,則「 sudo halt」將以低功耗模式運行,直到GPIO3或GLOBAL_EN短路接地。

TFTP_PREFIX【關注】

為了支持每個Pi的唯一TFTP引導目錄,引導加載程序會在文件名前面加上設備特定的目錄。如果在前綴目錄中都找不到start4.elf和start.elf,則清除前綴。在較早的型號上,序列號用作前綴,但是,在Pi4上,不再從序列號生成MAC地址,這使得很難通過檢查DHCPDISCOVER數據包在伺服器上自動創建tftpboot目錄。為此,可以將TFTP_PREFIX定製為MAC地址,固定值或序列號(默認)。

0 - Use the serial number e.g. "9ffefdef/"1 - Use the string specified by TFTP_PREFIX_STR2 - Use the MAC address e.g. "DC-A6-32-01-36-C2/" Default: 0

這裡我設置成1,讓後設置TFTP_PREFIX_STR路徑。

TFTP_PREFIX_STR【關注】

當TFTP_PREFIX設置為1的時候,可以設置TFTP_PREFIX_STR的路徑。例如

這是為了告訴樹莓派4,到哪個目錄下去找啟動文件。由於可能有不同的樹莓派固件,所以這裡會不同。

TFTP_IP

設置TFTP伺服器的IP位址,樹莓派的IP位址是通過DHCP自動獲取的。

BOOT_ORDER

該參數配置了不同的啟動模式

  • 0x0 - NONE (stop with error pattern)

啟動模式是一個32bit的通過特定的位來決定的。如果設置0x21,表示網絡啟動失敗時通過SD卡進行啟動。

如果設置成0x2則表示網絡啟動失敗,不通過SD卡啟動。這裡我們設置成0x21。

5.配置TFTP伺服器

如果不用SD卡,讓樹莓派4啟動,那麼啟動固件必須放在TFTP服務的特定的目錄中。

這裡我在Ubuntu上搭建了一個TFTP伺服器。

第一步:安裝tftpd-hpa

sudo apt-get install tftp-hpa tftpd-hpa

第二步:編輯腳本文件

sudo gedit /etc/default/tftpd-hpa

腳本內容如下:

# /etc/default/tftpd-hpa TFTP_USERNAME="tftp"TFTP_DIRECTORY="/home/bigmagic/tftpboot/" //tftpboot絕對路徑TFTP_ADDRESS=":69"TFTP_OPTIONS="--secure"

第三步:啟動伺服器

service tftpd-hpa restart

之後還需要做的事情就是

sudo chmod 777 /home/bigmagic/tftpboot/ -R

讓目錄權限變成可以訪問權限。

/home/bigmagic/tftpboot/創建目錄,用於存放SD卡上的啟動文件

最後將SD卡中的文件放到樹莓派4中。

6.網絡文件系統

作業系統起來後,如果要掛在SD卡或者網絡文件系統,肯定是需要指定網絡文件系統的。之前在SD卡上製作啟動文件的時候,我們是將跟文件系統放在SD卡上所以通過PXE啟動後的效果如下:

找不到SD卡,通過網絡方式啟動

從網絡中讀取相關的文件。

可以看到檢測不到sd卡上的文件系統。接著我們需要通過網絡啟動文件系統。

6.1 主機上設置NFS文件系統

因為我們的文件系統是在NFS上,所以主機上設置NFS文件系統是讓樹莓派訪問文件系統。

其實前面的TFTP是引導系統,而這個NFS則是為了讓rootfs從NFS上啟動。

sudo apt install nfs-kernel-server

接著編輯nfs的相關配置

echo "/home/bigmagic/nfs/client1 *(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports

設置權限

然後啟動服務

sudo service nfs-kernel-server restart

6.2 樹莓派上設置啟動NFS的rootfs腳本

由於現在樹莓派4上沒有了SD卡,啟動腳本在/home/bigmagic/tftpboot/raspi4中。所以去修改cmdline.txt文件。

修改文件內容如下:

console=serial0,115200 console=tty1 root=/dev/nfs nfsroot=192.168.12.194:/nfs/client1,vers=4.1,proto=tcp rw ip=dhcp rootwait elevator=deadline

啟動ip地址自行修改。

接著執行

接下來要做的事情就是將我們的跟文件系統拷貝到/home/bigmagic/nfs/client1目錄下。

此目錄可以從我們之前製作的SD卡的rootfs文件系統中進行拷貝。

操作完成後輸入

echo "192.168.12.194:/tftpboot /boot nfs defaults,vers=4.1,proto=tcp 0 0" | sudo tee -a /home/bigmagic/nfs/client1/etc/fstab

以上操作後便可啟動網絡文件系統了。

7.總結

上述介紹了樹莓派4不用SD卡啟動系統的辦法,對於樹莓派4來說,可以通過內置的EEPROM進行啟動固件的存放。通過這種方式,可以為內核調試增加了許多方便的地方。這種對於做開發樹莓派的人來說,可以專注於程序的開發,不用為頻繁的插拔卡帶來煩惱。同時這種方式對鏡像升級也提供了很多便利。

相關焦點

  • 樹莓派4B創建WiFi熱點
    一般將樹莓派作為WIFI熱點使用會用到板載的有線網口接入網際網路,然後配置內置或外接一塊無線網卡為WIFI熱點。樹莓派4B上已有了有線網口和無線網卡。create_apmake install#安裝依賴的庫apt-get install util-linux procps hostapd iproute2 iw haveged dnsmasq#創建WiFi熱點(GitHub上有多種方式創建,可以查找自己需要的那種
  • 3D 列印的樹莓派蜘蛛機器人
    你可以一次列印所有關節的零件,大腿和小腿也可以一起列印,如圖所示。而列印身體、關節、大腿、攝像頭支架在列印時需要支撐。 安裝樹莓派 推薦使用 2GB 內存以上的樹莓派 + Raspberry Pi OS 桌面版。
  • 用樹莓派做蜘蛛機器人,還是3D列印的!
    這個四足蜘蛛機器人以樹莓派作為「大腦」,身軀和四肢由 3D 列印。無需定製電路板,初學者即可完成組裝。 不僅如此,教程還包含一段將近一個小時的組裝視頻。這對於想了解樹莓派、Python 編程的朋友來說是非常不錯的上手項目。
  • 用於各種用途的優秀樹莓派作業系統
    當然,你可以用 Linux 做很多事,但專門為特定目的配置的作業系統可以為你節省大量的時間和精力。因此,本文中我要介紹一些專門為樹莓派量身定製的流行且實用的作業系統。由於有樹莓派鏡像工具,安裝任何作業系統到樹莓派上都很容易在 SD 卡上安裝樹莓派作業系統比以前容易得多。你只需下載樹莓派鏡像就可以快速地安裝任何樹莓派作業系統。
  • 樹莓派搭建nexus 2.x私服
    使用樹莓派搭建Nexus2私服需要的材料有:1. 樹莓派3B+(或者4B)2.移動硬碟一個下載nexus2.x安裝包由於nexus2.x官方的啟動環境並不支持arm架構的樹莓派,所以這裡採用tomcat7 + nexus2.x的方式搭建私服。
  • 樹莓派「小霸王學習機」來了,一個自帶鍵盤的電腦,售價不到 500 元
    和樹莓派 4 相比,值不值得入手?今天,外媒 arstechnica 率先拿到樣品,展開了一番評測。各位看官,且來共同「品鑑」。拆箱樹莓派 400拆箱之前需要聲明一點,70 美元的價格是指單獨一個「鍵盤電腦」。若是入手完整套件,則需要 100 美元(約 669 元)。
  • GELID宣布為樹莓派4推出Iceberry散熱盒 22美元一個
    GELID今日公布了為樹莓派4設計的Iceberry Cooling機箱。這款機箱提供了多種散熱彎道,並且不限制安裝後Raspberry Pi 4的連接性。Iceberry散熱箱採用了纖薄的鋁製外殼,旨在保證樹莓派4的關鍵部件的安全。
  • 我的樹莓派4為啥供不了電?官方確認:存在設計缺陷
    選自TechCrunch作者:Romain Dillet機器之心編譯參與:張倩、杜偉6 月 24 日,樹莓派發布了第四代產品樹莓派 4,性能預計可比上代樹莓派 3B+提升開發機構稱,這款設備可以提供「與入門級 x86 PC 系統相媲美的桌面性能」。如此高性能的全新樹莓派令開發者躍躍欲試,但到手之後卻發現,這一代新產品有個小小的缺陷。據科技媒體 techcrunch 報導,新版樹莓派 4 可能無法兼容所有的 Type-C 連接線。也就是說,你可能無法用手頭的 Type-C 線給樹莓派 4 供電。
  • 樹莓派「小霸王學習機」來了,一個自帶鍵盤的電腦,售價不到500元
    和樹莓派4相比,值不值得入手? 今天,外媒arstechnica率先拿到樣品,展開了一番評測。 各位看官,且來共同「品鑑」。 拆箱樹莓派400 拆箱之前需要聲明一點,70美元的價格是指單獨一個「鍵盤電腦」。 若是入手完整套件,則需要100美元(約669元)。
  • 個頭小本事大:13種20 美元以下的樹莓派 Zero 替代品
    這裡,我將給出樹莓派 Zero 和樹莓派 Zero W 的一些替代品。 樹莓派 Zero 替代品:應用於物聯網和嵌入式項目的超小單板計算機 受益於開源設計和開源軟體棧,我們有為不同項目提供的具有各種功能集的優秀替代品。所有這些板子運行的都是嵌入式 Linux 的各種變體。
  • 樹莓派又有新外殼:GELID 發布 ICEBERRY 鋁合金機箱,售價 22 美元
    IT之家12月20日消息 外設廠商 GELID 昨日發布了一款為樹莓派 4 設計的鋁合金機箱,名為 ICEBERRY「冰梅」。這款產品不僅僅包含外殼,內部也有著專門設計的鋁散熱片以及內置風扇,確保性能發揮。
  • 樹莓派又有新外殼:GELID發布ICEBERRY鋁合金機箱,售價22美元
    外設廠商 GELID近日發布了一款為樹莓派 4 設計的鋁合金機箱,名為 ICEBERRY「冰梅」。這款產品不僅僅包含外殼,內部也有著專門設計的鋁散熱片以及內置風扇,確保性能發揮。這款產品顏值很高,開孔精確符合樹莓派 4 的主板設計,上表面有著鏤空設計。
  • 樹莓派迎來PoE網線供電選項 新HAT模塊售20美元
    五個月前,樹莓派基金會推出了速度更快、搭載雙頻 802.11ac Wi-Fi 和藍牙 4.2 模塊的 Raspberry Pi 3 Model B+,而且據說會提供通過乙太網來供電(HAT)的選項。至於樹莓派 3 Model B+,其價格仍是 34.95 美元(¥238 RMB)。新款 PoE HAT 模塊自帶了 25mm 的小風扇,以幫助樹莓派 3 Model B+ 更好地散熱,它會在達到一定的溫度預設值後啟動。連接方面,它需要用到 40-way GPIO 插針、以及 USB 接頭附近的 4-pin 接口。
  • 最新一批樹莓派 4 已修復Type C接口問題
    大受歡迎的樹莓派4自從去年上市以來,其實一直都有一個小缺憾,跟其USB C接口有關,而新一批出廠的樹莓派 4已經解決了這個問題。有用過Type C接口的朋友應該都知道,Type C接口在不少設置上都是作為充電口的存在,樹莓派 4就是一個例子。
  • 友善發布新一代Nanopi M4物聯網開發板,性能升級、秒樹莓派……
    NanoPi M4板載2.4G & 5G雙頻WiFi藍牙模組, 除了帶有4個USB3.0 A型主口, 1個千兆乙太網口, 1個HDMI 2.0 A型口, 1個3.5mm耳機輸出, 和1個Type-C接口.還帶有豐富的擴展接口,包括40Pin樹莓派兼容口, 雙攝像頭接口MIPI-CSI, PCIe x2, USB2.0, eMMC模塊接口, RTC等接口。
  • 從此Mac上的文件再也不會丟了,我教你使用樹莓派做無線時間機器
    結果雙11的時候買了個雷電3的磁吸頭,把主板給我燒了,數據全部丟失,為了防止數據再次丟失,於是斥巨資買了帶usb3.0和千兆網卡的樹莓派4B做了無線的時間機器。!_!本教程分下面三步,長文多圖,如果前端的步驟你已經會了,請自行跳到對應步驟第一步,樹莓派安裝作業系統第二步,掛載移動硬碟第三步,使用樹莓派時間機器進行備份
  • SD卡原理
    210 SD卡啟動       世界早已進入cortex-a8了,我也得跟進一下所以買了QT210的開發板。        長話短說開始搞SD卡燒寫UBOOT,從SD啟動UBOOT。        從s5pv210_irom_applicationnote_preliminary_20091126.pdf知道,s5pv210啟動分BL0、BL1、BL2階段。
  • sd卡修復工具有哪些?兩個辦法就可以搞定了
    sd卡修復工具有哪些?sd卡是我們辦公生活的一個重要工具,如果sd受到損壞,那麼我們該怎麼修復呢?這就讓我來給大家介紹一下吧~ 如果sd卡無法格式化,那麼就不太好辦了,這時候,給大家推薦一個免費軟體——SDFormatter,藉助這款軟體我們可以修復手機還能格式化手機,但是不太穩定,會出現無法讀取的問題
  • 黑客如何用35美元的樹莓派偷走火星數據
    翻譯過來就是:2018年4月的網絡攻擊利用了這個特殊的弱點,黑客攻擊了一臺未經授權連接到JPL網絡的樹莓派電腦,從而進入了JPL網絡。沒有JPL OCIO的審核和批准,該設備不應該被允許進入JPL網絡。沒錯,這裡的樹莓派並非黑客準備的,而是極大可能在NASA內部有人接入了一臺樹莓派之後被入侵所導致。
  • 用樹莓派Zero打造精緻超袖珍超任遊戲機
    近日,國外DIY達人Rated-E Mods利用樹莓派Zero微計算機自製了一臺超袖珍超任主機。儘管現如今3D列印技術發達,但這位達人還是選擇使用古老的粘土模型方法,手工打造外殼。不得不感嘆,這位老兄的手工能力真是不一般吶!