分類彙整: 樹莓派之實作

咔嗎尋奇 Standford 的 CCRMA!!首部曲

【詩經‧魏風‧碩鼠】

碩鼠碩鼠,無食我黍!三歲貫女,莫我肯顧。

逝將去女,適彼樂土 ;樂土樂土,爰得我所。

碩鼠碩鼠,無食我麥!三歲貫女,莫我肯德。

逝將去女,適彼樂國 ;樂國樂國,爰得我直。

 碩鼠碩鼠,無食我苗!三歲貫女,莫我肯勞。

逝將去女,適彼樂郊 ;樂郊樂郊,誰之永號?

這是一首『民歌』, 出自詩經魏風,三章八句用了九個ㄌㄜˋ字,卻得不著陶淵明.桃花源記裡那點世外的『怡然自樂』。想《爾雅》裡的ㄕˊ,又怎麼會跑到百姓的『田裡』,吃的肥肥大大?該是說上位者剝削無厭,雖然已經『多年慣你』── 三歲貫女 ──,你卻不理的照、恩和辛勞;以至於人民不得不想『誓將棄汝』──  逝將去女 ──,去尋找人間聖境的『香格里拉』,以求安居之,擁有自我價,也免於吁歎永號ㄏㄠˊ!

ㄩㄝˋ字的『造字象木架子上有張弦的琴,有人正說唱著旁;而樂器則是凝鑄聲學成為了音樂。美國 Standford 大學有一個『音樂與聲學的計算機研究中心Center for Computer Research in Music and Acoustics,以『 CCRMA 』的簡稱楊名於外,唸作『 karma 』。很久以前就有 Fernando Lopez-Lezcano 先生所編程發行的 Fedora Linux 音樂軟體匯集『 Planet CCRMA at home 』,模寫了在 CCRMA 『咔嗎』ㄎㄚ ㄇㄚ˙ 研究所裡用的大部分的 Linux 環境與軟體。約莫在 2011 年,又有 Wendy Ju 女士和 Edgar Berdahl 先生所創立的『Satellite CCRMA』──

rpiccrma-satelite

咔嗎衛星是一個平台 platform,一個可以建構『嵌入式樂器』和『安置嵌入式藝術』的平台。整合了開源的軟硬體,還有著一些只見於小說的新奇軟件。最重要的是可以『吃著魚釣魚』,提供的範例能讓一個『新手』幾分鐘內就能上手

── 這一個網站。

目前所用的硬件,漸漸的從高貴的米格魯』Beagle,移向好吃的樹莓派』!!

此曲是一部如何黑傑克hijack 掉  “咔嗎衛星” 的講古

第一步藉著『維基解密』,發現了使用咔嗎衛星『所需硬體』的

線索

Raspberry Pi 512MB Model B

8GB SDHC card (Find the appropriate Satellite CCRMA SDHC card image on the main page.)

Retractable USB cable (e.g. from GT Max)

Ethernet cable

Either a USB micro cable to power the Raspberry Pi from your laptop or a high-quality micro USB power supply (Note: Do not use cell phone battery chargers to power the Raspberry Pi. This will adversely affect the audio quality.)

Arduino Nano

Solderless breadboard

黑傑克細數著這些『項目』,同時思考著『它們是什麼』?,又將如何取得這些『零件』呢?咦!這份密件裡講的多半是『軟件』,手頭正好有著一樣的『樹莓派』和 SD 卡,不如就從軟體開始吧!循著線索找到了『MicroSDHC card image』,唉!克隆 Clone 的真是啊!!一個時辰過去了,赫然得到一個大小約為 3.0 G,叫做『  SatelliteCCRMA_Rpi_v0.98.dd.zip 』的檔案,那要怎麽『拷貝』呢?突然記起了一篇讀過的文章,哇!ㄋㄚˋ ㄟ ㄚ ㄋㄟ,怎麽只有『方法』,卻沒說『辦法ㄋㄟ˙ ?那個『作者』鐵定自己不知道 8G 的樹莓派 SD 卡『放不下』這個『下載檔』 + 『解開的』檔案勒!還好我是『怪醫』,那我就另用一個 8G 的 USB 大拇哥,然後給它『放下去』,一樣地依樣畫葫蘆的克隆……,乾脆寫個 .XX嘉惠後人』,

黑傑克克隆配方

ㄉㄟˇ  一˙  ㄉ一ㄠˊ 聆老師 ㄟ ㄎㄢˇ ㄇㄧㄢ˙ ㄉㄡ˙ 都都好用;

ㄉㄟˇ  ㄖ一˙  ㄉ一ㄠˊ 知影 USB 大拇哥 ㄉ一 ㄉㄡ˙  ㄨ一˙ ;

