使用BerryBoot使树莓派支持多系统启动

20140125122656636-0
如果你想花最短的时间更换系统卡并且拥有更多的时间在你的树莓派的使用上, 安装BerryBoot的multi-boot manager可使在一张SD卡上实现多系统的选择启动。 以下我们将详细讲解BerryBoot是如何实现树莓派多系统的:

我们为什么要这样做?

BerryBoot是一款基于树莓派启动的启动管理工具, 它最大的优势是可以在不通过SD卡的前提下在多个系统中选择启动, 你既可以将系统存放在卡上,也可以, 如果你需要更多空间的话,将系统运行在外接的硬盘上并配置BerryBoot只将SD卡作为一个启动器。
同时BerryBoot配置工具使得下载适应树莓派的稳定linux系统更容易。目前BerryBoot支持的树莓派linux系统版本有:

  • BerryWebserver (Webserver Bundle: Lighttpd + PHP + SQLITE)
  • Berry Terminal (LTSP/Edubuntu Thinclient)
  • Raspbian (Debian Wheezy)
  • MemTester
  • OpenElec (Media Center Software)
  • Puppy Linux
  • RaspRazor (Unofficial Rasbian branch, lots of programming tools)
  • Sugar (The One-Laptop-Per-Child OS)

除了上述的这些版本以外, 你也可以添加的自制的linux版本到BerryBoot中,后文会详细介绍如何手动添加新的系统。
总之,如果你不想用不同的SD卡存储不同的树莓派系统,并且省掉更换不同系统SD卡的繁琐, BerryBoot绝对是一个一款能帮你解决掉这些问题的理想工具。

我们需要准备什么?

你需要一个树莓派, 相对应的外接设备, 一个可用的网络. 我们建议读者先阅读关于初识树莓派的文章,确保读者已经具备所有关于树莓派的基础知识(比如如何给树莓派供电和基础的配置)。

除了上述需要的硬件配置以外, 读者同时需要下载BerryBoot的安装文件:
BerryBoot Installer
从下载的.zip的压缩文件中解压并安装BerryBoot到经过FAT格式格式化过的SD卡中。

配置BerryBoot

当你下载好安装文件并且解压到你的SD卡后, 将SD卡插入树莓派中并接上电源启动它, 你会看到短暂的启动过程并最终显示以下的配置界面:
20140125122656925
花些时间调整屏幕显示(看屏幕上方和下方是否出现绿色的校准条来选择是否选择或者撤销overscan选项)。 设置你的网络连接类型(network connection)为有线(wired)或者无线(Wi-Fi)。最后设置的你的键盘布局。
如果你选择了无线连接你的网络,安装程序会让你选择连接的无线网络名称和相应的密码。
注意:这里的无线网络连接设置只适用于BerryBoot安装过程,一旦你安装了树莓派的linux系统比如Raspbian,你需要在Raspbian再次设置你的无线网络连接。
当你链接上网络后,安装程序会让你选择安装树莓派系统的位置(SD卡或是外接的硬盘):
20140125124134498
这里默认的是SD卡, 如果你想将树莓派的系统安装在外接的闪存或是硬盘上,现在就连接上它们。一旦显示出你连接上的闪存或者硬盘,选择并点格式化键(Format), 注意这里格式化会清楚掉所有闪存或者硬盘上的内容,请格式化前自行备份。
大约一分钟后, 会弹出一个添加系统(Add OS)的窗口中, 这里你可以选择安装到BerryBoot卡上的第一个系统。 这里我们以安装Raspbian为例, 点击确认(OK)进行安装。
20140125122656445
一旦Raspbian的安装镜像文件下载并安装完成后, BerryBoot的Menu Editor就会弹出并显示以下内容:
20140125122656464
在这个menu editor中,你可以进行多项操作。你可以添加(Add OS)新的系统或者移除(Delete)现有的系统, 同样的你可以选择默认的启动系统(Make default)。你可以编辑(Edit)每一个单独系统的属性比如更改名称或是内存的位置。你可以在这里复制(Clone)系统(比如在Raspbian上运行两个不同的项目)。有也可以备份(Backup)整个SD卡或者外接存储设备中的单独的某一个系统。
除了上述的这些外,你可以进行更高级的配置(在窗口上面最后的小箭头处), 比如BerryBoot的密码设置, 修复坏损的文件系统, 转换使用命令行窗口进行设置。
上面的这些都是BerryBoot很好的功能, 但是我们这里的重点是添加一个新的系统。点击添加系统(Add OS), 屏幕转回到刚刚的添加系统(Add OS)的窗口中, 现在我们要再添加OpenELEC到我们的BerryBoot系统启动项中。选择并点击确认。
当第二个系统安装完毕后,你就可以在Menu Editor中选择默认的启动系统了, 这里我们选择Raspbian做为我们默认的启动系统:
20140125122656822
到这,我们就可以退出Menu Editor开始我们的多系统选择启动了。 点击退出(Exit)按钮。一会就会弹出以下的BerryBoot menu窗口
20140125122656405
如果在之前的配置中你已经选择了默认的启动系统, 这里会在倒数后自动启动它。如果你没有选择默认的系统, BerryBoot会停在这里窗口直到用户做出选择要启动的系统。默认的倒数时间长度为10秒。
如果你想更改默认的倒数时间长度的话可以在这里点击右下角的编辑菜单(Edit menu)按钮, BerryBoot会转向menu editor窗口。点击右上角的高级配置(Advanced Configuration)按钮,编辑uEnv.txt文件中‘bootmenutimeout’的值。
无论你是否改变这个值,BerryBoot menu总会你在你启动,关闭或是重启树莓派时最先看到。你可以通过键盘,鼠标来选择要启动的系统版本。如果你将树莓派通过HDMI线连上家中的支持
CEC(Consumer Electronics Control)的媒体中心的电视,你也要可以通过对应的遥控器来选择你想启动的系统项。

