在樹莓派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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...