ㄉㄟˇ  ㄙㄚㄤ˙  ㄉ一ㄠˊ豆嘎 dd 。

對於『黑傑克克隆配方』一事,作者一無所知,也僅能用著俗話說的『事不過三』,期待讀者『自了』了;……

─── 欲知詳情,下回分解 ───!

樹莓派♀♂克隆!!

學習曲線』說著一個『人會遺忘』的事實。這或許是大自然的『恩惠』,要『向前行』如果又不能『放手』,很可能『耽湎』於『過去』而無法自拔。以前的讀書人,喜歡寫讀書『筆記』,於年終『冬至』養陽之日,趁著『商旅不行』之時,作點『溫故知新』得事兒──!想必是有所謂吧?或許就是 ……?近代美國家喻戶曉的史學家威爾.杜蘭先生花了五十年著作了「世界文明史」三十八大巨冊,為著總結又寫了一本名為【歷史的教訓 】的導讀,並於《序言》中感慨︰歷史告訴人們的最大教訓就是『人類總學不到教訓』。當然『抉擇』終究祇能自由的,或許『夏蟲』也可以『喻冰』,總之為了…避免某種遺憾…,就讓我們來看看在 Raspbian 上要如何打包,怎麽克隆 Clone 一下,這個一路上『走來的足跡』。

為了能在樹莓派 Raspbian 系統裡『克隆』SD 卡,首先我們需要相容於樹莓派的 USB SD 讀卡裝置,在此我們選用 elinux.org 上建議的 Super Top 類的多卡式  SD 讀卡裝置,這樣還可以做像『拷貝機』一樣的用途。如果你對 SD 卡或 Noobs 安裝尚不了解,請先閱讀【開機沒畫面?Noobs 安裝】一文。

172_G_1377020380212

 

 

詳細規格,請看這裡

其次接下來將安裝一些會用到或談到的軟體︰

sudo apt-get update

sudo apt-get install gparted partclone bless  uuid synaptic

下文將一步步說明如何在 Raspbian 上『做這件事』︰

【檢查多卡式 SD 讀卡裝置】︰

重要的第一步檢查 Raspbian 是否『認識』這個新插入的 USB 多卡式 SD 讀卡裝置,你可以用 dmesg 來看,或是使用 lsusb 列出 USB 裝置的命令來查,是不是有叫做『Super Top …』的裝置?註︰文中所談到的多個命令,除非特別指明命令參考處,請用 man 「cmd」閱讀系統上的命令手冊

【插入一片相同的 SD 卡】︰

由於 SD 卡不但有相容性的考慮,還有容量大小的問題,此處最好先用與你 Noobs 開機 SD 卡『相同』的卡片。當你插入這塊新卡後,用 dmesg 命令查看『讀取狀況』和『裝置名稱』,你會看到像 sda、sdb、sdc、…,以『 sdscsi disk 起頭的 『 x 』裝置名稱,緊跟著『 : 』然後是一個或多個分割區塊sdx1sdx2sdx3,…』 ,一般新買的 SD 卡大都只有一個分割區塊  ── W95 fat ??類型的檔案系統 ──。也就是說整個 SD 卡是 /dev/sdx,有一個分割區塊叫做 /dev/sdx1。之前的文章談過檔案系統是個『樹狀結構』,不論你從哪個『子目錄』看進去,這個子目錄裡依舊是個樹狀結構── 目錄 sub directory tree ──,在這種『疊套』的構造下,我們容易把這個『子目錄樹想像成就是一個『子目錄名稱為名』的另一個『檔案系統』── 這一個檔案系統彷彿是『安放』mount 在『祖樹』的枝幹上一樣 ──。在 Linux 作業系統上將這些安放處稱為『掛載點』mount point,並有著 mount 掛載和 umount 卸載的命令讓我們使用『外部的』儲存裝置 ── SD 卡、硬碟、大拇哥 USB Storage Device 、DVD、…等等 ──。於 Raspbian 上,這些掛載點都放在 /media/ 起頭的子目錄下,按造被掛載上的不同型態檔案系統分別用著『 /media/ 磁碟標籤/』── Windows 類檔案系統 ── 或是『 /media/ uuid 碼/』── Linux 類檔案系統 ── 的子目錄名稱掛載點。如果你用 mount 命令查看,當下掛載的全部檔案系統,首先你會發現怎麼沒有  Linux 的分割區塊『 /dev/mmcblk0p2』,它已經被重新鏈接命名為『 /dev/root 』而掛載在根 / 目錄上了,你可以如此確認︰

ls /dev/root -l

。其次開機的分割區塊『 /dev/mmcblk0p1』掛載在 / boot 子目錄上; 而 這個 SD 卡 的 『/dev/sdx1』則掛載在  /media/ 磁碟標籤/  子目錄上。

