首頁 > 軟體

在樹莓派2代B型/3代 上安裝Fedora23 - Installing Fedora 23 on Raspberry Pi 2 model B or Raspberry Pi 3

2020-06-16 17:45:42

本文主要用於記錄安裝過程,以便日後查閱回顧。

之前在自己的樹莓派上執行的一直是通過NOOB安裝的Raspbian,但是本人平時更喜歡用Fedora作為開發和使用環境,而且Raspbian上的軟體包通常更新比較緩慢。因為樹莓派2代B型上市前,樹莓派的晶片都是armv6或者更早的架構,只能執行ARM架構的Raspbian或者Fedora 18及更早版本。樹莓派2代B型搭載的晶片架構是armv7,樹莓派3代搭載的晶片架構是armv8,這兩種晶片都能夠執行ARM架構的Fedora 23,而僅執行Raspbian也難以充分發揮硬體效能,因此通過查詢資料,最終找到了Fedora官方的文件說明。首先在16G的記憶卡上驗證成功,今天就在64G的SD卡上再來一遍,順便把每個步驟記錄下來,以備自己和其他人參考。

0. 準備工作
下載Fedora 23 ARM映象和raspberry專用韌體(Boot和Kernel):
a. Fedora 23 ARM 官方下載地址 [https://arm.fedoraproject.org/]
b. Raspberry Pi專用韌體下載地址 [https://github.com/raspberrypi/firmware/archive/master.zip]
下載完後解壓到方便的目錄備用即可。

1. 建立磁碟分割區結構
因為官方的文件中只介紹了fdisk的使用,因此就偷懶,只參考了官方文件的步驟,至於其他工具是否可行,暫時就不研究了。有興趣的話可以試試。
由於大部分操作都是需要根使用者許可權的,如果覺得經常sudo麻煩,可以直接su切換到根使用者。
首先需要確定磁碟的裝置路徑,使用USB讀卡器有可能路徑是/dev/sdb,而使用計算機內建的讀卡器,SD卡的路徑可能是/dev/mmcblk0,自己根據情況確定。
確定裝置路徑後執行# fdisk /dev/sdb (這是我電腦上的路徑)
回車後進入互動模式,p列印當前操作磁碟的分割區資訊,d刪除,刪除現存的分割區。
接著說說我打算建立的分割區:根據官方文件,boot分割區128Mb就足夠了,因為2代B型的記憶體是1G,所以swap分割區乾脆給1G;這時還剩大約58G可用空間,給系統16G以上的可用空間差不多了,如果打算作為開發工作站,裝很多軟體包,可以適當留多一些,剩下的空間作為使用者分割區。
然後輸入n建立新的分割區,回車後出現提示,輸入p可以建立主分割區,輸入e可以建立擴充套件分割區,我們要建立的是主分割區,之後根據提示輸入1表示要建立的是第一個分割區,然後輸入兩次回車,跳過First sector選項,在Last sector選項中輸入+128M,表示劃分給分割區的大小。螢幕上的提示資訊可以參考如下:

fdisk> 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 (32-31422463, default 32): 
       Last sector, +sectors or +size{K,M,G,T,P} (32-31422463, default 31422463): +128M       

       Created a new partition 1 of type 'Linux' and of size 128 MiB.

當看到Created a new partition 1 of type 'Linux' and of size 128 MiB.資訊時就表示分割區建立成功了。
根據剛才的提示我們可以知道,剛才建立的分割區型別是“Linux”的,而樹莓派要求Boot分割區必須是FAT32,因此還需要輸入t命令轉換分割區型別。輸入L查詢所有型別程式碼,可以查到W95 FAT32的程式碼是b,因此輸入b,此時會顯示類似下面的資訊:

fdisk> Command (m for help): t
       Selected partition 1
       Partition type (type L to list all types): b
       Changed type of partition 'Linux' to 'W95 FAT32'.

接著重複上面的步驟,建立swap分割區和系統分割區。注意新建分割區和修改分割區型別時選擇分割區的編號需要增長。根據官方文件,swap分割區的分割區型別應該是“Linux swap / Solaris”型別,對應的編號是82。而系統分割區和使用者分割區則不需要修改分割區型別。
於是,建立磁碟分割區結構的工作就基本完成了,執行p命令檢視結果,確認無誤後執行w命令寫入記憶卡。如果系統提示需要重新啟動或者重新連線讀卡器的,先重新啟動或者重新連線後再執行下一步。

2. 格式化剛才新建的SD卡分割區
如果分割區已經成功,這時在/dev/目錄下應該能看到sdb和新建的4個分割區:sdb1,sdb2,sdb3,sdb4。如果是用內建讀卡器,則可能是mmcblk0和對應的4個分割區:mmcblk0p1,mmcblk0p2,mmcblk0p3,mmcblk0p4。
通過mkfs.vfat+分割區裝置路徑,將指定分割區格式化為FAT32格式。通過mkswap+分割區裝置路徑,將指定分割區格式化為swap格式。通過mkfs.ext4+分割區裝置路徑,將指定分割區格式化為ext4格式。

3. 掛載Fedora ARM 23系統映象和SD卡分割區,拷貝映象檔案
如果映象還沒解壓,可以通過# unxz Fedora-Server-armhfp-23-10-sda.raw.xz命令解壓。
建立臨時掛載點:# mkdir /tmp/img/
建立loop device:# losetup --partscan --find --show Fedora-Server-armhfp-23-10-sda.raw /dev/loop0
掛載loop device的根分割區到臨時掛載點:# mount -r /dev/loop0p3 /tmp/img/
這裡說明一下,通常Linux系統映象中第一個分割區是boot分割區,對應/boot/路徑。第二個分割區是swap分割區,可以忽略,第三個分割區才是根分割區,對應/。因為我們不打算使用原生的boot和kernal,因此不掛載第一個分割區。官方的說明是,隨Fedora一起發布的kernal暫時沒有支援樹莓派晶片的所有特性,因此最好使用樹莓派的專用核心韌體。
接著掛載我們的SD卡系統根分割區:
# mkdir /tmp/rpi/
# mount /dev/mmcblk0p3 /tmp/rpi/
掛載SD卡boot分割區:
# mkdir /tmp/rpi/boot/
# mount /dev/mmcblk0p1 /tmp/rpi/boot/
掛載SD卡home分割區:
# mkdir /tmp/rpi/home/
# mount /dev/mmcblk0p4 /tmp/rpi/home/
然後,將映象根分割區中的檔案拷貝到SD的根分割區中:# cp -rpv /tmp/img/* /tmp/rpi/
可以執行sync確認快取同步。
最後解除映象檔案的掛載:
# umount /tmp/img
# losetup -d /dev/loop0

 

4. 拷貝樹莓派專用韌體
如果韌體還沒解壓,可以通過# unzip raspberry-firmware.zip命令解壓。
然後通過以下命令拷貝需要用到的檔案:
# cp -r firmware-master/boot/* /tmp/rpi/boot/
# cp -r firmware-master/modules/* /tmp/rpi/lib/modules/
然後在SD卡boot分割區下建立一個名為cmdline.txt的檔案,用來向核心傳遞引數。該檔案內容如下:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait
這裡需要注意,因為這個檔案是給樹莓派機器用的,SD卡插入樹莓派後,SD卡的裝置路徑應該是/dev/mmcblk0,根分割區裝置路徑就是/dev/mmcblk0p3,所以應該固定寫這個內容,而不再是準備SD卡時在電腦上的裝置路徑。
接著在/boot分割區下建立一個名為config.txt的檔案,這一步是可選的,我第一嘗試沒有建立這個檔案,系統可以正常啟動。如果想建立這個檔案,檔案內容如下:

hdmi_force_hotplug=1
config_hdmi_boost=4
overscan_left=24
overscan_right=24
overscan_top=16
overscan_bottom=16
disable_overscan=0
core_freq=250
sdram_freq=400
over_voltage=0

5. 設定fstab檔案內容
這裡需要注意,修改的是SD卡上的fstab檔案,而不是自己電腦上的,如果改錯了,自己的電腦就沒法啟動了,所以需要特別小心。
首先執行# blkid | grep sdb命令查詢sdb磁碟每個分割區的UUID,如果是內建讀卡器,磁碟名可能替換為mmcblk0
然後使用常用的編輯器開啟/tmp/rpi/etc/fstab檔案,這個檔案是在引導的時候用的,修改的時候需要比較嚴謹。首先,swap分割區放在最後一行,行數不夠可以拷貝一行。第一行一定是根分割區,也就是我們分的第三個系統分割區。往下必須是一棵樹型結構,我們把boot分割區放在第二行,把使用者分割區放在第三行,分別更新UUID、路徑和分割區格式資訊。確認無誤後儲存。

6. 解除SD卡掛載

umount /tmp/rpi/boot/
umount /tmp/rpi/home/
umount /tmp/rpi/

最後可以執行sync確認快取同步。

7. 將SD卡插入樹莓派並進行初始化
上電後正常情況應該會顯示初始化嚮導,可以選擇1~4進行指定的操作,如設定時區、語言、設定root密碼、新建管理員賬號??。完成後重新啟動即可。
重新啟動後執行以下命令移除沒用使用到的Fedora官方核心並更新系統:

# dnf remove kernel kernel-core kernel-modules
# dnf update

8. 安裝樹莓派韌體更新包
首先執行# dnf install binutils git安裝依賴元件。
然後執行以下命令安裝rpi-update:

# curl -L -o /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update
chmod +x /usr/bin/rpi-update

最後執行# rpi-update即可進行專用韌體升級。


IT145.com E-mail:sddin#qq.com