Proses boot raspbian dan tabel partisi

13

Adakah deskripsi yang bagus tentang proses boot Raspberry Pi dan struktur partisi disk?

Apa yang disimpan di setiap partisi (dan mengapa)?

Apakah RPI boot dari kartu SD (sektor nol) atau firmware membaca dari struktur disk?

Saya berasumsi bahwa menjadi NOOBS dibuat menyalin beberapa file di bawah O / S, firmware RPI tahu tentang (tingkat tinggi) struktur disk MS-DOS dan menemukan itu jalan ke memori SD.

Saya ingin mengkloning kartu SD yang bagus ke kartu SD yang lebih besar untuk menambah ruang yang tersedia.
Bisakah saya membuat dan mempartisi SD baru dan hanya DD setiap partisi ke perangkat baru? Partisi mana yang dibutuhkan?

The 'linux'partisi pada perangkat baru lebih besar daripada yang asli dan kemudian memperluas ruang disk?

Mungkin mengkloning ke kartu baru dan hanya memperpanjang partisi terakhir (p6) untuk menggunakan ruang yang tersedia, tapi saya tidak ingin menggunakan metode coba-coba, ingin tahu bagaimana dan mengapa.

Kenapa pertanyaanku?

Sebagian besar kartu SD RPI memiliki dua partisi (fdisk), mungkin ketika diinstal dari .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

Namun saya punya satu dengan sebanyak 6 partisi, ini adalah struktur yang diwarisi dari 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

Saya pikir ada yang salah dengan gambar ini. Dua partisi W95?

Saya hanya ingin mengkloning partisi yang tepat ke kartu baru. Saya harus banyak bekerja pada SD ini untuk memulai dari awal lagi! (BTW saya punya beberapa cadangan yang bagus).

Beberapa catatan.

Partisi 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

Partisi p2

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

Partisi 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

Partisi p4tidak ada.

Partisi 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
...

Partisi p6( partisi raspbian nyata )

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
fcm
sumber
Anda hanya dapat memiliki maksimum empat partisi 'primer' dan jika Anda membutuhkan lebih dari jumlah total partisi, Anda harus menjadi (seperti p2memiliki) partisi yang diperluas - dalam hal ini adalah partisi "Linux" dan merupakan wadah untuk sisanya yang dibutuhkan di atas 4 - dan ada lebih dari satu cara untuk mengatur partisi 'logis' di dalam partisi extended.
SlySven

Jawaban:

6

Hasil akhir saya untuk bermigrasi ke kartu SD yang lebih besar pada pengaturan noobs, adalah sebagai berikut.

Saya mencadangkan gambar hidup asli pada drive eksternal sementara, dibagikan dengan kotak windows, memory stick cadangan akan melakukannya.

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

Anda juga dapat membuat cadangan dengan win32DiskImager, lalu, saya membakar gambar ke kartu SD yang lebih besar (saya beralih dari 8 ke 16GB) kali ini, menggunakan win32DiskImager.

Saya mem-boot SD yang baru dibuat. Pada titik ini, SD masih menyimpan partisi yang sama, pemilihan pendahuluan, diperluas dan logis. Jadi boot seharusnya bekerja dengan lancar.

Menggunakan

fdisk /dev/mmcblk0

Ambil tangkapan layar langsung dari tabel partisi saat ini menggunakan pperintah.

Hapus partisi # 3 (p3) yang tidak digunakan dan tidak dibutuhkan yang terletak di akhir 'disk' fisik (setelah partisi diperluas # 2) dengan d.

Selanjutnya, dengan berani menghapus partisi # 2 (p2), partisi logis yang bersarang juga akan menghilang.

Buat kembali partisi extended # 2, tetapi sekarang, gunakan semua ruang yang tersedia.
Untuk membuat ulang # 2, gunakan sektor awal awal yang sama persis dan biarkan fdiskmemberi Anda sektor akhir. Gunakan pverifikasi dan bahwa jenisnya diperluas tipe '85' dan bahwa sektor akhir baru memang lebih besar dari yang asli.

Buat dua partisi logis sebelumnya: mulai dengan partisi logis # 5 (hal5); untuk sektor awal gunakan sektor yang tepat dari tangkapan layar sebelumnya, sama dengan sektor akhir (disk logis ini tidak akan tumbuh), gunakan tuntuk mengatur id ke c(MS-DOS). Kemudian, buat kembali partisi # 6 (hal. 6) dengan sektor awal yang sama dari sebelumnya tetapi dengan sektor akhir yang dipilih oleh fdiskdan p' id83`.

