2012/12/23

Raspberry Pi使用BerryBoot多重開機

支援Raspberry Pi的作業系統很多,眼花撩亂不可勝數,我主要使用官方釋出的Raspbian,但時不時也想嘗試看看別的,若一張記憶卡只能裝一個作業系統的話,有點不方便,還好,有了BerryBoot後,就能在一張記憶卡內裝入多個作業系統。

先到官方網站下載BerryBoot,我下載的是berryboot-20121126.zip。

準備一張SD記憶卡,因為BerryBoot將會重新分割並格式化記憶卡(為了安裝多個作業系統), 所以,如果你記憶卡裡有重要的資料,請備份。

底下是我的8G記憶卡,重新格式化後只有一個分割區。


將berryboot-20121126.zip解壓縮後的所有檔案通通複製到記憶卡裡,不需要使用特別的燒錄工具,內容如下:


然後放進Raspberry Pi開機,看到如下畫面,選擇Wired或Wifi網路連線方式。


然後選擇要把作業系統灌到哪裡去,可以灌到記憶卡裡,也可以灌到外接的USB隨身碟或硬碟裡。但我只有灌到記憶卡裡。

注意,雖然可以灌到外接硬碟裡,但Raspberry Pi開機時,還是必須插上記憶卡。

然後BerryBoot會先暫時把自己複製到記憶體,然後分割、格式化記憶卡,再把自己複製回記憶卡。


選擇想要安裝的作業系統發行套件,從網路下載安裝。


下載中。


基本上,每個Raspberry Pi的Linux發行套件映像檔裡有兩個分割區,一個通常稱為boot分割區,放韌體bootloader、一些設定檔、與Linux核心,另一個是放根檔案系統(各種應用軟體、設定檔、驅動程式、等等)。BerryBoot的原理是:共用boot分割區,然後把發行套件映像檔的第二個分割區獨立置放。

我先安裝了Raspbian。


然後又安裝了OpenELEC與Puppy。


以上是從網路下載BerryBoot提供的發行套件,但是,它提供的Raspbian不是最新的,那我是不是可以自行安裝呢?

可以,但是滿麻煩的,你必須把.img檔的第二個分割區取出來,放在USB隨身碟(或記憶卡+讀卡機)裡,然後由BerryBoot安裝。

要把.img檔的第二個分割區取出來,需要一台Linux機器,並且安裝了kpartx與mksquashfs。

$ sudo apt-get install kpartx squashfs-tools

然後,底下指令可將.img檔的第二個分割區取出來。
我以Raspberry Pi官方的2012-12-16-wheezy-raspbian.img為例。

$ sudo kpartx -av 2012-12-16-wheezy-raspbian.img
add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1
add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784

$ sudo mount /dev/mapper/loop0p2 /mnt

$ sudo mksquashfs /mnt converted_image.img -comp lzo -e lib/modules

$ sudo umount /mnt

$ sudo kpartx -d 2012-12-16-wheezy-raspbian.img

以上指令就是把.img的第二個分割區抓出來並變成SquashFS格式(BerryBoot支援的格式),所以我得到了converted_image.img。

將converted_image.img放進USB隨身碟(或外接硬碟),插進Raspberry Pi的USB埠,然後在開機時,長按"Add OS",可選擇"Copy OS from USB stick"。


選擇檔案。


哇,灌好囉。


然後啟動它試試看吧。


哇哩咧,失敗了,嗯,fsck、/run/rootdev、啥?


我也懶得弄了,因為畢竟BerryBoot還不能說是真正的多重開機,它會共用韌體bootloader、Linux核心與共享程式庫,所以不能安裝其他種類的作業系統,例如RISC OS與Plan 9。

將來應該會有人開發出更強的多重開機程式吧。

8 comments:

  1. Anonymous11/1/13 11:53

    您好,BerryBoot 有更新到 2.0 的版本,小弟有安裝 Wheezy 與 OpenELEC 都均為 2012.12 的版本,只是小弟還尚未找到超頻的方法,因為 raspi-config 無 overclock 的選項~

    ReplyDelete
    Replies
    1. 我也看到2.0版了,還沒試,網站尚找不到新增功能列表。

      超頻嗎,試試看手動編輯config.txt。

      Delete
  2. Anonymous22/2/13 14:55

    手動編輯 config.txt 是可行的,只是電壓要再加壓 0.1V 方能穩定,還有 berryboot 有更新到 berryboot-20130213.zip 的版本喔~

    P.S. Raspberry Pi 也更新到 2013-02-09-wheezy-raspbian.zip 了~

    ReplyDelete
  3. Anonymous11/7/13 21:12

    用這方式開機 能超頻嗎?

    ReplyDelete
    Replies
    1. 有config.txt就可以。

      Delete
  4. $ sudo mksquashfs /mnt converted_image.img -comp lzo -e lib/modules
    有個問題請教,關於lib/modules是從這段是從2012-12-16-wheezy-raspbian.img來出來的library對吧?另外關於-comp lzo -e看不太明白。請指教。

    ReplyDelete
    Replies
    1. -comp lzo表示使用LZO壓縮演算法。
      -e代表要排除掉哪些檔案與目錄。

      Delete
  5. 轉換後的檔案屬性好像是唯讀的,
    所以還要用sudo chmod 777 *.img改掉屬性,
    這樣才可以copy到USB Disk,讓Berryboot能夠安裝開機。

    ReplyDelete