Quá trình khởi động Raspbian và bảng phân vùng


13

Bất kỳ mô tả tốt về quá trình khởi động Raspberry Pi và cấu trúc phân vùng đĩa?

Những gì được lưu trữ trên mỗi phân vùng (và tại sao)?

RPI có khởi động từ thẻ SD (sector 0) hoặc phần sụn đọc từ cấu trúc đĩa không?

Tôi giả sử rằng được NOOBS tạo ra sao chép một vài tệp trong bất kỳ O / S nào, phần sụn RPI biết về cấu trúc đĩa MS-DOS (mức cao) và tìm đường vào bộ nhớ SD.

Tôi muốn sao chép thẻ SD tốt sang thẻ SD lớn hơn để mở rộng không gian có sẵn.
Tôi có thể tạo và phân vùng SD mới và chỉ DD mỗi phân vùng cho thiết bị mới không? Những phân vùng nào là cần thiết?

Các 'linux'phân vùng trên thiết bị mới được lớn so với bản gốc và sau đó mở rộng không gian đĩa?

Có thể sao chép vào một thẻ mới và chỉ mở rộng phân vùng cuối cùng (p6) để sử dụng không gian có sẵn, nhưng tôi không muốn sử dụng phương pháp thử và lỗi, sẽ muốn biết làm thế nào và tại sao.

Tại sao câu hỏi của tôi?

Hầu hết các thẻ SD RPI có hai phân vùng (fdisk), có lẽ khi được cài đặt từ .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

Tuy nhiên tôi có một cái có tới 6 phân vùng, đây là cấu trúc được kế thừa từ 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

Tôi nghĩ có gì đó không ổn với bức tranh này. Hai phân vùng W95?

Tôi chỉ muốn sao chép các phân vùng phù hợp vào một thẻ mới. Tôi phải làm việc nhiều với SD đang chạy này để bắt đầu lại! (BTW Tôi có một vài bản sao lưu tốt).

Một số lưu ý.

Vách ngăn 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

Vách ngăn p2

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

Vách ngăn 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

Phân vùng p4không tồn tại.

Phân vùng 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
...

Phân vùng p6( phân vùng raspbian thực )

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

Bạn chỉ có thể có tối đa bốn phân vùng 'chính' và nếu bạn cần nhiều hơn tổng số phân vùng đó thì phải trở thành p2một phân vùng mở rộng - trong trường hợp này là một phân vùng "Linux" và nó là một thùng chứa cho phần còn lại những cái cần thiết trên 4 - và có nhiều hơn một cách để tổ chức các phân vùng 'logic' đó bên trong cái mở rộng.
SlySven

Câu trả lời:


6

Kết quả cuối cùng của tôi để chuyển sang thẻ SD lớn hơn trên cài đặt noobs, như sau.

Tôi sao lưu hình ảnh trực tiếp ban đầu trên một ổ đĩa ngoài tạm thời, được chia sẻ với một hộp cửa sổ, một thẻ nhớ dự phòng sẽ làm điều đó.

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

bạn cũng có thể sao lưu bằng win32DiskImager, sau đó, tôi đã ghi hình ảnh vào thẻ SD lớn hơn (tôi đã tăng từ 8 đến 16 GB) lần này, sử dụng win32DiskImager.

Tôi đã khởi động SD mới được tạo. Tại thời điểm này, SD vẫn giữ nguyên các phân vùng, nguyên thủy, mở rộng và logic. Vì vậy, khởi động nên hoạt động trơn tru.

Sử dụng

fdisk /dev/mmcblk0

Chụp ảnh màn hình trực tiếp của bảng phân vùng hiện tại bằng plệnh.

Xóa phân vùng không sử dụng và không cần thiết # 3 (p3) nằm ở cuối 'đĩa' vật lý (sau phân vùng mở rộng # 2) với d.

Tiếp theo, mạnh dạn xóa phân vùng số 2 (p2), phân vùng logic lồng nhau cũng sẽ biến mất.

Tái tạo phân vùng mở rộng # 2, nhưng bây giờ, sử dụng tất cả không gian có sẵn.
Để tạo lại # 2, hãy sử dụng chính xác khu vực ban đầu và cho phép fdiskcung cấp cho bạn khu vực kết thúc. Sử dụng pxác minh và loại đó là loại mở rộng '85' và khu vực kết thúc mới thực sự lớn hơn bản gốc.

Tái tạo hai phân vùng logic trước đó: bắt đầu với phân vùng logic # 5 (p5); đối với khu vực bắt đầu sử dụng khu vực chính xác từ ảnh chụp màn hình trước đó, cùng với khu vực kết thúc (đĩa logic này sẽ không phát triển), hãy sử dụng tđể đặt id thành c(MS-DOS). Sau đó, tạo lại phân vùng # 6 (p6) với cùng một khu vực bắt đầu so với trước nhưng với khu vực kết thúc được chọn bởi fdiskp' id83`.

