宜蘭縣教育支援平台 會員登入 會員註冊 我的i教書

« 上一篇 | 下一篇 »

本來一直以為 BerryBoot 只能從網路上下載作業系統來安裝而已,而在 10/1(三)  下午與 Banana Pi  的開發工程師討論過,才發現原來 BerryBoot 的功能非常強大,可以將原本系統的 Image 檔,直接拿來使用,一張記憶卡可以安裝多種作業系統,而且系統有問題,只要修改或刪除在  data 目錄之下相對應的作業系統名稱即可,如果要測試系統,就會非常的方便。
原本一直以為直接將 Image 檔,直接放置到  image 目錄即可,但結果是只能在 BerryBoot 的開機功能表中出現,卻無法開機,所以在網路上找了一下,發現 Image 檔案要轉換過才能正常使用。
參考網站:
‪葉難: Raspberry Pi使用BerryBoot多重開機
‪How to Multi-Boot Your Raspberry Pi with BerryBoot

底下是在 Banana Pi Raspbian  下進行操作
切換到 BerryBoot 所在的目錄(另外一張記憶卡)
$ cd /media/berryboot

切換到存放各系統的目錄
$ cd images

下載系統的 Image 來進行轉換
$ sudo wget ftp://140.111.74.109/BananaPi/Raspbian_For_BananaPi_v3.1.tgz

解壓縮
$ sudo tar xvzf Raspbian_For_BananaPi_v3.1.tgz


安裝所須套件
$ sudo apt-get install kpartx squashfs-tools


將 .img 檔的第二個分割區取出來
$ sudo kpartx -av Raspbian_For_BananaPi_v3_1.img
add map loop0p1 (253:0): 0 114688 linear /dev/loop0 8192
add map loop0p2 (253:1): 0 7045120 linear /dev/loop0 122880

$ sudo mount /dev/mapper/loop0p2 /mnt
/mnt/etc/fstab 中的 /dev/mmcblk 前面加上 #
$ sudo sed -i 's/^\/dev\/mmcblk/#/g' /mnt/etc/fstab

進行轉換
把 .img 的第二個分割區抓出來並變成 SquashFS 格式(BerryBoot 支援的格式)
$ sudo mksquashfs /mnt converted_image_for_berryboot.img -comp lzo -e lib/modules
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on converted_image_for_berryboot.img, block size 131072.
[==-                                                                                                                                       ]  1538/76511   2%

卸載 /mnt 分割區
$
sudo umount /mnt
$ sudo kpartx -d Raspbian_For_BananaPi_v3_1.img

刪除 Raspbian_For_BananaPi_v3_1.img
$ sudo rm -rf  Raspbian_For_BananaPi_v3_1.img

將轉換後的檔名改名
$ sudo mv
converted_image_for_berryboot.img Raspbian_For_BananaPi_v3_1.img

