USB Sürücüsünde GRUB - işletim sistemleri ekleme


9

Bazı Arka Planlar:

  • Büyük ölçüde Windows arka planından geliyor (Ubuntu vb. Hakkında bilgi sahibiyim) ve bu görevi tamamlamak için bir Windows 7 makinesi kullanma
  • GRUB'u USB sürücünün MBR'sine (8 GB FAT32 sürücüsü) başarıyla yüklediniz:
  • Sürücüde temel bir yapı oluşturduk: / boot / grub, / boot / img, / boot / kernel

Soru:

Bazı temel, başlangıç ​​sorularım var, ancak Google / StackExchange vb.

  • / Boot / img / [SystemName] klasörünün, / boot / kernel dizininde depolanan linux çekirdeklerinin çeşitli (veya aynı) sürümlerini kullanabilen belirli bir sistem için görüntüyü depolayacağını anlıyorum (en azından ben böyle kurmak istiyorum)
  • Ancak, bu sistemlerin çoğunda dizinlerinde "linux" adı verilen bir çekirdek vardır (sürümü belirtmez). Bunların tümünün hangi çekirdeği kullandığını araştırabilirim, ancak çekirdeklerin / boot / çekirdeğe kopyalanmaları için en iyi yer neresi?
  • Çekirdekleri aldıktan sonra, geri kalanının çoğunlukla cihazı / boot / img / dizinine kopyaladığını ve menu.lst'de doğru girişi oluşturduğunu hayal ediyorum. Çekirdeğe başvurabildiğimde bunu sistem bazında yapabilirim.

Genel amaç:

Ben bir GRUB önyükleme menüsünden birden fazla işletim sistemi önyükleme sağlayacak 8GB usb flash sürücü oluşturmaya çalışıyorum. İşletim sistemi eklemek veya çıkarmak için, yalnızca uygun dosyaları / boot / img / [SistemAdı] ve / boot / kernel klasörüne uygun şekilde kopyalamak ve sonra menu.lst dosyasını düzenlemek istiyorum. Yani, bu ilk adım, çoğaltmayı azaltmayı umduğumdan, bu işletim sistemlerinin çoğunun paylaştığı çekirdekleri bulmakla ilgilidir.


Çekirdeği ekledikten sonra ne yapmak istiyorsunuz? Önyükleme yapabileceğiniz çalışan bir işletim sistemi istiyor musunuz?
phunehehe

@phunehehe, teşekkürler! Yayını genel hedefimi içerecek şekilde güncelledim.
SeanKilleen

Bir USB sürücüsüne çeşitli dağıtımlar için LiveCD görüntülerini dökmeye ve sonra önyükleme yapmaya çalıştığınız anlaşılıyor. Bu doğru mu?
Wodin

@Wodin: Esasen evet. LiveCD (ancak yazılabilir medyada olacağı için yazma yeteneğine sahip), isteyeceğim tüm dağıtımlar / araçlar için tek bir önyükleyici.
SeanKilleen

Yanıtlar:


4

Ulaşmaya çalıştığınız şey çizme teknolojisini esnetmektir :) Bununla birlikte, tam bir gözden geçirme vermek için yeterince bilgili olmasam da mümkün olduğunu düşünüyorum.

İlk olarak, daha önce de belirtildiği gibi, dağıtımların çok farklı gereksinimleri vardır. İkincisi, iyi bir şey, minimum gereksinimlere ihtiyaç duyan dağıtımları da bulabilirsiniz.

Bootloader olarak GRUB4DOS kullanmanızı tavsiye ederim. USB ile nasıl kullanılacağına ilişkin bu bağlantıya bakın (çünkü USB gibi bir mobil cihazınız varsa önemli olan find --set root - komutuna sahiptir).

Sonra kaç bölüm kullanacağınıza karar vermelisiniz. Standart "Tam kurulum" her zaman tek bir bölümdedir. Bu nedenle, 8 GB'lık bir USB çubuğunuz varsa ve 4 GB'lık bölüm alırsanız (minimum yüklemeye izin verir), Debian veya Fedora gibi ana dağıtımların 2 farklı "Tam Yüklemesi" ile sınırlı olacaksınız.

