Raspbian启动过程和分区表


13

对Raspberry Pi引导过程和磁盘分区结构有什么好的描述?

每个分区上存储了什么(为什么)?

RPI是从SD卡引导(扇区为零)还是从磁盘结构读取固件?

我假设是由NOOBS创建的,可以在任何O / S下复制一些文件,因此RPI固件知道(高级)MS-DOS磁盘结构,并发现了将其存入SD内存的方式。

我想将一个好的SD卡克隆到更大的SD卡上,以扩展可用空间。
我可以创建一个新的SD并将其分区,然后仅将每个分区DD到新设备上吗?需要哪些分区?

'linux'新的设备上的分区是比原来大,然后扩展磁盘空间?

也许克隆到一张新卡中,并仅扩展最后一个分区(p6)以使用可用空间,但是我不想使用“尝试并出错”方法,想知道如何以及为什么。

为什么是我的问题?

大多数RPI SD卡都有两个(fdisk)分区,可能是从.img安装的

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1        2048   155647   153600   75M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      157696 15351807 15194112  7.3G 83 Linux

但是我有一个多达6个分区,这是从NOOBS继承的结构。

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1675781      833795    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1679360    15499263     6909952   85  Linux extended
/dev/mmcblk0p3        15499264    15564799       32768   83  Linux
/dev/mmcblk0p5         1687552     1810431       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1818624    15499263     6840320   83  Linux

我认为这张图片有些问题。两个W95分区?

我只想将正确的分区克隆到新卡上。我必须在正在运行的SD上进行大量工作才能重新开始!(顺便说一句,我有一些很好的备份)。

一些注意事项。

划分 p1

-rwxr-xr-x 1 root root  18K 2015-03-09 04:45 bootcode.bin
-rwxr-xr-x 1 root root 2.2K 2015-03-09 04:45 INSTRUCTIONS-README.txt
drwxr-xr-x 4 root root  32K 2015-03-09 04:45 os
...
-rwxr-xr-x 1 root root 542K 2015-03-09 04:45 recovery.elf
-rwxr-xr-x 1 root root    0 2015-03-09 04:45 RECOVERY_FILES_DO_NOT_EDIT
-rwxr-xr-x 1 root root 2.1M 2015-03-09 04:45 recovery.img
-rwxr-xr-x 1 root root  20M 2015-03-09 04:45 recovery.rfs
-rwxr-xr-x 1 root root 9.5K 2015-03-09 04:45 riscos-boot.bin
drwxr-xr-x 2 root root 8.0K 2015-12-05 18:13 System Volume Information

划分 p2

mount: /dev/mmcblk0p2: can't read superblock

划分 p3

-rw-r--r-- 1 root root 274 1969-12-31 19:18 installed_os.json
drwx------ 2 root root 12K 1969-12-31 19:00 lost+found
-rw-r--r-- 1 root root  86 1969-12-31 19:18 noobs.conf

分区p4不存在。

分区p5

-rwxr-xr-x 1 root root 9.7K 2015-12-01 20:17 bcm2708-rpi-b.dtb
...
-rwxr-xr-x 1 root root  18K 2015-12-01 20:17 bootcode.bin
-rwxr-xr-x 1 root root  120 1979-12-31 19:00 cmdline.txt
-rwxr-xr-x 1 root root 1.5K 2015-11-23 09:01 config.txt
-rwxr-xr-x 1 root root  19K 2015-10-14 05:43 COPYING.linux
...
-rwxr-xr-x 1 root root 9.5K 2015-12-01 20:17 fixup_x.dat
-rwxr-xr-x 1 root root  137 2015-02-16 09:57 issue.txt
-rwxr-xr-x 1 root root 3.9M 2015-12-01 20:17 kernel7.img
...
-rwxr-xr-x 1 root root 591K 2015-12-01 20:17 start_cd.elf
...

分区p6真正的 树莓派分区)

drwxr-xr-x   2 root     root     4.0K 2015-07-28 21:40 bin
drwxr-xr-x   2 root     root     4.0K 2015-02-15 09:09 boot
drwxr-xr-x 119 root     root     4.0K 2015-12-23 15:36 etc
drwxr-xr-x   4 root     root     4.0K 2015-12-19 20:53 home
drwxr-xr-x  15 root     root     4.0K 2015-12-20 22:08 lib
drwx------   2 root     root      16K 2015-02-15 06:21 lost+found
....
drwxr-xr-x  12 root     root     4.0K 2015-11-04 15:18 var

您最多只能有四个“主”分区,如果您需要的分区数量超过了该总数,则必须成为p2一个扩展分区(例如具有一个扩展分区)-在这种情况下为“ Linux”分区,它是其余分区的容器大于4的分区-在扩展分区内组织这些“逻辑”分区的方法不止一种。
SlySven

Answers:


6

我在noobs设置下迁移到更大的SD卡的最终结果如下。

