GRUB di USB Drive - menambahkan OS

9

Beberapa latar belakang:

  • Berasal dari latar belakang Windows sebagian besar (meskipun saya akrab dengan Ubuntu, dll.) Dan menggunakan mesin Windows 7 untuk menyelesaikan tugas ini
  • Telah berhasil menginstal GRUB ke MBR drive USB (drive FAT32 8 GB):
  • Telah membuat struktur dasar pada drive: / boot / grub, / boot / img, / boot / kernel

Pertanyaan:

Saya punya beberapa pertanyaan dasar, pemula, tetapi pertanyaan yang saya punya kesulitan menemukan jawaban melalui Google / StackExchange, dll.

  • Saya mengerti bahwa folder / boot / img / [SystemName] akan menyimpan gambar untuk sistem tertentu, yang mungkin menggunakan berbagai versi (atau yang sama) dari kernel linux yang disimpan di direktori / boot / kernel (setidaknya, begitulah cara saya ingin mengaturnya)
  • Namun, sebagian besar sistem ini hanya memiliki kernel di direktori mereka yang disebut "linux" (tidak menyebutkan versi). Saya bisa mencari di kernel mana semua ini digunakan, tapi apa tempat pertama untuk mendapatkan kernel untuk menyalin ke / boot / kernel?
  • Setelah saya mendapatkan kernel, saya membayangkan sisanya sebagian besar menyalin perangkat ke / boot / img / dan membuat entri yang tepat di menu.lst, benar? Saya bisa melakukannya berdasarkan sistem dengan sistem begitu saya bisa meminta kernel untuk merujuk.

Tujuan Keseluruhan:

Saya mencoba membuat 8GB usb flash drive yang memungkinkan saya untuk mem-boot beberapa OS dari menu boot GRUB. Untuk menambah atau mengurangi OS, saya hanya ingin menyalin file yang sesuai ke / boot / img / [SystemName] dan folder / boot / kernel yang sesuai dan kemudian edit file menu.lst. Jadi, langkah pertama ini adalah tentang menemukan kernel yang dibagikan oleh banyak OS ini, karena saya berharap dapat mengurangi duplikasi.

SeanKilleen
sumber
Dan apa yang ingin Anda miliki setelah menambahkan kernel? Apakah Anda menginginkan OS yang dapat Anda gunakan untuk boot?
phunehehe
@ phunehehe, terima kasih! Saya telah memperbarui pos untuk memasukkan sasaran keseluruhan saya.
SeanKilleen
Sepertinya Anda mencoba untuk membuang gambar LiveCD untuk berbagai distribusi ke drive USB dan kemudian dapat mem-bootnya. Apakah ini benar?
Wodin
@Wodin: Intinya, ya. LiveCD (tetapi dengan kemampuan menulis karena itu akan ada di media yang dapat ditulisi), dengan satu bootloader terpadu untuk semua distro / alat yang saya inginkan.
SeanKilleen

Jawaban:

4

Apa yang ingin Anda capai adalah memperluas teknologi boot :) Namun saya pikir itu mungkin, meskipun saya tidak cukup berpengetahuan untuk memberikan walk-through yang lengkap.

Pertama, seperti yang dikatakan sebelumnya, distro memiliki persyaratan yang sangat berbeda. Kedua, hal yang baik di sisi lain, Anda juga dapat menemukan distro yang membutuhkan persyaratan minimal.

Saya akan merekomendasikan untuk menggunakan GRUB4DOS sebagai bootloader. Lihat tautan ini bagaimana menggunakannya dengan USB (karena memiliki perintah find --set root -, yang penting jika Anda memiliki perangkat seluler seperti USB).

Maka Anda harus memutuskan berapa banyak partisi yang akan Anda gunakan. Standar "Pemasangan penuh" selalu dalam satu partisi. Jadi, jika Anda memiliki stik USB 8 GB dan mengambil partisi 4 GB (yang memungkinkan pemasangan minimal), Anda akan dibatasi untuk 2 "Instalasi Penuh" berbeda dari distro utama seperti Debian atau Fedora.

Namun, ada beberapa distribusi Linux kecil dan khusus. Misalnya "Puppy Linux" sangat kecil dan memiliki mode "Instalasi Frugal" khusus. Muncul dalam banyak rasa (misalnya ada MacPup dengan mencoba untuk mengimplementasikan Apple seperti Desktop, atau Fatdog64 yang merupakan Linux 64-bit).

Dalam mode "Instalasi Frugal" ini hanya menggunakan tepat 1 direktori dan dapat diinstal secara paralel ke Linux atau Windows yang ada di harddisk (atau USB). Saya yakin ada distribusi lain yang mendukung mode serupa.

Karena Puppy Linux kecil (<150 MB) dan dengan asumsi Anda menyimpan file cadangan kecil untuk setiap instalasi (512 MB), Anda dapat dengan mudah menginstal seperti 10 Sistem Operasi yang berbeda pada stik USB. Bahkan ada Linux yang lebih kecil (Slitaz, Tinycore), yang bisa Anda gunakan.

