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

来源:http://www.cnblogs.com/frankofgdc/archive/2016/03/06/5248383.html
-Advertisement-
Play Games

本文主要用於記錄安裝過程,以便日後查閱回顧。 之前在自己的樹莓派上運行的一直是通過NOOB安裝的Raspbian,但是本人平時更喜歡用Fedora作為開發和使用環境,而且Raspbian上的軟體包通常更新比較緩慢。因為樹莓派2代B型上市前,樹莓派的晶元都是armv6或者更早的架構,只能運行ARM架構


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

之前在自己的樹莓派上運行的一直是通過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即可進行專用固件升級。

 

參考資料:

1.  Raspberry Pi document on Fedora official wiki [http://fedoraproject.org/wiki/Raspberry_Pi]


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 博客園(FOREVER_ENJOY):http://www.cnblogs.com/zyx1314/ 本文版權歸作者所有;歡迎轉載!請註明文章作者和原文連接 Linux各個目錄的結構介紹 Linux系統以目錄的方式來組織和管理系統中的所有文件。Linux系統通過目錄將系統中的所有的文件分級、分層組織...
  • ARM的指令系統中關於棧指令的內容比較容易引起迷惑,這是因為準確描述一個棧的特點需要兩個參數: 棧地址的增長方向 :ARM將向高地址增長的棧稱為 遞增棧 (Descendent Stack),將向低地址增長的棧稱為 遞減棧 (Acendant Stack) 棧指針的指向位置 :ARM將棧指針指向棧頂
  • Arduino控制LCD屏幕顯示出helloworld字元串基本知識及其軟硬體設計
  • pstack命令用來顯示進程的棧跟蹤。 pstack 命令必須由相應進程的屬主或root賬號運行。可以使用pstack來確定進程掛起的位置。此命令只有一個參數,那就是pid,具體關於pstack的介紹可以查看man手冊,如下所示: [root@DB-Server ~]# man pstackPSTA...
  • 一、USB設備描述結構 1.邏輯組織結構 在USB設備的邏輯組織中,包含設備、配置、介面和端點4個層次。設備通常有一個或多個配置,配置通常有一個或多個介面,介面有零或多個端點。 每個USB設備都可以包含一個或多個配置,不同的配置使設備表現出不同的功能組合,配置由多個介面組成。在USB協議中,介面代表
  • vm12 安裝ubuntu15.10詳細圖文教程 虛擬機安裝ubuntu安裝 ubuntu更新軟體 ubuntu一直卡在下載語言怎麼辦 官網下載ubuntu 下載ubuntu鏡像文件 虛擬機安裝ubuntu如何設置處理器配置 虛擬機安裝ubuntu 記憶體多大合適 ubuntu更新軟體 ubuntu...
  • RPM包安裝wget http://down.wdlinux.cn/in/lanmp_wdcp_ins.shsh lanmp_wdcp_ins.sh就可以RPM包安裝支持系統:CentOS 5.X/wdlinux_base 5.X/wdOS 1.0,CentOS 6.X ,32位,64位均支持卸載 
  • SSH批量部署服務 1.1在NFS上作為中心分發伺服器將私鑰分發到其他伺服器上 1.1.1NFS部署 1 [root@nfs-server ~]# useradd zhurui 2 [root@nfs-server ~]# echo 123456|passwd --stdin zhurui 3 Ch
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...