將 Banana Pi 的 Raspbian 關機後,更換記憶卡,改用 BerryBoot 記憶卡開機,就可以看到成果了!
如果要加入其它的作業系統,再重複上面的步驟即可!





 
 
 
用LINE傳送

  1. Re: BerryBoot - 使用 Image 來安裝系統

    我發生下面的問題:
    kpartx: relocation error: kpartx: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02.1 with link time reference

    經google 這好像是Deian 會常發生的問題,解決方法
    sudo apt-get install lvm2
    就會更新到正確的版本,給有需要的人參考。

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 11:08

  2. Re: BerryBoot - 使用 Image 來安裝系統

    問個問題:
    因為我Debian是掛載在sata 硬碟,我要如何用此方法將提取出的 /dev/mapper/loop0p1,再轉換為 usbimage 可燒錄的格式,然後再放回1G的 sdcard中,因為我要編輯 /dev/mapper/loop0p1,讓它開機指向現有的 /dev/sda1 的Debian 系統。

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 11:26

  3. Re: BerryBoot - 使用 Image 來安裝系統

    1. 首先謝謝您在上一篇提供的資訊,我在 Raspbian 中並沒有遇到這樣的問題。
    2. 您目前用的系統是像 http://gleenders.blogspot.be/2014/08/banana-pi-boot-your-rootfs-from-sata.html 這一篇文章一樣的環境嗎?如果是的話,跟這篇文章的狀況不太一樣。
    3. 提取出 /dev/mapper/loop0p1 是系統開機的部分,轉換成 usbimage 的意思,我不太了解。因為這一個 Image 是要放在 SD,還是 SATA 硬碟 上?那麼要怎樣來開機呢?因為在 banana-pi-boot-your-rootfs-from-sata 這一篇文章中,也是第一個分割區分在 SD 上,第二個分割區放在 SSD 上。

    [回覆] 《未設定暱稱》 迴響於 04 十月, 2014 13:15

  4. Re: BerryBoot - 使用 Image 來安裝系統

    我的意思是原來的 debain 系統是有二個磁區 fat16 和 ext4 ,這樣子要用掉2g的空間,因為 ext4 已移到 sata 硬碟,所以我是不是只要準備一個 512k或1G 的sd card 來割出一個 fat16,放下開機資訊,就不用準備2g 的sd card 。

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 13:26

  5. Re: BerryBoot - 使用 Image 來安裝系統

    這樣我了解,我猜想應該和上面那篇 banana-pi-boot-your-rootfs-from-sata 文章提的一樣,不過我沒有實際做過,不知道想法有沒有錯。
    1. 在製作第一個分割區 fat16 的時候,修改uEnv.txt 這一個檔案,把 root=/dev/mmcblk0p2 改成 root=/dev/sda1。
    2. 將做好的 Image 使用 dd 或 Win32 disk Imager 燒錄到 512M/1G 的記憶卡,應該就可以用來開機,試試結果對不對了!

    [回覆] 《未設定暱稱》 迴響於 04 十月, 2014 14:02

  6. Re: BerryBoot - 使用 Image 來安裝系統

    dd 我試過,開不了機,我有mount 進來看,檔案都有進來,但是開不了機。
    Win32 disk Imager,只能針對整張 sd 卡進行,不能只對某磁區,也就是說,你備份的是8g卡,就要拿8g卡來還原,不能因為原來的檔案只有1g,就能夠用1g卡來還原。

    dd 備份檔如下
    -rw-r--r-- 1 root root 2010644480 Oct 4 14:02 ext4
    -rw-r--r-- 1 root root 20971520 Oct 4 14:00 fat16
    DD的還原程序如下
    root@bananas /mnt # dd bs=8M if=/mnt/fat16 of=/dev/mmcblk0p1
    2+1 records in
    2+1 records out
    20971520 bytes (21 MB) copied, 6.2938 s, 3.3 MB/s
    root@bananas /mnt # dd bs=8M if=/mnt/ext4 of=/dev/mmcblk0p2
    dd: error writing ‘/dev/mmcblk0p2’: No space left on device
    119+0 records in
    118+0 records out
    993001472 bytes (993 MB) copied, 229.639 s, 4.3 MB/s
    dd bs=8M if=/mnt/ext4 of=/dev/mmcblk0p2 0.00s user 11.86s system 5% cpu 3 :49.65 total

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 14:22

  7. Re: BerryBoot - 使用 Image 來安裝系統

    我猜想,會不會用 dd 的方式並沒有複製到開機磁區的資料,所以會沒有辦法開機。
    # dd bs=8M if=/mnt/fat16 of=/dev/mmcblk0p1
    底下是我可能的做法:
    1. 修改原先的 SD 上的 /dev/mmcblk0p1
    $ sudo mkdir /tmp/boot
    $ sudo mount /dev/mmcblk0p1 /tmp/boot
    $ sudo vim /tmp/boot/uEnv.txt
    修改成 root=/dev/sda1
    $ sudo umount /tmp/boot
    2. 準備另外一張 512M/1G 的 SD 卡
    $ dd if=/dev/mmcblk0p1 of=/dev/sda1

    /dev/sda1 的代號,可能會因為設備不同而有差異,我的是沒有另外接 SATA 設備,另外一張 SD 卡是接在卡碟機上。

    [回覆] 《未設定暱稱》 迴響於 04 十月, 2014 14:54

  8. Re: BerryBoot - 使用 Image 來安裝系統

    /dev/sda 是640G硬碟
    /dev/sdc1是8G SD 卡的FAT16磁區,可正常開機且會掛載640G硬碟
    /dev/sdc1是8G SD 卡的ext4磁區,已經用不到了,因為已經掛載了640G硬碟

    /mmcblk0p1是1G SD 卡的FAT16磁區
    /mmcblk0p1是1G SD 卡的ext4磁區

    root@bananas ~ # fdisk -l

    WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.

    Disk /dev/sda: 640.1 GB, 640135028736 bytes
    255 heads, 63 sectors/track, 77825 cylinders, total 1250263728 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    Disk identifier: 0xe29b96ce

    Device Boot Start End Blocks Id System
    /dev/sda1 2048 1250260991 625129472 7 HPFS/NTFS/exFAT

    Disk /dev/sdc: 7901 MB, 7901020160 bytes
    244 heads, 62 sectors/track, 1020 cylinders, total 15431680 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x6c70c806

    Device Boot Start End Blocks Id System
    /dev/sdc1 2048 43007 20480 83 Linux
    /dev/sdc2 43008 3970047 1963520 83 Linux

    Disk /dev/mmcblk0: 1015 MB, 1015808000 bytes
    4 heads, 16 sectors/track, 31000 cylinders, total 1984000 sectors
    Units = sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x0001855a

    Device Boot Start End Blocks Id System
    /dev/mmcblk0p1 2048 43007 20480 6 FAT16
    /dev/mmcblk0p2 43008 1982463 969728 83 Linux
    root@bananas ~ # dd if=/dev/sdc1 of=/dev/mmcblk0p1 bs=8M
    2+1 records in
    2+1 records out
    20971520 bytes (21 MB) copied, 5.75773 s, 3.6 MB/s
    root@bananas ~ # dd if=/dev/sdc2 of=/dev/mmcblk0p2 bs=8M
    dd: error writing ‘/dev/mmcblk0p2’: No space left on device
    119+0 records in
    118+0 records out
    993001472 bytes (993 MB) copied, 229.365 s, 4.3 MB/s
    dd if=/dev/sdc2 of=/dev/mmcblk0p2 bs=8M 0.00s user 10.81s system 4% cpu 3:49.38 total
    1 root@bananas ~ #

    不做任何mount,看起來是成功,但是1G sdcard 開不了機.。

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 15:13

  9. Re: BerryBoot - 使用 Image 來安裝系統

    dd if=/dev/sdc of=/dev/mmcblk0 bs=8M

    整張卡對整張卡進行備份還原,還是無法開機。

    [回覆] 隨風浮雲 迴響於 04 十月, 2014 15:28

  10. Re: BerryBoot - 使用 Image 來安裝系統

    不好意思,現在才回覆。
    昨天一直在製作給 BerryBoot 使用的 ArchLinux Image 但一直失敗,後來改下載別人製作好的,今天早上試了一下,是可以的,我將過程寫在下面的文章,您參考看看!
    http://blog.ilc.edu.tw/blog/blog/25793/post/83744/521703

    [回覆] 《未設定暱稱》 迴響於 05 十月, 2014 11:30

發表迴響

 暱稱 (必填)

 悄悄話

 標題

 個人網頁

 電子郵件

authimage 
 認證碼 (必填)