USB 드라이브의 GRUB — OS 추가


9

일부 배경 :

  • 주로 Windows 배경 (Ubuntu 등에 익숙하지만)에서 나오고 Windows 7 시스템을 사용하여이 작업을 완료합니다.
  • GRUB을 USB 드라이브 (8GB FAT32 드라이브)의 MBR에 성공적으로 설치했습니다 :
  • 드라이브에 기본 구조를 만들었습니다 : / boot / grub, / boot / img, / boot / kernel

질문:

기초적인 초급 질문이 있지만 Google / StackExchange 등을 통해 답변을 찾는 데 어려움이있는 질문이 있습니다.

  • / boot / img / [SystemName] 폴더는 특정 시스템에 대한 이미지를 저장한다는 것을 이해합니다.이 시스템은 / boot / kernel 디렉토리에 저장된 다양한 (또는 동일한) 버전의 Linux 커널을 사용할 수 있습니다 (최소한의 방법입니다) 설정하고 싶습니다)
  • 그러나 이러한 시스템의 대부분은 디렉토리에 "linux"(버전을 명시하지 않음)라는 커널을 가지고 있습니다. 이 커널들이 모두 어떤 커널을 사용하는지 찾아 낼 수 있지만, 커널 자체를 / boot / kernel에 복사 할 수있는 가장 좋은 곳은 어디입니까?
  • 커널을 얻은 후 나머지는 대부분 장치를 / boot / img /에 복사하고 menu.lst에 올바른 항목을 생성한다고 생각합니다. 커널이 참조 할 수있게되면 시스템 단위로 시스템에서이를 수행 할 수 있습니다.

전반적인 목표 :

GRUB 부팅 메뉴에서 여러 OS를 부팅 할 수있는 8GB USB 플래시 드라이브를 만들려고합니다. OS를 추가하거나 빼려면 적절한 파일을 / boot / img / [SystemName] 및 / boot / kernel 폴더에 복사 한 다음 menu.lst 파일을 편집하면됩니다. 따라서이 첫 번째 단계는 중복을 줄이려고하기 때문에 많은 OS가 공유하는 커널을 찾는 것입니다.


커널을 추가 한 후 갖고 싶은 것은 무엇입니까? 부팅 할 수있는 작동중인 OS를 원하십니까?
phunehehe

@phunehehe, 감사합니다! 전반적인 목표를 포함하도록 게시물을 업데이트했습니다.
SeanKilleen

다양한 배포판의 LiveCD 이미지를 USB 드라이브에 덤프 한 다음 부팅 할 수있는 것처럼 들립니다. 이 올바른지?
Wodin

@Wodin : 기본적으로 그렇습니다. LiveCD (쓰기 가능한 미디어에 쓰기 때문에 쓰기 기능이 있음), 원하는 모든 배포판 / 도구를위한 하나의 통합 부트 로더.
SeanKilleen

답변:


4

당신이 달성하려고하는 것은 부트 기술을 늘리는 것입니다.

첫째, 앞에서 말했듯이 배포판에는 요구 사항이 매우 다릅니다. 둘째, 좋은 점은 최소한의 요구 사항이 필요한 배포판을 찾을 수도 있다는 것입니다.

GRUB4DOS를 부트 로더로 사용하는 것이 좋습니다. 이 링크 는 USB와 함께 사용하는 방법을 참조하십시오 (find --set root-명령이 있기 때문에 USB와 같은 모바일 장치가있는 경우 중요합니다).

그런 다음 사용할 파티션 수를 결정해야합니다. 표준 "전체 설치"는 항상 단일 파티션에 있습니다. 따라서 8GB USB 스틱이 있고 최소 설치를 허용하는 4GB 파티션을 사용하는 경우 데비안이나 페도라와 같은 주요 배포판의 두 가지 "전체 설치"로 제한됩니다.

그러나 작고 특화된 Linux 배포판이 있습니다. 예를 들어 "Puppy Linux"는 매우 작으며 특수한 "Frugal Installation"모드가 있습니다. 그것은 여러 가지 맛이 있습니다 (예 : MacPup은 데스크탑과 같은 Apple 또는 64 비트 Linux 인 Fatdog64를 구현하려고 시도합니다).

이 "고급 설치"모드에서는 정확히 1 개의 디렉토리 만 사용하며 하드 디스크 (또는 USB)의 기존 Linux 또는 Windows와 병렬로 설치할 수 있습니다. 비슷한 모드를 지원하는 다른 배포판이 있다고 확신합니다.

Puppy Linux는 크기가 작고 (<150MB) 각 설치마다 작은 저장 파일을 예약한다고 가정하면 (512MB) USB 스틱에 10 개의 서로 다른 운영 체제를 쉽게 설치할 수 있습니다. 사용할 수있는 더 작은 Linux (Slitaz, Tinycore)도 있습니다.

예를 들어, 현재 PC 설치에서 menu.lst (GRUB4DOS) 파일을 첨부합니다. 처음 8 개 항목은 hd0,2 (예 : 첫 번째 hardisk의 세 번째 파티션)에서 모두 다른 Puppy Linux 설치입니다. 작은 여분의 파티션과 원래 Windows-XP에 데비안 설치.

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의 menu.lst가 비슷하게 보일 수 있으므로 GRUB4DOS 명령 find --set-root --ignore-floppies /lupq511/initrd.gz (모든 드라이브에서이 파일을 찾습니다)은 USB를 사용하는 경우 매우 유용 할 수 있으므로 드라이브에 고정 된 항목을 사용할 필요가 없습니다.