手动添加系统到BerryBoot系统启动项中

20140125122656938-0
当你只是使用那些BerryBoot中自带的镜像linux系统版本时,比如Raspbian和Puppy Linux, 安装只是简单的点击和选择确认。如果你想试一些非常规的新系统可能就会变得有些棘手。
在BerryBoot中添加新的linux系统版本时,需要先用SquashFS编译这个linux系统并获得它的镜像文件.IMG。你可以通过以下的三种方式获得这个文件。
首先,最简单的方法就是从BerryBoot官网中获取那些没有正式添加到安装文件中的linux系统镜像文件, 这些文件可以从这里获得,这些镜像文件可以直接使用不需要通过SquashFS的编译。
其次,在BerryBoot官网上没有的但是在树莓派的官网上提供的linux系统镜像文件,同样的可以不通过SquashFS的编译直接使用添加到BerryBoot中。
最后,例如像Raspbmc这样的需要用户使用安装工具直接下载到树莓派上并在树莓派上进行安装的linux版本。你需要创建一个SD卡的镜像文件来添加到BerryBoot中,如何创建一个卡的镜像文件点击这里
对于.IMG格式的文件添加(无论是下载的还是创建的),你都需要通过linux系统来使用SquashFS先进行编译。因为SquashFS只有在linux的系统下运行最为稳定,所以这里我们也只介绍在linux系统下如何使用SquashFS。
如果你现在用的linux版本中没有安装SquashFS, 在terminal里面输入以下指令下载并安装SquashFS:

sudo apt-get install squashfs-tools

将含有镜像文件的SD卡或者USB链接到运行linux的主机上进行.IMG格式文件转换。这里我们将用NewBerryBoot.img为例,在命令行输入一下指令:

sudo kpartx -av NewBerryBoot.img

kpartx命令用于创建分区表的设备映射, -av 用于添加映射和映射的详细内容,这样便于我们查阅输出。 这时的输出类似如下的内容:

add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1
add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784

第二个也是最大的一个分区 loopOp2就是我们想要的存有linux系统的分区, 在你的镜像文件中分区大小可能会有些不同(比如最大的一个是loop3p2),记录下最大的分区名字,输入如下的指令:

sudo mount /dev/mapper/loop0p2 /mnt
sudo sed -i ‘s/^\/dev\/mmcblk/#/g’ /mnt/etc/fstab
sudo mksquashfs /mnt converted_image_for_berryboot.img -comp lzo -e lib/modules
sudo umount /mnt
sudo kpartx -d NewBerryBoot.img

上述一系列的指令使得我们想要系统分区被挂载,并且从原分区中提取出文件系统表格,接着使用SquashFS来重建这个分区的.IMG文件(去掉不同系统文件共享文件lib/modules),最后撤销挂载的分区并且删除相应的映射。
这之后,我们可以回到温馨可爱的BerryBoot的图形界面了。无论你是下载的已经处理好的.IMG文件还是自己创建的独有的.IMG文件,现在是时候将它们添加到BerryBoot中了。
连接上存有新建的.IMG文件的存储设备(若是SD卡,请连接相应的读卡器)到树莓派上或是连接到USB扩展器上。 启动含有BerryBoot SD卡的树莓派,在启动选择菜单里面,选择编辑(Edit)启动BerryBoot的menu editor。
20140125122656958
如图所示,就可以添加你新建的.IMG文件了。
选择Copy OS from USB stick(从USB设备中拷贝系统), 随后.IMG文件选择窗口就会弹出:

你可能会注意到在最底层文件类型的选择上会20140125122656628有些奇怪的扩展名(.img128, .img192)。当生成添加到BerryBoot的镜像文件的时候你可以选择文件的扩展名为128/192/224/240来指示BerryBoot你想要分配哪块内存区域给这个新添加的系统。如果你没有特意指定也不用担心,你同样可以在BerryBoot的menu editor的Edit选项里面进行内存分布的设定。
当你选择并打开你新建的.IMG文件后就可以暂时放松一下了,.IMG文件在这个时候会被解包并安装。这之后,你会在BerryBoot的menu editor中看到新添加的系统:
20140125122656868
成功!现在我们快速的回顾一下这个章节,三种获取.IMG文件并放入BerryBoot的方法(从最稳定的版本到相对不太稳定的版本):从BerryBoot的官网上获取的但是不在BerryBoot安装包中的linux版本,通过SquashFS处理现有.IMG文件,或是先建立SD卡中现有的系统的.IMG文件,再经过SquashFS处理。当然越是不太被官网认定的版本越容易出现棘手的问题。我们的项目开发一员Sam Nazarko就遇到过一个问题,在使用SquashFS重建Raspbmc的.IMG文时系统就崩溃了。所以读者在自己试验的同时也要留个心(无论结果怎么都请留个言,这将对后面想要尝试应用BerryBoot的同学有很大的帮助)
本文由 极客范 – tien 翻译自 Jason Fitzpatrick

这是一篇发布于 10年 前的文章,其中的信息可能已经有所发展或是发生改变,请了解。


4 评论

  1. 那要是我不想丢掉原来SD卡里的ubuntu mate,在这张卡上面能否加入第二个系统如raspmbc,而不影响前一个系统里面的东西,可以吗?

1 Trackback / Pingback

  1. Berryboot安装 – Rehtt的博客

发表评论

你的邮件地址不会公开


*