【用 dd 命令來複製 Noobs 開機的 SD 卡】︰

由於 dd 命令會蓋寫輸出 SD 卡裝置 上的分割區總表,所以你需要先卸載 umount 掉那個裝置上所有已掛載的檔案系統︰

sudo umount /dev/sdx1,這裡假設只有一個,然後用

sudo dd bs=1M if=/dev/mmcblk0 of=/dev/sdx

sudo sync;sync;sync

這樣就開始複製了!當然這裡的未知數 x ,你得代入正確的裝置名稱。等它執行完成後,首先看看 dd 有沒有輸出錯誤訊息;如果沒有,那就告成了。假使有錯誤,先用 dmesg 看看是什麼樣的錯誤?是沒有打開僅讀取 Lock 開關,如果不是,一般會是 SD 卡有部份區域損毀;最糟的是 SD 卡讀卡機壞了。前面寫下的 Sync 同步命令目的是把所有還在緩衝區 buffer 裡的資料,統統寫出到裝置上以免流失,一般用一個就夠了。這裡稍微說明一下 dd 這個命令的幾個常用選項bs block size 代表一次讀寫多少個位元組為單位 ── 單位 I/O 區塊的大小 ── ,這裡頭用的是二進制的 1M byte s,這個數值越大讀寫越快,但對於 SD 卡來說 1M bytes 大體速度上是合適的;if input file 是提供輸入區塊裝置檔案of output file 是用於輸出區塊裝置檔案;還有一個 『 count= 』表示需要讀寫多少個單位 I/O 區塊,預設的是整個裝置或是檔案的終止,上面的命令就是用預設條件,所以沒有給這個選項。

至此,讀者自可推想兩塊相同的 SD 卡』可以用︰

sudo dd bs=1M if=/dev/sdx of=/dev/sdy

來複製 ── 這就是『拷貝機』了── 。但是如果是儲存容量不一樣大的兩塊不同地 SD 卡呢?其實只要『  sdy 』── 輸出 ── 裝置的儲存容量比較大,你依然可以這樣拷貝,那多出的部份就是【raspi-config 再探!!】一文中所說的空閑  free space 的容量。再者因為 if 的選項也可以用於『檔案』,所以你只要把『 /dev/sdx換成下載來的而且又已經解壓縮的『映像檔image  的檔名,那你就克隆它了!!

由於 SD 讀卡裝置是可以插拔換卡的 ── 媒體改變 media change ──,很像過去的『軟碟機』換片一樣,如果你試著下︰

ls /dev/sd* -l

──※ * 』表示『任意的字串』,也就是說系統上字串起頭是『sd』的那些裝置。

你應該不會太驚訝於看到『floppy』一詞;然而這個『媒體改變』事件,由於許多 SD 讀卡裝置沒有通知 Linux 作業系統,所以當你使用 fdisk 命令時,常常會碰到『找不到媒體』這樣的錯誤訊息,所以建議你用 cfdisk 命令來取代,它會試著確定裝置狀態。其次,前面我們提到過磁碟標籤UUID 碼,假使你有興趣的話,可以試試看 blkid 列印定位區塊裝置屬性這一個命令︰

sudo blkid -s LABEL

sudo blkid -s UUID

最後,讓我們簡單介紹一些早先安裝的軟體︰gparted 是個很好用的視窗版磁碟分割.格式化工具軟體;bless 是一個視窗版 Hex editor 十六進制的檔案編輯程式;partclone 命令能夠備份多種不同類型分割區塊uuid 顧名思義是 Universally Unique Identifier 通用唯一識別碼的處理命令程式 ; 而 synaptic 就是圖形界面的套件管理軟體,但在 Raspbian 上它有一個地方需要用奈文編輯器 nano 修改,讓使用者 pi 擁有管理者的執行權限︰

sudo nano /usr/share/applications/synaptic.desktop

把文本中的『 Exec=synaptic-pkexec 』修改成『 Exec=gksudo synaptic-pkexec 』之後存檔,這個 gksudo 就是視窗版程式所需要的那個  sudo 。在 Raspbian 視窗環境裡, synaptic 和 gparted 程式都放在視窗選單的『偏好設定』子選單裡,但 bless 由於沒有選單項,只能打開 LX 終端機後,下達 bless 命令去執行。

在人類的歷史上,『克隆』?或『傳承』?是世世代代的事;前事不忘後事之師,也就是所謂的『成功』又何必在我的偉大胸襟。如果說今天的『經濟學』只是能夠大破某一些因襲著的古老『士、農、工、商』的『傳統』,卻又不行大立另一些文化的『創始』,那終究還是遠遠『不足的』!!