Ancak, bazı küçük ve özel Linux dağıtımları vardır. Örneğin "Puppy Linux" çok küçük ve özel bir "Frugal Installation" moduna sahip. Pek çok lezzetle geliyor (örneğin, Apple gibi bir Masaüstü veya 64 bit Linux olan Fatdog64'i uygulamaya çalışan MacPup var).

Bu "Tutumlu kurulum" modunda, tam olarak 1 dizin kullanır ve sabit diskteki (veya USB'deki) mevcut bir Linux veya Windows'a paralel olarak kurulabilir. Benzer modları destekleyen başka dağıtımlar olduğundan eminim.

Puppy Linux küçük (<150 MB) olduğundan ve her kurulum (512 MB) için küçük bir kayıt dosyası ayırdığınız varsayıldığında, USB çubuğuna 10 farklı İşletim Sistemi gibi kolayca kurabilirsiniz. Kullanabileceğiniz daha küçük Linux'lar (Slitaz, Tinycore) bile var.

Örneğin, geçerli PC kurulumumdan menu.lst (GRUB4DOS) dosyasını ekliyorum, İlk 8 girişin tümü hd0,2'de (yani 1. sabit diskteki 3. bölüm) farklı Puppy Linux kurulumudur. Debian yüklemesi küçük bir ekstra bölüm ve ayrıca orijinal Windows-XP'de.

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

USB'nizdeki menu.lst benzer görünebilir, USB kullanıyorsanız GRUB4DOS komutu find --set-root --ignore-floppies /lupq511/initrd.gz (bu dosyayı tüm sürücülerde arar) çok yararlı olabilir, bu nedenle sürücünüz için sabit girişler kullanmanıza gerek yoktur.

Yukarıdaki bilgilerle orijinal sorularınızla ilgili bazı yorumlar:

S: * / boot / img / [SystemName] klasörünün, / boot / kernel dizininde depolanan Linux çekirdeğinin çeşitli (veya aynı) sürümlerini kullanabilen (en azından, bu şekilde kurmak istiyorum)

C: Büyük dağıtımların çoğunun kendi bölümleri için özel bir hakka sahip olmasını ve dosyaları için belirli bir dizin yapısını yüklemesini beklediğinden, bunun işe yarayıp yaramayacağını bilmiyorum. Bence varsayılan kuruluma saygı duymak ve dağıtımın ne beklediğini sağlamak daha iyidir, yani bazıları özel bir bölüme ihtiyaç duyar, bazıları paylaşılan bir bölümdeki bir dizinden memnun olacaktır. Varsayılan olmayan bir şekilde birden fazla işletim sisteminin 1 bölüme yüklenmesinin mümkün olmadığını söylemiyorum, ancak sıkıntılar için yalvarıyor ve bence bir Linux yeni gelen için pratik değil. Yazımın altında bahsettiğim olası bir geçici çözüm ("Wubi benzeri" yüklemeler).

S: * Ancak, bu sistemlerin çoğunun dizinlerinde "linux" (sürümü belirtmeden) adı verilen bir çekirdek vardır. Tüm bunların hangi çekirdeği kullandığını araştırabilirim, ancak çekirdeklerin kendilerini / boot / çekirdeğe kopyalamaları için en iyi yer hangisidir?

C: Bence çekirdekler dağıtımların genellikle sahip olduğu yere gitmeli. Bunları ayrı bir / boot / kernel klasöründe saklamanıza gerek yoktur ve dağıtımlar arasında paylaşmaya çalışmanızı da tavsiye etmem. Bir çekirdek için depolama alanı minimumdur (2-3 MB gibi). Gerçekten çok sayıda sürüm ve alt sürüm vardır ve bazen dağıtım çekirdeklerine uygulanan belirli yamalar bile vardır. Farklı / test edilmemiş bir çekirdeğe eklenti yapmak gereksiz bir deneydir.

S: * Çekirdekleri aldıktan sonra, geri kalanının çoğunlukla cihazı / boot / img / dizinine kopyaladığını ve menu.lst'de doğru girişi oluşturduğunu hayal ediyorum. Çekirdeğe başvurabildiğimde bunu sistem bazında yapabilirim.

C: Daha önce de belirtildiği gibi, onlara ihtiyaç duyan dağıtımlar için ayrı bölümler daha iyi oluşturun ve kendi klasörlerinde bu kadar açgözlü olmayan dağılımları karıştırın. Çekirdeği, initrd'i ve dağıtımın geri kalanını bir birim olarak ele alın.

Son bir fikir. Farklı bölümler kullanmak istemiyorsanız, kendi bölümlerine tam yükleme gerektiren dağıtımlar için "WUBI" yüklemeleri gibi bir şey deneyebilirsiniz. Bu, USB'de kendi ext2 / ext3 dosya sistemlerine sahip büyük dosyalar oluşturduğunuz, daha sonra bunları "sürücüler" olarak bağladığınız ve işletim sistemini yüklediğiniz anlamına gelir. (Ben WUBI diyorum, çünkü bu en iyi bilinen uygulama).

Aşağıdaki "Wubi kurulumunu" başlatmak için Grub4dos menu.lst girişi olmalıdır.

# 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

Gönderen burada .

Gördüğünüz gibi 2 "set root" komutu var, ikincisi Linux'u içeren "root.disk" den sonra loop0 olarak bağlanmış.

Umarım tam bir çözüm olmamasına rağmen bazı fikirler verebilirim.


Üzgünüm Wubi için Grub girdisine ikinci bağlantı yanlış aldım (çünkü benim ilk mesajım 2. bağlantım "spam korumalı" idi). Doğru bağlantı: blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil

1

İşte iki rehber:

Bence her ikisi de her çekirdek için ayrı bölümler kullanıyor.

" /Boot/grub/menu.lst " içindeki girişler aşağıdaki gibidir:

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

Gerçekten oraya hangi dağıtımları koyduğunuza bağlı. Bazıları initramfs bazı kötü şeyler yapmak bu yüzden zorlaşır. Bazı canlı dağıtımlar bir etiket arar, bazıları uuid arar. Bunu sağlayamazsınız.

Çözüm kolay değil, canlı dağıtımlarınız için yeni özelleştirilmiş ramdiskler oluşturmanız gerekir.

Umarım yanlış anlamadım: D


0

Bu çekirdeklerin her birine gitmek için kesinlikle bir çeşit kullanıcı alanına ihtiyacınız olacak. (Programlar, konfigürasyon, işler.) Geleneksel olarak, her ayrı işletim sistemi için en az bir bölüm kullanırsınız ve GRUB bölümünün kendisi / boot olarak monte edilir (bu nedenle, aslında bunun bir alt dizini olarak önyüklemeniz olmaz bölüm; grub / alt dizin olarak kök dizin olurdu.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.