GRUB trên USB Drive - thêm hệ điều hành


9

Một số nền tảng:

  • Đến từ nền tảng Windows chủ yếu (mặc dù tôi đã quen thuộc với Ubuntu, v.v.) và sử dụng máy Windows 7 để hoàn thành nhiệm vụ này
  • Đã cài đặt GRUB thành công vào MBR của ổ USB (ổ 8 GB FAT32):
  • Đã tạo cấu trúc cơ bản trên ổ đĩa: / boot / grub, / boot / img, / boot / kernel

Câu hỏi:

Tôi có một số câu hỏi cơ bản, dành cho người mới bắt đầu, nhưng những câu hỏi mà tôi gặp khó khăn khi tìm câu trả lời thông qua Google / StackExchange, v.v.

  • Tôi hiểu rằng thư mục / boot / img / [SystemName] sẽ lưu trữ hình ảnh cho một hệ thống cụ thể, có thể sử dụng các phiên bản khác nhau (hoặc giống nhau) của hạt nhân linux được lưu trữ trong thư mục / boot / kernel (ít nhất, đó là cách tôi 'muốn thiết lập nó)
  • Tuy nhiên, hầu hết các hệ thống này chỉ có một kernel trong thư mục của chúng được gọi là "linux" (không nêu rõ phiên bản). Tôi có thể tìm kiếm tất cả các kernel này đều sử dụng, nhưng đâu là nơi đầu tiên để các hạt nhân tự sao chép vào / boot / kernel?
  • Sau khi tôi nhận được các hạt nhân, tôi tưởng tượng phần còn lại chủ yếu là sao chép thiết bị vào / boot / img / và tạo mục nhập thích hợp trong menu.lst, đúng không? Tôi có thể làm điều đó trên một hệ thống dựa trên cơ sở hệ thống một khi tôi có thể lấy các hạt nhân để tham khảo.

Mục tiêu tổng thể:

Tôi đang cố gắng tạo một ổ đĩa flash USB 8GB cho phép tôi khởi động nhiều hệ điều hành từ menu khởi động GRUB. Để thêm hoặc bớt các hệ điều hành, tôi chỉ muốn sao chép các tệp thích hợp vào thư mục / boot / img / [SystemName] và thư mục / boot / kernel nếu thích hợp và sau đó chỉnh sửa tệp menu.lst. Vì vậy, bước đầu tiên này là tìm kiếm các hạt nhân mà nhiều hệ điều hành này chia sẻ, vì tôi hy vọng sẽ giảm sự trùng lặp.


Và những gì bạn muốn có sau khi thêm kernel? Bạn có muốn một hệ điều hành hoạt động mà bạn có thể khởi động từ không?
phunehehe

@phunehehe, cảm ơn! Tôi đã cập nhật bài viết để bao gồm mục tiêu tổng thể của tôi.
SeanKilleen

Có vẻ như bạn đang cố gắng chuyển hình ảnh LiveCD cho các bản phân phối khác nhau vào ổ USB và sau đó có thể khởi động chúng. Điều này có đúng không?
Wodin

@Wodin: Về cơ bản, vâng. LiveCD (nhưng với khả năng ghi vì nó sẽ có trên phương tiện có thể ghi), với một bộ tải khởi động hợp nhất cho tất cả các bản phân phối / công cụ tôi muốn.
SeanKilleen

Câu trả lời:


4

Những gì bạn đang cố gắng đạt được là kéo dài công nghệ khởi động :) Tuy nhiên tôi nghĩ điều đó là có thể, mặc dù tôi không đủ kiến ​​thức để đưa ra một hướng dẫn hoàn chỉnh.

Đầu tiên, như đã nói, distro có những yêu cầu rất khác nhau. Thứ hai, mặt khác, bạn cũng có thể tìm thấy các bản phân phối cần các yêu cầu tối thiểu.

Tôi khuyên bạn nên sử dụng GRUB4DOS làm bộ nạp khởi động. Xem liên kết này cách sử dụng nó với USB (vì nó có lệnh find --set root -, điều này rất quan trọng nếu bạn có thiết bị di động như USB).

Sau đó, bạn phải quyết định có bao nhiêu phân vùng bạn sẽ sử dụng. Tiêu chuẩn "Cài đặt đầy đủ" luôn nằm trong một phân vùng duy nhất. Vì vậy, nếu bạn có thẻ nhớ USB 8 GB và có phân vùng 4 GB (cho phép cài đặt tối thiểu), bạn sẽ bị giới hạn ở 2 "Cài đặt đầy đủ" khác nhau của các bản phát hành chính như Debian hoặc Fedora.

Tuy nhiên, có một số bản phân phối Linux nhỏ và chuyên dụng. Ví dụ: "Puppy Linux" rất nhỏ và có chế độ "Cài đặt tiết kiệm" đặc biệt. Nó có nhiều hương vị (ví dụ như MacPup có cố gắng triển khai Apple như Desktop hay Fatdog64 là Linux 64 bit).