我将原始实时图像备份在一个临时的外部驱动器上,并与Windows盒共享,备用记忆棒将完成此操作。

dd if=/dev/mmcblk0 of=~/backup.img

您还可以使用win32DiskImager进行备份,然后,这次我使用win32DiskImager将映像刻录到更大的SD卡(从8GB扩展到16GB)中。

我启动了新创建的SD。此时,SD仍保留相同的分区,主分区,扩展分区和逻辑分区。因此启动应能顺利进行。

使用

fdisk /dev/mmcblk0

使用p命令获取当前分区表的实时屏幕截图。

使用删除位于物理“磁盘”末尾(扩展分区#2之后)的未使用且不需要的分区#3(p3)d

接下来,勇敢地删除分区2(p2),嵌套的逻辑分区也将消失。

现在,使用所有可用空间重新创建扩展分区2。
要重新创建#2,请使用完全相同的起始原始扇区,然后fdisk为您提供结束扇区。使用pverify,并且类型为扩展类型“ 85”,并且新的结束扇区确实大于原始扇区。

重新创建前面的两个逻辑分区:从#5逻辑分区(p5)开始;对于起始扇区,请使用上一个屏幕截图中的确切扇区,与终止扇区相同(此逻辑磁盘将不会增长),用于t将ID设置为c(MS-DOS)。然后,重新创建分区#6(p6),该分区的起始扇区与以前相同,但终止扇区由fdiskp' id选定。

使用p和仅当看起来正常时验证输入,使用w^ C 写入分区表,否则仅重新输入^ C。

重新启动并用手指交叉。Raspbian可能会重启两次。

然后只需使用扩展文件系统

resize2fs /dev/mmcblk0p6

这是最终结果,现在额外增加8GB!

 Device Boot             Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192     1675781      833795    e  W95 FAT16 (LBA)
/dev/mmcblk0p2         1679360    30703615    14512128   85  Linux extended
/dev/mmcblk0p5         1687552     1810431       61440    c  W95 FAT32 (LBA)
/dev/mmcblk0p6         1818624    30703615    14442496   83  Linux

因此,现在我的末尾部门为6,840,320,而最终的部门为14,442,496。

靴子

我知道这个话题在其他地方,但是这是个好消息。

Raspberry有两个板载处理器:GPU(图形处理单元)和ARM,每个都有不同的任务。GPU与运行工业标准指令集的非常高效的通用RISC(精简指令集计算机)处理器ARM共享内存。全部封装在BCM2835'SoC '(片上系统)中

上电后,首先将控制权交给GPU,只有内核在引导过程结束时才能在ARM处理器上运行。

在第一阶段,GPU将运行片上ROM固件以加载bootcode.bin到L2高速缓存中并通过控制。 bootcode.bin将启用SD卡,启用SDRAM,并使用第一个MS-DOS分区来查找,加载并运行“ start.elf”。

此时,bootcode.bin从SD卡上的第一个MS-DOS分区考虑以下文件:

/boot/config.txt,  
/boot/cmdline.txt  (kernel parameters)
/boot/bcm????-rpi-*.dtb  (device dependent) 

有很多可以自定义的选项config.txt。您可以编辑将SD安装到外部计算机上的文件,也可以只在运行单元上进行编辑:

nano /boot/config.txt

config.txt的典型更改与超频HDMI屏幕大小宽高比摄像头,设置您的MAC地址等有关。

nano cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

如您所见,指定的引导分区,kernel.img将在其中引导的是/ dev / mmcblk0p6,这是SD卡上所需的第二个分区,格式为“ ext4”(在fdisk lingo中为Linux或ID为“ 83”)。

最后,start.elf将加载并运行kernel.img您的Linux内核。

您可以(应该?)使用rpi-update; 更新内核。(如果不存在apt-get install rpi-update))。

注意:sudo为简洁起见,删除前缀。


3

如果您通过Google搜索Raspberry PI Boot进程,则会发现很多内容,包括什么启动顺序?(发生了一些小的变化)。

What is stored on each partition (and why)? 这取决于设置方式和使用的发行版。

Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure? 没有。

Can I create and partition a new SD and just DD each partition to the new device? 是。尽管您最好克隆卡并扩展分区。

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img 尽管Raspbian确实如此,但是FAT32分区通常从8192开始,这是SD卡的理想选择。(分区应位于4M擦除块组边界上。)

However I have one with as many as 6 partitions, some overlapping other sectors, perhaps this is the structure when started/inherited from NOOBS. 您需要了解扩展分区。尝试Wiki。


在我的问题上,重点是扩展NOOBS的SD上的磁盘空间时需要哪些分区,而不需要哪些分区。
fcm

1
您都需要它们。您可以删除恢复分区上的某些文件。可以将NOOBS转换为标准Raspbian,但是需要一些(实际上是很多)摆弄。您可以通过标准Raspbian FAT32引导分区对Raspbian(p6)进行最小的更改(对/ etc / fstab进行更改)。
Milliways
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.