Sebagai contoh, saya lampirkan file menu.lst (GRUB4DOS) dari PC-install saya saat ini, 8 entri pertama semuanya berbeda instalasi Puppy Linux di hd0,2 (yaitu partisi ke-3 pada hardisk ke-1), lalu ada minimal Instalasi Debian di partisi ekstra kecil dan juga Windows-XP asli.

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 pada USB Anda bisa terlihat mirip, perintah GRUB4DOS find --set-root --ignore-floppies /lupq511/initrd.gz (mencari file ini di semua drive) bisa sangat berguna jika Anda menggunakan USB, jadi Anda tidak harus menggunakan entri tetap untuk drive Anda.

Dengan informasi di atas, beberapa komentar tentang pertanyaan awal Anda:

T: * Saya mengerti bahwa folder / boot / img / [SystemName] akan menyimpan gambar untuk sistem tertentu, yang dapat menggunakan berbagai versi (atau yang sama) dari kernel Linux yang disimpan di direktori / boot / kernel (setidaknya, itulah cara saya ingin mengaturnya)

A: Saya tidak yakin apakah itu akan berhasil, karena sebagian besar distribusi utama mengharapkan hak eksklusif dari partisi mereka dan menginstal struktur direktori tertentu untuk file mereka. Menurut pendapat saya lebih baik menghormati pengaturan default dan memberikan apa yang diharapkan oleh distribusi, yaitu beberapa membutuhkan partisi eksklusif, beberapa akan senang hanya dengan direktori pada partisi bersama. Saya tidak mengatakan itu tidak mungkin untuk menginstal beberapa OS untuk 1 partisi dengan cara yang tidak default, tetapi ini memohon masalah dan menurut saya tidak praktis untuk pendatang baru Linux. Solusi yang mungkin saya sebutkan di bagian bawah posting saya ("Wubi-like" menginstal).

T: * Namun, sebagian besar sistem ini hanya memiliki kernel di direktori mereka yang disebut "linux" (tidak menyebutkan versi). Saya dapat mencari di kernel mana semua ini digunakan, tetapi apa tempat terbaik untuk mendapatkan kernel untuk disalin ke / boot / kernel?

A: Saya pikir kernel harus pergi tepat di sana di mana distribusi biasanya memilikinya. Tidak perlu menyimpannya di folder / boot / kernel yang terpisah, dan saya juga tidak akan merekomendasikan untuk mencoba membagikannya di antara distribusi. Ruang penyimpanan minimal untuk kernel (seperti 2-3 MB). Sebenarnya ada banyak versi dan sub-versi dan kadang-kadang bahkan ada tambalan khusus yang diterapkan pada kernel distribusi. Untuk plugin di kernel yang berbeda / belum diuji adalah percobaan yang tidak diperlukan.

T: * Setelah saya mendapatkan kernel, saya membayangkan sisanya sebagian besar menyalin perangkat ke / boot / img / dan membuat entri yang tepat di menu.lst, benar? Saya bisa melakukannya berdasarkan sistem dengan sistem begitu saya bisa meminta kernel untuk merujuk.

J: Seperti disebutkan sebelumnya, lebih baik buat partisi terpisah untuk distribusi yang membutuhkannya dan campur dalam distribusi yang tidak begitu serakah di folder mereka sendiri. Perlakukan kernel, initrd dan seluruh distro sebagai satu kesatuan.

Satu ide terakhir. Jika Anda tidak ingin menggunakan partisi yang berbeda, Anda dapat mencoba sesuatu seperti "WUBI" menginstal untuk distro menuntut instalasi penuh ke partisi sendiri. Ini berarti bahwa Anda membuat file besar dengan filesystem ext2 / ext3 sendiri di USB, kemudian mount sebagai "drive" dan instal OS ke dalamnya. (Saya menyebutnya WUBI, karena ini adalah aplikasi yang paling dikenal).

Berikut ini adalah entri menu Grub4dos.lst untuk mem-boot "Wubi install".

# 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

Dari sini .

Anda lihat, ada 2 perintah "set root", yang kedua setelah "root.disk" yang berisi Linux, dipasang sebagai loop0.

Saya harap saya bisa memberikan beberapa ide, meskipun tidak lengkap.

Emil WidmannEmil
sumber
Maaf saya mendapatkan tautan kedua ke entri Grub untuk Wubi salah (karena ini adalah posting pertama saya, tautan ke-2 saya "dilindungi spam"). Tautan yang tepat adalah: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil
1

Inilah dua panduan:

Saya pikir keduanya menggunakan partisi yang terpisah untuk setiap kernel.

Entri dalam " /boot/grub/menu.lst " adalah seperti ini:

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
oposit
sumber
0

Itu benar-benar tergantung dari apa distro yang Anda taruh di sana. Beberapa dari mereka melakukan beberapa hal jahat di initramfs sehingga semakin sulit. Beberapa distro live mencari label, beberapa mencari uuid. Anda tidak dapat menyediakannya.

Solusinya tidak mudah, Anda harus membangun ramdisks baru yang disesuaikan untuk distro langsung Anda.

saya harap saya tidak salah: D

admiral0
sumber
0

Anda tentu membutuhkan semacam ruang pengguna untuk digunakan dengan masing-masing kernel ini. (Program, konfigurasi, pekerjaan.) Secara tradisional, Anda akan menggunakan setidaknya satu partisi untuk setiap OS yang terpisah, dan partisi GRUB itu sendiri akan dipasang sebagai / boot (jadi Anda tidak akan, sebenarnya, memiliki boot sebagai subdirektori dari ini partisi; itu akan menjadi direktori root, dengan grub / sebagai subdirektori.)

SamB
sumber