Xác minh các mục nhập của bạn với pvà nếu và chỉ khi, có vẻ ổn, chỉ cần viết bảng phân vùng bằng wcách khác chỉ ^ C và bắt đầu lại.

Khởi động lại và vượt qua các ngón tay của bạn. Raspbian có thể khởi động lại hai lần.

Sau đó, chỉ cần mở rộng hệ thống tập tin với

resize2fs /dev/mmcblk0p6

Đây là kết quả cuối cùng, bây giờ có thêm 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

Vì vậy, bây giờ khu vực kết thúc của tôi là 14.442.496 từ 6.840.320.

Chiếc ủng

Tôi biết rằng chủ đề này là ở nơi khác, tuy nhiên điều này là tốt để biết.

Raspberry có hai bộ xử lý trên bo mạch: GPU (Bộ xử lý đồ họa) và ARM, mỗi bộ có một nhiệm vụ khác nhau. GPU chia sẻ bộ nhớ với ARM, bộ xử lý RISC (Bộ giảm hướng dẫn máy tính) rất hiệu quả, chạy bộ hướng dẫn tiêu chuẩn công nghiệp. Tất cả được đính kèm trên BCM2835 'SoC' (Hệ thống trên Chip)

Khi bật nguồn điều khiển, lần đầu tiên được cấp cho GPU, chỉ hạt nhân, ở cuối quá trình khởi động, sẽ chạy trên bộ xử lý ARM.

Ở giai đoạn đầu tiên, GPU sẽ chạy phần sụn ROM trên chip để tải bootcode.binvào bộ nhớ đệm L2 và vượt qua sự kiểm soát. bootcode.binsẽ kích hoạt thẻ SD, bật SDRAM và sử dụng phân vùng MS-DOS đầu tiên, để tìm, tải và chạy 'start.elf'.

Tại thời điểm này, các tệp sau được xem xét bootcode.bintừ phân vùng MS-DOS đầu tiên trên Thẻ SD:

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

Có một số tùy chọn tốt có thể được tùy chỉnh trên config.txt. Bạn có thể chỉnh sửa tệp gắn SD trên máy tính bên ngoài hoặc chỉ chỉnh sửa trên thiết bị đang chạy:

nano /boot/config.txt

Các thay đổi điển hình trên config.txt có liên quan đến ép xung , HDMI , kích thước màn hình , khía cạnh , camera , đặt cho bạn địa chỉ MAC, v.v.

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

Như bạn có thể thấy, phân vùng khởi động được chỉ định, nơi kernel.imgsẽ khởi động là / dev / mmcblk0p6 và đây là phân vùng thứ hai cần có trên thẻ SD của bạn, được định dạng là 'ext4' (Linux hoặc Id '83' trong biệt ngữ fdisk).

Cuối cùng, start.elfsẽ tải và chạy kernel.img, kernel linux của bạn.

Bạn có thể (nên?) Cập nhật kernel với rpi-update; nếu không có chỉ là apt-get install rpi-update).

lưu ý: sudotiền tố bị xóa cho ngắn gọn.


3

Nếu bạn google cho Raspberry PI Quá trình khởi động, bạn sẽ tìm thấy rất nhiều, bao gồm chuỗi khởi động là gì? (đã có một số thay đổi nhỏ).

What is stored on each partition (and why)? Điều này thay đổi, tùy thuộc vào cách thiết lập và phân phối được sử dụng.

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

Can I create and partition a new SD and just DD each partition to the new device? Đúng. Mặc dù bạn có thể tốt hơn để sao chép thẻ và mở rộng phân vùng.

Most RPI SD cards have two (fdisk) partitions, perhaps when installed from a .img Trong khi Raspbian làm, phân vùng FAT32 thường bắt đầu từ 8192, lý tưởng cho Thẻ SD. (Các phân vùng phải được đặt trên ranh giới Xóa nhóm 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. Bạn cần hiểu các phân vùng mở rộng. Hãy thử Wiki.


Trọng tâm cho câu hỏi của tôi là phân vùng nào là cần thiết và phân vùng nào không khi mở rộng không gian đĩa trên SD của NOOBS.
fcm

1
Bạn cần tất cả chúng. Bạn có thể xóa một số tệp trên phân vùng phục hồi. Chuyển đổi NOOBS sang Raspbian tiêu chuẩn có thể được thực hiện, nhưng đòi hỏi một số (thực sự khá một chút) khó khăn. Bạn CÓ THỂ sử dụng Raspbian (p6) với các thay đổi tối thiểu (đến / etc / fstab) với phân vùng khởi động Raspbian FAT32 tiêu chuẩn.
Milliways
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.