Tôi nên cấu hình grub như thế nào để khởi động kernel linux từ ổ cứng USB?


17

Tôi có một ổ cứng máy tính xách tay trong một vỏ bọc bên ngoài mà tôi sử dụng như một ổ đĩa lớn. Để cải thiện thêm, tôi đã cài đặt Linux trên nó, vì vậy tôi có thể khởi động bất kỳ máy nào với phân phối lựa chọn của mình (ví dụ: để phục hồi dữ liệu hoặc sửa chữa hệ thống b0rked hoặc chỉ sử dụng máy tính xách tay mượn mà không phá hủy Windows được cài đặt sẵn). Vấn đề là, tùy thuộc vào cấu hình phần cứng, ổ cứng USB có thể hiển thị dưới các đường dẫn khác nhau. Đối với cấu hình grub tôi chỉ sử dụng (hda0,0)vì nó liên quan đến thiết bị mà grub được khởi chạy từ đó. Tôi có các mục UUID trong /etc/fstab. Tôi cũng chỉ định rootwaittrong các tham số kernel để nó chờ hệ thống con USB lắng xuống trước khi thử gắn thiết bị.

Tôi nên chuyển qua kernel là root=gì? Hiện tại khởi động từ ổ đĩa một lần, kiểm tra các thông báo gỡ lỗi để xem /dev/sdXthiết bị nào đã được gán cho ổ USB, sau đó khởi động lại và chỉnh sửa cấu hình grub. Tôi không thể thay đổi bất cứ điều gì trên PC ngoài việc bật Boot from USB hard driveBIOS và đặt nó ở mức ưu tiên cao hơn so với ổ cứng bên trong.

Có nhiều kịch bản tạo ra initrd trong đó bao gồm hỗ trợ cho UUID trong đường dần đến device root, tiếc là một nguồn gốc Gentoo (genkernel) không hỗ trợ rootwaitvà tôi đã không may mắn cố gắng sử dụng những người khác.

Quá trình khởi động diễn ra như thế này ( nó khá giống trong Windows ):

  1. BIOS chọn thiết bị khởi động và tải bất cứ thứ gì là MBR của nó (điều này xảy ra ở giai đoạn 1).
  2. Grub tải cấu hình và các tệp giai đoạn 2 từ thiết bị mà nó đã đặt root, sử dụng (hd0)cho thiết bị được tải từ BIOS.
  3. Grub tải và bắt đầu một kernel (vẫn cùng số, vì vậy tôi có thể sử dụng (hd0,0)lại).
  4. Kernel khởi tạo tất cả các thiết bị tích hợp ( rootwaithiện tại nó rất kỳ diệu).
  5. Kernel gắn kết phân vùng mà nó được truyền vào root(đây là tham số kernel, không phải tham số grub).
  6. init.dbắt đầu quá trình khởi động người dùng, bao gồm cả việc gắn kết từ /etc/fstab.

Phần 5 là phần cho tôi vấn đề.

Câu trả lời:


6

Tôi nghĩ rằng câu trả lời nên được sử dụng root=LABEL=...hoặcroot=UUID=...

Nhưng bạn chỉ ra rằng điều này không làm việc cho bạn. Tôi sẽ đề nghị xem xét nếu có một số vấn đề với các hành động của initrd của bạn.


Tôi không có initrd, đó là toàn bộ vấn đề. genkernel không hỗ trợ tùy chọn "rootwait" và các ứng dụng khác không hoạt động với Gentoo.
skolima

2

Tôi có thể nhầm lẫn hoặc có thể chỉ là hiểu lầm bạn, nhưng không phải là lựa chọn thiết bị khởi động nào đó sẽ được cấu hình từ BIOS của máy bạn đang khởi động?

Tôi nghĩ sẽ là vấn đề khi chọn ổ USB, có cài đặt GRUB làm bộ tải khởi động, và sau đó chọn bản phân phối nào bạn muốn khởi động từ menu GRUB.


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.