กระบวนการบูต Raspbian และตารางพาร์ติชัน


13

มีคำอธิบายที่ดีเกี่ยวกับกระบวนการบูต Raspberry Pi และโครงสร้างพาร์ติชั่นดิสก์หรือไม่?

สิ่งที่เก็บไว้ในแต่ละพาร์ติชัน (และทำไม)

RPI บูตจากการ์ด SD (ศูนย์เซกเตอร์) หรือเฟิร์มแวร์อ่านจากโครงสร้างดิสก์หรือไม่

ฉันคิดว่าการที่ NOOBS สร้างการคัดลอกไฟล์ไม่กี่ไฟล์ภายใต้ O / S ใด ๆ เฟิร์มแวร์ RPI รู้เกี่ยวกับโครงสร้างดิสก์ MS-DOS (ระดับสูง) และหาทางเข้าไปในหน่วยความจำ SD

ฉันต้องการโคลนการ์ด SD ที่ดีกับการ์ด SD ขนาดใหญ่เพื่อขยายพื้นที่ว่าง
ฉันสามารถสร้างและแบ่ง SD ใหม่และเพียงแค่แบ่งแต่ละพาร์ติชันไปยังอุปกรณ์ใหม่ได้หรือไม่ พาร์ติชั่นใดที่จำเป็น?

'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 ที่รันอยู่นี้เพื่อเริ่มต้นใหม่อีกครั้ง! (BTW ฉันมีการสำรองข้อมูลที่ดีไม่กี่)

บางบันทึก

กั้น 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( พาร์ติชันraspbian จริง )

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 มีดังนี้

ฉันสำรองข้อมูลภาพสดดั้งเดิมบนไดรฟ์ภายนอกชั่วคราวที่ใช้ร่วมกับกล่องหน้าต่างหน่วยความจำสำรองจะทำ

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

คุณสามารถสำรองข้อมูลด้วย win32DiskImager จากนั้นฉันเขียนรูปลงในการ์ด SD ขนาดใหญ่ (ฉันไปจาก 8 ถึง 16GB) ในครั้งนี้โดยใช้ win32DiskImager

ฉันบูท SD ที่สร้างขึ้นใหม่ เมื่อมาถึงจุดนี้ SD ยังคงเก็บพาร์ทิชันเดียวกันขยายและตรรกะ ดังนั้นการบูตควรทำงานได้อย่างราบรื่น

การใช้

fdisk /dev/mmcblk0

ถ่ายภาพหน้าจอสดของตารางพาร์ติชันปัจจุบันโดยใช้pคำสั่ง

ลบไม่ได้ใช้และไม่จำเป็นพาร์ทิชัน # 3 (p3) ตั้งอยู่ที่ปลายของ 'ดิสก์' ทางกายภาพ (หลังจากที่ขยายพาร์ทิชัน # 2) dด้วย

ถัดไปลบพาร์ติชัน # 2 (p2) อย่างเข้มงวดโลจิคัลพาร์ติชันที่ซ้อนกันจะหายไปเช่นกัน

สร้างพาร์ติชันเสริมอีกครั้ง # 2 แต่ตอนนี้ใช้พื้นที่ที่มีอยู่ทั้งหมด
หากต้องการสร้าง # 2 อีกครั้งให้ใช้เซกเตอร์เริ่มต้นที่เหมือนกันและให้fdiskเซกเตอร์สิ้นสุด ใช้การpตรวจสอบและประเภทที่ขยายเป็นประเภท '85' และภาคการสิ้นสุดใหม่นั้นใหญ่กว่าต้นฉบับจริง

สร้างโลจิคัลพาร์ติชันก่อนหน้านี้อีกสองพาร์ติชัน: เริ่มต้นด้วยโลจิคัลพาร์ติชัน # 5 (p5); สำหรับเซกเตอร์เริ่มต้นให้ใช้เซกเตอร์ที่ถูกต้องจากสกรีนช็อตก่อนหน้าเช่นเดียวกับเซกเตอร์สิ้นสุด (ดิสก์โลจิคัลนี้จะไม่เติบโต) ใช้tเพื่อตั้งค่า id เป็นc(MS-DOS) จากนั้นสร้างพาร์ติชัน # 6 (p6) ที่มีเซกเตอร์เริ่มต้นเดียวกันกว่า แต่ก่อนด้วยเซกเตอร์ปลายทางที่เลือกโดยfdiskและp' id83`

ตรวจสอบรายการของคุณด้วยpและถ้าและถ้าหากตกลงก็แค่เขียนตารางพาร์ทิชันด้วยwมิฉะนั้นเพียงแค่ ^ 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

ดังนั้นตอนนี้ภาคจบของฉันคือ 14,442,496 จาก 6,840,320

การบูท

ฉันรู้ว่าหัวข้อนี้อยู่ที่อื่น แต่นี่เป็นเรื่องดีที่จะรู้

Raspberry มีหน่วยประมวลผลกลางสองตัว: GPU (หน่วยประมวลผลกราฟิก) และ ARM แต่ละตัวมีภารกิจที่แตกต่างกัน GPU ใช้หน่วยความจำร่วมกับ 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 (พาร์ติชันควรอยู่ในขอบเขต 4M ของ Erase Block Group)

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 มาตรฐาน
Milliways
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.