Trong chế độ "Cài đặt tiết kiệm" này, nó chỉ sử dụng chính xác 1 thư mục và có thể được cài đặt song song với Linux hoặc Windows hiện có trên đĩa cứng (hoặc USB). Tôi chắc chắn có những bản phân phối khác hỗ trợ các chế độ tương tự.

Vì Puppy Linux nhỏ (<150 MB) và giả sử bạn dự trữ một tệp lưu trữ nhỏ cho mỗi lần cài đặt (512 MB), bạn có thể dễ dàng cài đặt như 10 Hệ điều hành khác nhau trên thanh USB. Thậm chí còn có các Linux nhỏ hơn (Slitaz, Tinycore) mà bạn có thể sử dụng.

Ví dụ: tôi đính kèm tệp menu.lst (GRUB4DOS) từ cài đặt PC hiện tại của tôi, 8 mục đầu tiên là tất cả các cài đặt Puppy Linux khác nhau trên hd0,2 (tức là phân vùng thứ 3 trên ổ cứng thứ 1), sau đó có tối thiểu Cài đặt Debian trong một phân vùng nhỏ bổ sung và cả Windows-XP gốc.

timeout=10
default=0  

  title Linux Buero (on /dev/sda3)
  root (hd0,2)
  kernel /puppy431-de/vmlinuz psubdir=puppy431-de pkeys=de ro vga=normal
  initrd /puppy431-de/initrd.gz

  title Live CD build (on /dev/sda3)
  root (hd0,2)
  kernel /puppylivecdbuild/vmlinuz psubdir=puppylivecdbuild ro vga=normal
  initrd /puppylivecdbuild/initrd.gz

  title sage developement(on /dev/sda3)
  root (hd0,2)
  kernel /Sage46dev/vmlinuz psubdir=Sage46dev pfix=nocopy ro vga=normal
  initrd /Sage46dev/initrd.gz

  title sage developement test and fun
  root (hd0,2)
  kernel /Sage-test/vmlinuz psubdir=Sage-test pfix=nocopy,noram ro vga=normal
  initrd /Sage-test/initrd.gz

  title Lupq 511
  find --set-root --ignore-floppies /lupq511/initrd.gz
  kernel /lupq511/vmlinuz psubdir="lupq511" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupq511/initrd.gz 

  title Lupu 520 - New kid on the block
  find --set-root --ignore-floppies /lupu-520/initrd.gz
  kernel /lupu-520/vmlinuz psubdir="lupu-520" pfix=nocopy pkeys=de ro vga=normal
  initrd /lupu-520/initrd.gz 

  title wary beta (on /dev/sda3)
  root (hd0,2)
  kernel /wary/vmlinuz psubdir=wary ro vga=normal
  initrd /wary/initrd.gz

  title spup (on /dev/sda3)
  root (hd0,2)
  kernel /spup/vmlinuz psubdir=spup ro vga=normal
  initrd /spup/initrd.gz

  title Debian (on /dev/sda2)
  find --set-root --ignore-floppies /initrd.img
  kernel /vmlinuz root=/dev/sda2 ro
  initrd /initrd.img

  title Windows NT/2K/XP\nStart Windows if installed on HDD
  fallback 7
  find --set-root --ignore-floppies /ntldr
  chainloader /ntldr

boot

Menu.lst trên USB của bạn có thể trông tương tự, lệnh GRUB4DOS find --set-root --ignore-floppies /lupq511/initrd.gz (tìm tệp này trong tất cả các ổ đĩa) có thể rất hữu ích nếu bạn sử dụng USB, vì vậy bạn không phải sử dụng các mục cố định cho ổ đĩa của mình.

Với thông tin trên, một số ý kiến ​​về câu hỏi ban đầu của bạn:

H: * Tôi hiểu rằng thư mục / boot / img / [SystemName] sẽ lưu trữ hình ảnh cho một hệ thống cụ thể, có thể sử dụng các phiên bản khác nhau (hoặc giống nhau) của các nhân Linux được lưu trữ trong thư mục / boot / kernel (ít nhất là, đó là cách tôi muốn thiết lập nó)

Trả lời: Tôi không chắc liệu điều đó có hoạt động hay không, vì hầu hết các bản phân phối chính đều mong muốn có độc quyền phân vùng của họ và cài đặt cấu trúc thư mục cụ thể cho các tệp của họ. Theo tôi, tốt hơn là tôn trọng thiết lập mặc định và cung cấp những gì phân phối mong đợi, tức là một số cần phân vùng độc quyền, một số sẽ hài lòng với chỉ một thư mục trên phân vùng dùng chung. Tôi không nói rằng không thể cài đặt nhiều phân vùng cho 1 hệ điều hành theo cách không mặc định, nhưng nó đang cầu xin những rắc rối và theo tôi là không thực tế đối với người mới sử dụng Linux. Một cách giải quyết có thể tôi đề cập ở cuối bài đăng của tôi (cài đặt "giống như Wubi").

