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