Raspbian процесс загрузки и таблица разделов

13

Любое хорошее описание процесса загрузки Raspberry Pi и структуры разделов диска?

Что хранится в каждом разделе (и почему)?

RPI загружается с SD-карты (сектор ноль) или прошивка считывает со структуры диска?

Я предполагаю, что, поскольку NOOBS создан для копирования нескольких файлов под любой операционной системой, прошивка 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

Ответы:

6

Мой окончательный результат перехода на SD-карту большего размера в настройках noobs выглядит следующим образом.

Я делаю резервную копию оригинального живого образа на временном внешнем диске, который используется совместно с Windows, и запасная карта памяти сделает это.

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

Вы также можете выполнить резервное копирование с помощью win32DiskImager, затем я записал образ на большую SD-карту (я увеличил размер с 8 до 16 ГБ), используя win32DiskImager.

Я загрузил только что созданную SD. На этом этапе SD сохранил те же разделы, первичные, расширенные и логичные. Так что загрузка должна работать без сбоев.

С помощью

fdisk /dev/mmcblk0

Сделайте живой скриншот текущей таблицы разделов с помощью pкоманды.

Удалите неиспользуемый и ненужный раздел № 3 (p3), расположенный в конце физического «диска» (после расширенного раздела № 2) с помощью d.

Затем смело удаляйте раздел № 2 (p2), вложенный логический раздел также исчезнет.

Воссоздайте расширенный раздел № 2, но теперь, используя все доступное пространство.
Чтобы воссоздать # 2, используйте точно такой же начальный сектор и позвольте fdiskдать вам конечный сектор. Используйте pverify и тип расширенного типа '85', а новый конечный сектор действительно больше исходного.

Создайте заново два предыдущих логических раздела: начните с логического раздела № 5 (p5); для начального сектора используйте точный сектор из предыдущего скриншота, то же самое с конечным сектором (этот логический диск не будет расти), используйте tдля установки идентификатора c(MS-DOS). Затем заново создайте раздел # 6 (p6) с тем же начальным сектором, что и раньше, но с конечным сектором, выбранным с помощью fdiskи p' id83`.

Проверьте свои записи с помощью pи, если и только если, выглядит нормально, просто напишите таблицу разделов, в wпротивном случае просто ^ C и начните снова.

Перезагрузитесь и скрестите пальцы. Raspbian может перезагрузиться дважды.

Затем просто раскройте файловую систему

resize2fs /dev/mmcblk0p6

Это конечный результат, теперь с дополнительными 8 ГБ!

 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

Итак, теперь мой конечный сектор составляет 14 442 496 из 6840 320.

Ботинок

Я знаю, что эта тема находится в другом месте, однако это полезно знать.

У Raspberry есть два встроенных процессора: GPU (графический процессор) и ARM, каждый со своей задачей. Графический процессор разделяет память с ARM, очень эффективным процессором общего назначения RISC (Reduced Instruction Set Computer), работающим в соответствии с отраслевым стандартом. Все в корпусе SoC BCM2835 (система на чипе)

После включения питания управление сначала передается графическому процессору, только ядро ​​в конце процесса загрузки будет работать на процессоре ARM.

На первом этапе графический процессор запустит встроенное программное обеспечение ПЗУ для загрузки bootcode.binв кэш-память L2 и передачи управления. bootcode.binвключит SD-карту, включит SDRAM и использует первый раздел MS-DOS, чтобы найти, загрузить и запустить 'start.elf'.

На этом этапе рассматриваются следующие файлы bootcode.binиз первого раздела MS-DOS на SD-карте:

/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' (Linux или Id '83' в жаргоне fdisk).

Наконец, 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. Вы должны понимать расширенные разделы. Попробуйте вики.

Milliways
источник
Основное внимание на моем вопросе уделяется тому, какие разделы необходимы, а какие нет, когда расширяется дисковое пространство на SD-карте NOOBS.
fcm
1
Вы нуждаетесь в них всех. Вы можете удалить некоторые файлы из раздела восстановления. Преобразование NOOBS в стандартный Raspbian может быть сделано, но требует некоторой (на самом деле совсем немного) возни. Вы МОЖЕТЕ использовать Raspbian (p6) с минимальными изменениями (в / etc / fstab) со стандартным загрузочным разделом Raspbian FAT32.
Милливэйс