Hỏi: * Tuy nhiên, hầu hết các hệ thống này chỉ có một hạt nhân trong thư mục của chúng được gọi là "linux" (không nêu rõ phiên bản). Tôi có thể tìm kiếm tất cả các kernel này đều sử dụng, nhưng đâu là nơi tốt nhất để lấy các kernel tự sao chép vào / boot / kernel?

Trả lời: Tôi nghĩ rằng các hạt nhân nên đi chính xác ở đó nơi mà các bản phân phối thường có chúng. Không cần lưu trữ chúng trong một thư mục riêng / boot / kernel và tôi cũng không khuyên bạn nên thử chia sẻ chúng giữa các bản phân phối. Dung lượng lưu trữ là tối thiểu cho một kernel (như 2-3 MB). Thực sự có rất nhiều phiên bản và phiên bản phụ và đôi khi có những bản vá cụ thể được áp dụng cho các bản phân phối. Để plugin trong một kernel khác / chưa được kiểm tra là một thử nghiệm không cần thiết.

H: * Sau khi tôi nhận được các hạt nhân, tôi tưởng tượng phần còn lại chủ yếu là sao chép thiết bị vào / boot / img / và tạo mục nhập thích hợp trong menu.lst, đúng không? Tôi có thể làm điều đó trên một hệ thống dựa trên cơ sở hệ thống một khi tôi có thể lấy các hạt nhân để tham khảo.

Trả lời: Như đã đề cập trước đó, tốt hơn là tạo các phân vùng riêng cho các bản phân phối cần chúng và trộn vào các bản phân phối không quá tham lam trong các thư mục riêng của chúng. Xử lý kernel, initrd và phần còn lại của distro là một đơn vị.

Một ý tưởng cuối cùng. Nếu bạn không muốn sử dụng các phân vùng khác nhau, bạn có thể thử cài đặt như "WUBI" cho các bản phân phối yêu cầu cài đặt đầy đủ vào phân vùng của chính nó. Điều này có nghĩa là bạn tạo các tệp lớn với hệ thống tệp ext2 / ext3 của riêng mình trên USB, sau đó gắn chúng dưới dạng "ổ đĩa" và cài đặt HĐH vào nó. (Tôi gọi nó là WUBI, vì đây là ứng dụng nổi tiếng nhất).

Dưới đây phải là mục nhập menu.lub của Grub4dos để khởi động "cài đặt Wubi".

# Add the ntfs module - just needed for Installation on a Windows Partition
insmod ntfs
# Set root (normally would be sda1, or hd0,1 Change as necessary
set root=(hd0,1)
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz root=/dev/sda1 loop=/ubuntu/disks/root.disk ro
initrd /boot/initrd/initrd.img
boot

Từ đây .

Bạn thấy đấy, có 2 lệnh "set root", thứ hai sau "root.disk" chứa Linux, được gắn dưới dạng loop0.

Tôi hy vọng tôi có thể đưa ra một số ý tưởng, mặc dù nó không hoàn toàn thông qua.


Xin lỗi, tôi đã nhận được liên kết thứ hai đến mục Grub vì Wubi sai (vì đây là bài đăng đầu tiên của tôi, liên kết thứ 2 của tôi là "được bảo vệ chống spam"). Liên kết đúng là: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil

1

Đây là hai hướng dẫn:

Tôi nghĩ rằng cả hai sử dụng các phân vùng riêng biệt cho mỗi hạt nhân.

Các mục trong " /boot/grub/menu.lst " giống như thế này:

title Unity-2010 -- With Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010 changes_dev=LABEL=Unity-2010 acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

title Unity-2010 -- No Persistence
kernel (hd0,0)/isolinux/vmlinuz vga=788 livecd=livecd fromusb
root=Label=Unity-2010  acpi=on fstab=rw,noauto
initrd (hd0,0)/isolinux/initrd.gz

0

Nó thực sự phụ thuộc vào những gì bạn đang đặt ở đó. Một số người trong số họ làm một số thứ khó chịu trong initramfs nên khó khăn. Một số distro trực tiếp tìm kiếm nhãn, một số tìm kiếm uuid. Bạn không thể cung cấp điều đó.

Giải pháp không dễ dàng, bạn nên xây dựng ramdisks tùy chỉnh mới cho các bản phát hành trực tiếp của bạn.

tôi hy vọng tôi đã không hiểu sai: D


0

Bạn chắc chắn sẽ cần một số loại không gian người dùng để đi với mỗi hạt nhân này. (Chương trình, cấu hình, công việc.) Theo truyền thống, bạn sẽ sử dụng ít nhất một phân vùng cho mỗi HĐH riêng biệt và phân vùng GRUB sẽ được gắn dưới dạng / boot (trên thực tế, vì vậy, bạn sẽ không khởi động như một thư mục con của điều này phân vùng, nó sẽ là thư mục gốc, với grub / là thư mục con.)

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.