위의 정보를 통해 원래 질문에 대한 의견을 제시하십시오.

Q : * / boot / img / [SystemName] 폴더는 특정 시스템의 이미지를 저장한다는 것을 알고 있습니다.이 시스템은 / boot / kernel 디렉토리에 저장된 다양한 (또는 동일한) 버전의 Linux 커널을 사용할 수 있습니다 (최소한 그게 내가 설정하고 싶은 방법입니다)

A : 대부분의 주요 배포판은 파티션에 대한 배타적 권리를 갖고 파일에 대한 특정 디렉토리 구조를 설치해야하므로 잘 작동하는지 확실하지 않습니다. 내 의견으로는 기본 설정을 존중하고 배포에 필요한 것을 제공하는 것이 좋습니다. 즉 일부는 독점 파티션이 필요하고 일부는 공유 파티션의 디렉토리에 만족할 것입니다. 나는 기본이 아닌 방식으로 여러 개의 OS를 1 파티션에 설치할 수 없다고 말하지는 않지만 문제가 있기를 간절히 바라며 Linux 초보자에게는 실용적이지 않습니다. 게시물 맨 아래에 언급 할 수있는 가능한 해결 방법 ( "Wubi 유사"설치).

Q : * 그러나 이러한 시스템의 대부분은 "linux"(버전을 명시하지 않음)라는 디렉토리에 커널을 가지고 있습니다. 이 커널이 모두 사용하는 커널을 검색 할 수 있지만 커널 자체를 / boot / kernel에 복사 할 수있는 가장 좋은 곳은 무엇입니까?

A : 커널은 배포판이있는 곳으로 정확히 가야한다고 생각합니다. 별도의 / boot / kernel 폴더에 저장할 필요가 없으며 배포간에 공유하지 않는 것이 좋습니다. 커널의 저장 공간은 최소 2-3MB입니다. 실제로 많은 버전과 하위 버전이 있으며 때로는 배포판 커널에 적용되는 특정 패치가 있습니다. 다른 / 예상치 않은 커널에 플러그인하는 것은 불필요한 실험입니다.

Q : * 커널을받은 후 나머지는 대부분 장치를 / boot / img /에 복사하고 menu.lst에 올바른 항목을 생성한다고 상상하십니까? 커널이 참조 할 수있게되면 시스템 단위로 시스템에서이를 수행 할 수 있습니다.

A : 앞에서 언급했듯이, 배포판이 필요한 배포판에 대해 별도의 파티션을 더 잘 만들고 자체 폴더에 욕심없는 배포판을 혼합하십시오. 커널, initrd 및 나머지 배포판을 하나의 단위로 취급하십시오.

마지막 아이디어. 다른 파티션을 사용하지 않으려면 자체 파티션에 전체 설치를 요구하는 배포판에 대해 "WUBI"설치를 시도해보십시오. 즉, USB에 자체 ext2 / ext3 파일 시스템을 사용하여 큰 파일을 만든 다음 "드라이브"로 마운트하고 OS를 설치해야합니다. (이것은 가장 잘 알려진 응용 프로그램이므로 WUBI라고 부릅니다).

다음은 "Wubi 설치"를 부팅하기위한 Grub4dos menu.lst 항목이어야합니다.

# 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

에서 여기 .

리눅스를 포함하고있는 "root.disk"다음에 2 번의 "set root"명령이 loop0으로 마운트 된 것을 볼 수 있습니다.

완전한 연습이 아니지만 몇 가지 아이디어를 줄 수 있기를 바랍니다.


죄송합니다. Wubi에 대한 Grub 항목에 대한 두 번째 링크가 잘못되었습니다 (두 번째 링크가 "스팸으로 보호"된 첫 번째 게시물이므로). 올바른 링크는 다음과 같습니다. blogold.chinaunix.net/u3/113851/showart_2311251.html
Emil WidmannEmil

1

다음은 두 가지 가이드입니다.

둘 다 각 커널마다 별도의 파티션을 사용한다고 생각합니다.

" /boot/grub/menu.lst " 의 항목 은 다음과 같습니다.

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

그것은 당신이 거기에 넣는 배포판에 달려 있습니다. 그들 중 일부는 initramfs에서 불쾌한 일을하기 때문에 어려워집니다. 일부 라이브 배포판은 라벨을 검색하고 일부는 UUID를 검색합니다. 당신은 그것을 제공 할 수 없습니다.

해결책은 쉽지 않습니다. 라이브 배포판을위한 새로운 맞춤형 램 디스크를 만들어야합니다.

나는 내가 틀리지 않았기를 바란다 : D


0

이러한 커널 각각과 함께 사용하려면 사용자 공간이 필요합니다. (프로그램, 구성, 작동) 전통적으로, 각각의 개별 OS에 대해 최소한 하나의 파티션을 사용 하고 GRUB 파티션 자체는 / boot로 마운트됩니다 (실제로이 디렉토리의 하위 디렉토리로 부팅하지 않았습니다) 파티션; 루트 디렉토리이며 grub /을 하위 디렉토리로 사용합니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.