Raspberry Pi khởi động như thế nào?


57

Tôi có một máy tính mini mâm xôi và tôi tự hỏi làm thế nào mà toàn bộ quá trình khởi động. Tôi có thể biên dịch kernel và init ramdisk của riêng mình với các tập lệnh của riêng tôi và xây dựng hệ thống linux tối thiểu của riêng tôi trên PC, nhưng tôi cần phải sử dụng một số bộ tải khởi động. Raspberry dường như không hỗ trợ bộ nạp khởi động.

Dường như bằng cách nào đó khởi động bằng GPU của nó đọc một số phân vùng trên thẻ SD (có thể là một cờ có khả năng khởi động) cần được định dạng trong FAT32, sau đó nó đọc một số tệp từ đó, được cung cấp, ví dụ như bởi raspbian.

Nhưng làm thế nào tôi có thể khởi động kernel của riêng tôi, với các tùy chỉnh của riêng tôi mà tôi tự biên dịch? Tôi nên sao chép kernel kernel / initrd (đĩa ram) để mâm xôi tìm thấy nó và khởi động từ nó? Về cơ bản tôi đang tìm kiếm một số tài liệu kỹ thuật rất chi tiết mô tả quá trình khởi động trên quả mâm xôi hoặc chỉ là một số giải thích về điều này.


Câu trả lời:


59

Từ bài đăng trên diễn đàn Raspberry Pi này [Đã chỉnh sửa để phản ánh loader.binnhư một lỗi thời] :

  1. Khi Raspberry Pi được bật lần đầu tiên, lõi ARM sẽ tắt và lõi GPU được bật. Tại thời điểm này, SDRAM bị vô hiệu hóa.
  2. GPU bắt đầu thực thi bộ tải khởi động giai đoạn đầu tiên, được lưu trữ trong ROM trên SoC. Bộ tải khởi động giai đoạn đầu tiên đọc thẻ SD và tải bộ tải khởi động giai đoạn thứ hai ( bootcode.bin) vào bộ đệm L2 và chạy nó.
  3. bootcode.binbật SDRAM và đọc bộ tải khởi động giai đoạn thứ ba (loader.bin) từ thẻ SD vào RAM và chạy nó. [Các phiên bản gần đây hơn không sử dụng bộ tải khởi động giai đoạn thứ ba. ]
  4. [Nếu có thể] loader.binđọc phần sụn GPU ( start.elf).
  5. start.elfđọc config.txt, cmdline.txtkernel.img

loader.binkhông làm gì nhiều. Nó có thể xử lý .elfcác tệp và do đó cần phải tải start.elfở đầu bộ nhớ (ARM sử dụng SDRAM từ địa chỉ 0). Có một kế hoạch để thêm hỗ trợ tải elf bootcode.bin, điều này sẽ loader.binkhông cần thiết, nhưng đó là mức ưu tiên thấp (tôi đoán nó có thể giúp bạn tiết kiệm 100ms khi khởi động). [Sự thay đổi này đã diễn ra. ]

Dưới đây là một số tài nguyên có thể hữu ích:


2
Là nội dung của các tập tin bin này tất cả phần mềm độc quyền?
Petr

3
@Petr Đây là Github cho firmware Raspberry Pi, tôi sẽ chỉnh sửa nó thành câu trả lời của tôi.
syb0rg

1
Trên Câu hỏi thường gặp của Raspberry Pi , nó có nội dung "Bạn phải khởi động từ SD nhưng USB HD có thể chiếm quyền điều khiển sau khi khởi động ban đầu. Bạn không thể khởi động mà không có thẻ SD."
syb0rg

1
Là parition đó, được đọc trước, bất kỳ phân vùng nào có cờ B hoặc nó phải là phân vùng đầu tiên? Điều gì sẽ xảy ra nếu tôi làm cho nó quá lớn và tôi muốn tạo một cái khác ở cuối thẻ SD sẽ nhỏ hơn
Petr

1
@Petr Bạn nên hỏi như một câu hỏi khác!
syb0rg
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.