我知道不可能直接从外部USB记忆棒/驱动器引导,而是必须从SD卡引导,然后外部设备才能接管。进行此设置的最简单,首选的方法是什么,然后从SD卡启动,然后由外部设备接管?

#1 楼

如果您在Pi上运行了现有的操作系​​统,那么首先了解是否支持USB设备会很有用。您可以像平常一样通过安装它来做到这一点:

mount /dev/sda1 /mnt 


如果失败,那么您将无法在不启用内核模块的情况下将USB设备用作根分区。它。为此,您可能需要编译自己的内核。

如果成功,则可以通过对Pi使用的启动参数进行一些调整来正常工作:

现有映像,打开cmdline.txt,可以在引导分区上找到它,然后输入以下行:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 
root=/dev/sda1 rootfstype=ext4 rootwait text


然后,您要做的就是将该映像闪存到SD卡并启动Pi。如果一切顺利,则Pi引导时,/dev/sda1应该是USB驱动器的位置,因此,它应尝试使用该位置作为root用户。 rootwait参数很重要,因为它会使引导过程挂起,直到识别出USB驱动器为止。没有它,Pi可能会抱怨该位置不存在。

我建议您将根分区从现有的Raspberry Pi映像复制到USB驱动器,然后使用该分区从中启动。

如果您需要更多信息,请告诉我。

评论


+1好答案。控制台是否不应该已经存在?

–亚历山大·张伯伦
2012年7月21日在14:02

另外,您可以在命令行上使用UUID吗?

–亚历山大·张伯伦
2012年7月21日在15:27

是的,我提供了整个文件,您在哪里谈论使用UUID?

–活动
2012年7月21日在18:01

非常感谢Jivings,我将正式图像“刷”到了USB记忆棒中,然后将内容从FAT分区复制到SD卡并调整了cmdline.txt。在我的情况下,根分区就是/ dev / sda2,因为/ dev / sda1是USB记忆棒上的(未使用的)启动分区。在我的情况下,我不需要rootwait,但是很高兴知道这个参数!

–stefan.at.wpf
2012年7月21日在18:14



@ stefan.at.wpf(和Jivings)您可以使用UUID代替/ dev / sdx-至少在/ etc / fstab /中使用-然后x的变化并不重要。

–亚历山大·张伯伦
2012年7月22日在16:28

#2 楼

进行此设置的最简单方法是使用BerryBoot。它支持通过一个不错的GUI界面直接从USB记忆棒(或SD卡本身)上的一个或多个图像进行安装或安装。

要进行设置,您只需要做的就是将〜70MB的安装文件复制到FAT32格式的SD卡上,将其插入设备并启动。它甚至还包含预配置映像的列表,它可以通过以太网或wi-fi连接自动下载并安装。映像,如果要在以后添加新映像或更改默认值,只需在引导过程中按Enter键即可重新配置!

评论


将图像移至SD卡?我以为我们想将其安装在USB记忆棒上?

– Suhaib
13年5月12日在21:57

正如OP所述,无法直接从Raspberry Pi上的USB记忆棒引导-您需要安装了引导加载程序的SD卡,一旦启动该程序即可将该过程移交给另一台设备。

–内森·邓恩(Nathan Dunn)
13年5月14日在0:19



#3 楼

好的,请澄清-

@Jivings答案-

有几种方法可以在fstab中引用磁盘。使用/ dev / sdXX可能并不总是安全的,因为不能保证scsi磁盘出现的顺序。

我不知道,启动配置是否能理解基本设备标签以外的内容。但是,“ root = / dev / sda1”是一个抽象,因此理论上root = LABEL = TEST可能有效。我需要调查。

如果我不太清楚,我深表歉意。很明显,我在向新手介绍linux方面有一些技巧上的收获。

评论


Jivings:您能为我们的nubies解释一下comand行示例中的一些参数吗?谢谢。

–迈克尔·莫里亚蒂
16-9-29在2:12

他从未提到过fstab。目标设备/分区名称是内核参数。我相信现代内核也可以使用其他命名约定,例如UUID,特别是如果它们具有initrd / initramfs模块。

– Jiggunjer
17年1月23日在4:53