Процес завантаження програми 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

Відповіді:


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дати вам кінцевий сектор. Використовуйте pперевірте, що тип розширений тип '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 з 6 840 342.

Черевик

Я знаю, що ця тема в іншому місці, проте це добре знати.

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

Після ввімкнення живлення на управління спочатку передається GPU, тільки ядро, в кінці процесу завантаження, буде працювати на процесорі ARM.

На першому етапі GPU запустить мікропрограмне забезпечення ROM на мікросхемі для завантаження 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 lingo).

Нарешті, start.elfзавантажить та запустить kernel.imgваше ядро ​​Linux.

Ви можете (повинні?) Оновити ядро ​​за допомогою rpi-update; якщо не просто там apt-get install rpi-update).

Примітка: sudoпрефікс видалено для стислості.


3

Якщо ви перейдете на Google для процесу завантаження Raspberry PI, ви знайдете безліч, у тому числі Яка послідовність завантаження? (відбулися незначні зміни).

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. (Розділи повинні бути розміщені на межі групи "Стерти блокчейн 4М".)

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.


Моє питання зосередив увагу на тому, які потрібні розділи, а які не під час розширення дискового простору на SD-диску NOOBS.
fcm

1
Вам вони потрібні всі. Ви можете видалити деякі файли з розділу відновлення. Перетворення NOOBS в стандартний Raspbian можна зробити, але вимагає певної (насправді зовсім небагато) викрутки. МОЖНА використовувати Raspbian (p6) з мінімальними змінами (на / etc / fstab) зі стандартним завантажувальним розділом Raspbian FAT32.
Міллівейс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.