Verifikasi entri Anda dengan pdan jika dan hanya jika, kelihatannya baik saja tulis tabel partisi dengan kata wlain ^ C dan mulai lagi.

Mulai ulang dan silangkan jari Anda. Raspbian dapat reboot dua kali.

Kemudian cukup rentangkan sistem file dengan

resize2fs /dev/mmcblk0p6

Ini adalah hasil akhirnya, sekarang dengan 8GB ekstra!

 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

Jadi, sekarang sektor akhir saya adalah 14.442.496 dari 6.840.320.

Boot

Saya tahu bahwa topik ini ada di tempat lain, tetapi ini bagus untuk diketahui.

Raspberry memiliki prosesor on-board dua: GPU (Graphic Processing Unit) dan ARM, masing-masing dengan tugas yang berbeda. GPU berbagi memori dengan ARM, prosesor tujuan umum RISC (Reduced Instruction Set Computer) yang sangat efisien, menjalankan set instruksi standar industri. Semua tertutup pada BCM2835 'SoC' (Sistem pada Chip)

Setelah power pada kontrol pertama kali diberikan ke GPU, hanya kernel, pada akhir proses boot, akan berjalan pada prosesor ARM.

Pada tahap pertama, GPU akan menjalankan firmware ROM on-chip untuk memuat bootcode.binke memori cache L2 dan melewati kontrol. bootcode.binakan mengaktifkan kartu SD, mengaktifkan SDRAM, dan menggunakan partisi MS-DOS pertama, untuk menemukan, memuat, dan menjalankan 'start.elf'.

Pada titik ini, file-file berikut dipertimbangkan oleh bootcode.bindari partisi MS-DOS pertama pada Kartu SD:

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

Ada sejumlah opsi yang dapat disesuaikan config.txt. Anda dapat mengedit file yang memasang SD di komputer eksternal atau hanya mengedit di unit yang sedang berjalan:

nano /boot/config.txt

Perubahan khas pada config.txt terkait dengan overclock , HDMI , ukuran layar , aspek , kamera , mengatur alamat MAC Anda dll.

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

Seperti yang Anda lihat, partisi boot yang ditunjuk, tempat kernel.imgboot adalah / dev / mmcblk0p6 dan ini adalah partisi kedua yang diperlukan pada kartu SD Anda, diformat sebagai 'ext4' (Linux atau Id '83' di fdisk lingo).

Akhirnya, start.elfakan memuat dan menjalankan kernel.img, kernel linux Anda.

Anda dapat (harus?) Memperbarui kernel dengan rpi-update; jika tidak ada saja apt-get install rpi-update).

catatan: sudoawalan dihapus untuk singkatnya.

fcm
sumber
3

Jika Anda Google untuk proses Boot Raspberry PI Anda akan menemukan banyak, termasuk Apa urutan boot? (telah ada beberapa perubahan kecil).

What is stored on each partition (and why)? Ini bervariasi, tergantung pada bagaimana pengaturannya, dan distribusi apa yang digunakan.

Does the RPI boot from the SD card (sector zero) or the firmware reads from the disk structure? Tidak.

Can I create and partition a new SD and just DD each partition to the new device? Iya. Meskipun Anda mungkin lebih baik untuk mengkloning kartu dan memperluas partisi.

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img Sementara Raspbian melakukannya, partisi FAT32 biasanya dimulai pada 8192, yang ideal untuk Kartu SD. (Partisi harus diletakkan di batas Erase Block Group 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. Anda perlu memahami partisi yang diperluas. Coba Wiki.

Milliways
sumber
Fokus pada pertanyaan saya adalah partisi apa yang diperlukan dan partisi apa yang tidak ketika memperluas ruang disk pada SD NOOBS.
fcm
1
Anda membutuhkan semuanya. Anda dapat menghapus beberapa file di partisi pemulihan. Mengubah NOOBS menjadi Raspbian standar dapat dilakukan, tetapi membutuhkan beberapa (sebenarnya cukup sedikit) mengutak-atik. Anda BISA menggunakan Raspbian (p6) dengan perubahan minimal (ke / etc / fstab) dengan partisi boot Raspbian FAT32 standar.
Milliways