树莓派的Perl 遨游之旅
2019獨角獸企業重金招聘Python工程師標準>>>
| 導讀 | 我在 SVPerl 和這篇文章中還想講第二點,就是介紹我的 “PiFlash” 腳本。雖然它是用 Perl 寫的,但是不需要你有多了解 Perl 就可以在?Linux?下將樹莓派系統自動化燒錄到 SD 卡。這樣對初學者就比較友好,避免他們在燒錄 SD 卡時候,偶然擦除了整個硬盤。即使是高級用戶也可以從它的自動化工作中受益。 |
下載系統鏡像
想要開啟樹莓派之旅,你首先需要為它下載一個操作系統。我們稱之為“系統鏡像”文件。一旦你把它下載到你的桌面、手提電腦,或者甚至是另一個樹莓派中,我就需要寫入或者稱之為“燒錄”進你的 SD卡。詳細情況可以看在線文件。手動做這件事情需要一些功底,你要把系統鏡像燒錄到整個 SD卡,而不是其中一塊分區。系統鏡像必須獨自包含至少一個分區,因為樹莓派引導需要一個 FAT32文件系統分區,系統引導這里開始。除了引導分區,其他分區可以是操作系統內核支持的任何分區類型。
在大部分樹莓派中,我們都運行的是某些使用 Linux 內核的發行版。已經有一系列樹莓派中常用的系統鏡像你可以下載使用。(當然,沒什么能阻止你自己造輪子)
樹莓派基金會向新手推薦的是“NOOBS”系統。它代表了 “New Out of the Box System”(新鮮出爐即開即用系統),顯然它好像聽起來像術語 “noob"”(小白),通俗點說就是 “newbie”(菜鳥)。NOOBS 是一個基于樹莓派的 Linux 系統,它會給你一個菜單可以在你的樹莓派上自動下載安裝幾個其它的系統鏡像。
Raspbian Linux 是 Debian Linux 發行版的樹莓派定制版。它是為樹莓派開發的正式 Linux 發行版,并且由樹莓派基金會維護。幾乎所有樹莓派驅動和軟件都會在 Raspbian 上先試用,然后才會放到其它發行版上。其默認安裝博客 Perl。
Ubuntu Linux (還有其社區版的 Ubuntu MATE)也將樹莓派作為其支持 ARM (Advanced RISC Machines)處理器的平臺之一。RISC(Reduced Instruction Set Computer)Ubuntu 是一個 Debian Linux 的商業化支持的開源分支,它也使用 DEB 包管理器。Perl 也在其中。它僅僅支持 32 位 ARM7 或者 64 位 ARM8 處理器的樹莓派 2 和 3。ARM6 的樹莓派 1 和 Zero 從未被 Ubuntu 構建過程支持。
Fedora Linux 支持樹莓派2 ,而 Fedora 25 支持 3。 Fedora 是一個隸屬于紅帽(Red Hat)的開源項目。Fedora 是個基礎,商業版的 RHEL(Red Hat Enterprise Linux)在其上增加了商業軟件包和支持,所以其軟件像所有的兼容紅帽的發行版一樣來自 RPM(Red Hat Package Manager) 軟件包。就像其它發行版一樣,也包括 Perl。
RISC OS 是一個特別針對 ARM 處理器的單用戶操作系統。如果你想要一個比 Linux 系統更加簡潔的小型桌面(功能更少),你可以考慮一下。它同樣支持 Perl。
RaspBSD 是一個 FreeBSD 的樹莓派發行版。它是一個基于 Unix 的系統,而不是 Linux。作為開源 Unix 的一員,它延續了 Unix 的功能,而且和 Linux 有著眾多相似之處。包括有類似的開源軟件帶來的相似的系統環境,包括 Perl。
OSMC,即開源多媒體中心,以及 LibreElec 電視娛樂中心,它們都基于運行 Linux 內核之上的 Kodi 娛樂中心。它是一個小巧、特化的 Linux 系統,所以不要期望它能支持 Perl。
Microsoft Windows IoT Core 是僅運行在樹莓派3上的新成員。你需要微軟開發者身份才能下載。而作為一個 Linux 極客,我根本不看它。我的 PiFlash 腳本還不支持它,但如果你找的是它,你可以去看看。
PiFlash 腳本
如果你想看看樹莓派 SD 卡燒錄指導,你可以找到在 Windows 或者 Mac 系統下需要下載的工具來完成燒錄任務。但是對于 Linux 系統,只有一系列手工操作建議。我已經手工做過這個太多次,這很容易引發一個開發者的本能去自動化這個過程,這就是 PiFlash 腳本的起源。這有點難,因為 Linux 有太多方法可以配置,但是它們都是基于 Linux 內核的。
我總是覺得,手工操作潛在最大的失誤恐怕就是偶然錯誤地擦除了某個設備,而不是擦除了 SD 卡,然后徹底清除了我本想保留在硬盤的東西。我在 SVPerl 演講中也說了,我很驚訝地發現在聽眾中有犯了這種錯誤(而且不害怕承認)的人。因此,PiFlash 其中一個目的就是保護新手的安全,不會擦除 SD 卡之外的設備。PiFlash 腳本還會拒絕覆寫包含了已經掛載的文件系統的設備。
對于有經驗的用戶,包括我,PiFlash 腳本還提供提供一個簡便的自動化服務。下載完系統鏡像之后,我不需要必須從 zip格式中解壓縮或者提取出系統鏡像。PiFlash 可以直接提取它,不管是哪種格式,并且直接燒錄到 SD 卡中。
我把 PiFlash 及其指導發布在了 GitHub 上。
命令行用法如下:
piflash [--verbose] input-file output-device piflash [--verbose] --SDsearchinput-file 參數是你要寫入的系統鏡像文件,只要是你從樹莓派發行版網站下載的鏡像都行。output-device 參數是你要寫入的 SD 卡的塊設備路徑。
你也可以使用 --SDsearch 參數列出掛載在系統中 SD 卡設備名稱。
可選項 --verbose 可以輸出所有的程序狀態數據,它在你需要幫助時或者遞送 bug 報告和自行排錯時很有用。它就是我開發時用的。
下面的例子是我使用該腳本寫入仍是 zip 存檔的 Raspbian 鏡像到位于 /dev/mmcblk0 的 SD 卡:
piflash 2016-11-25-raspbian-jessie.img.zip /dev/mmcblk0如果你已經指定了 /dev/mmcblk0p1 (SD 卡的第一分區),它會識別到這個分區不是一個正確的位置,并拒絕寫入。
在不同的 Linux 系統中怎樣去識別哪個設備是 SD 卡是一個技術活。像 mmcblk0 這種在我的筆記本上是基于 PCI 的 SD卡接口。如果我使用了 USB SD 卡接口,它就是 /dev/sdb,這在多硬盤的系統中不好區分。然而,只有少量的 Linux 塊設備支持 SD 卡。PiFlash 在這兩種情況下都會檢查塊設備的參數。如果全部失敗,它會認為可寫入、可移動的,并有著正確物理扇區數量的 USB 驅動器是 SD 卡。
我想這應該能涵蓋大部分情況。但是,如果你使用了我不知道的 SD 卡接口呢?我樂意看到你的來信。請在輸出信息中加上
--verbos --SDsearch參數,以便讓我可以知道你系統目前的環境。理想情況下,如果 PiFlash 腳本可以被廣泛利用,我們可以構建一個開源社區去盡可能的幫助更多的樹莓派用戶。
樹莓派的 CPAN 模塊
CPAN(Comprehensive Perl Archive Network)是一個世界范圍內包含各種 Perl 模塊的的下載鏡像。它們都是開源的。大量 CPAN 中的模塊都是歷久彌堅。對于成千上百的任務,你不需要重復造輪子,只要利用別人已經發布的代碼就可以了。然后,你還可以提交你的新功能。
盡管樹莓派是個五臟俱全的 Linux 系統,支持大部分 CPAN 模塊,但是這里我想強調一下專為樹莓派硬件開發的東西。一般來說它們都用在測量、控制、機器人方面的嵌入式系統中。你可以通過 GPIO (General-Purpose Input/Output)針腳將你的樹莓派連接到外部電子設備。
例子
本例中,你將練習如何設置并運行使用 OSMC 操作系統的樹莓派。
到 RaspberryPi.Org 下載區,下載最新的 OSMC 版本。
將空 SD 卡插入你的 Linux 電腦或者筆記本。樹莓派第一代是全尺寸的 SD 卡,除此以外都在使用 microSD,你也許需要一個通用適配器才能插入它。
在插入前后分別運行 cat /proc/partitions 命令來看看系統分給硬件的設備名稱。它可能像這樣 /dev/mmcblk0 或者 /dev/sdb, 用如下命令將正確的系統鏡像燒錄到 SD 卡:
彈出 SD 卡,將它插入樹莓派中,接上 HDMI 顯示器,開機。
當 OSMC 設置完畢,插入一個 USB 設備,在里面放點視頻。出于示范目的,我將使用 youtube-dl 程序下載兩個視頻。運行
(彭博關于英國高新產業,包括樹莓派的介紹)還有
youtube-dl nAvZMgXbE9c(CNet 發表的“排名前五的樹莓派項目”) 。
將它們下載到 USB 中,然后卸載移除設備。 將 USB 設備插入到 OSMC 樹莓派。點擊視頻選項進入到外部設備。
只要你能在樹莓派中播放視頻,那么恭喜你,你已經完成了本次練習。玩的愉快。
例二:隨機播放目錄中的視頻的腳本
這個例子將使用一個腳本在樹莓派上的目錄中亂序播放視頻。根據視頻的不同和設備的擺放位置,這可以用作信息亭顯示的用途。我寫這個腳本用來展示室內體驗視頻。
設置樹莓派引導 Raspbian Linux。連接到 HDMI 監視器。
從 GitHub 上下載 do-video 腳本。把它放到樹莓派中。
跟隨該頁面的安裝指導。最主要的事情就是安裝 omxplayer 包,它可以使用樹莓派硬件視頻加速功能平滑地播放視頻。
在家目錄的 Videos 目錄下放一些視頻。
運行 do-video ,這樣,應該就可以播放視頻了
例三:讀取 GPS 數據的腳本
這個例子更加深入,更有針對性。它展示了 Perl 怎么從外部設備中讀取數據。在先前例子中出現的我的 GitHub上 有一個 gps-read.pl 腳本。它可以通過一系列端口從 GPS 讀取 NMEA(國家海洋電子協會)的數據。頁面還有教程,包括構建它所使用的 AdaFruit Industries 部分,但是你可以使用任何能輸出 NMEA 數據的 GPS。
通過這些任務,我想你應該可以在樹莓派上像使用其他語言一樣使用 Perl了。希望你喜歡。
原文來自:http://www.linuxprobe.com/raspberry-pi-perl.html
轉載于:https://my.oschina.net/ssdlinux/blog/1537081
總結
以上是生活随笔為你收集整理的树莓派的Perl 遨游之旅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云服务时代,你是否没穿内裤在到处逛啊!
- 下一篇: 利用JSON-schema校验请求报文,