USB 플래시 드라이브에 여러 Linux 배포판을 설치하는 방법은 무엇입니까?

USB 플래시 드라이브에 여러 Linux 배포판을 설치하는 방법은 무엇입니까?

여러 Linux 시스템(라이브 버전은 제외)을 포함하도록 분할된 USB 스틱을 설계하고 싶습니다. 특히, 동일한 USB 스틱에 최소 두 가지 다른 버전의 Fedora, 즉 64비트 아키텍처용 Fedora 24와 32비트 아키텍처용 Fedora 8을 갖고 싶습니다. 내 의도는 랩탑의 공간을 차지하지 않고(다른 파티션이나 가상 머신을 통해) 작업에 필요한 머신 환경을 복제하고 USB 스틱을 랩탑에 연결하여 OS를 부팅하는 것입니다.

지금까지 GRUB2와 함께 32 Go USB 스틱에 Fedora 24를 설치하여 Fedora 24 부팅과 랩톱 운영 체제 중 하나를 선택하여 부팅할 수 있었습니다. 둘 다 각각 10,01 Gio와 500 Mio의 두 파티션을 사용하므로 다른 Linux 배포판에 사용하려는 할당되지 않은 공간은 20 Go 미만입니다. USB 스틱의 현재 상태를 더 잘 미리 볼 수 있도록 GParted를 사용하여 USB 스틱을 읽을 때 본 내용은 다음과 같습니다.

파트 G 쇼

문제는 USB 스틱을 삽입할 때 부팅 메뉴에서 Fedora 8을 선택할 수 있도록 GRUB2를 업데이트할 때 Fedora 8을 USB 스틱에 안전하게 추가하는 방법을 모른다는 것입니다(특히 제가 기억하는 바에 따르면 Fedora 8은 이전 GRUB2보다 약간 더 오래되었습니다). 특히 다음과 같은 질문이 있습니다.

  • 나중에 더 많은 운영 체제를 위한 공간을 확보하기 위해 Fedora 24가 있는 파티션의 크기를 조정하는 것이 안전합니까?
  • USB 스틱에 새 파티션을 생성하고 라이브 버전이 아닌 새 OS를 설치하기 위해 따라야 하는 일반적인 절차는 무엇입니까? (필요한 경우 라이브 버전과 함께 두 번째 USB 스틱을 사용할 수 있습니다.)
  • 목록에 새 운영 체제를 표시하기 위해 USB 스틱의 GRUB2를 어떻게 업데이트합니까?

답변해 주셔서 미리 감사드립니다.

답변1

USB 플래시 드라이브에 여러 Linux 배포판을 설치하는 방법은 무엇입니까?

생각하다:

  • USB 드라이브에서 BIOS 부팅
  • 마스터 부트 레코드 파티션
  • GRUB 부트로더

도구:

개요:

  • USB 드라이브의 파티션 테이블 및 부팅 기록 지우기
  • USB 드라이브에 파티션 만들기
  • 가상 머신에서 USB 드라이브용 운영 체제 만들기
  • clonezilla를 사용하여 새 운영 체제 복제
  • 운영 체제를 USB 드라이브로 복원
  • GRUB2 업데이트 및 사용자 정의

1 단계

도구를 준비하고 USB에 넣을 운영 체제, 파티션 크기, 스왑 파티션 사용 여부를 결정하세요.

USB는 총 32GB인 것 같습니다.

파티션을 설정해보겠습니다.

Microsoft 상호 운용성을 위해 사용되는 NTFS 16GB 파티션.

Ubuntu14 32비트 서버 4GB ext4(1GB 스왑 파티션 포함)

Ubuntu16 64비트 서버 8GB ext4(4GB 스왑 파티션 포함)

노트:두 운영 체제 모두에서 대기 또는 최대 절전 모드를 사용하지 않는 경우 스왑 파티션을 공유하거나 각 운영 체제 파티션에서 스왑 파일을 사용할 수도 있습니다.

파티션 레이아웃:

  • P1 - 15GB NTFS
  • P2 - 4GB 확장4
  • P3 - 8GB 확장4
  • P4 - 확장
  • E1 - 4GB 스왑
  • E2 - 1GB 스왑

노트:BIOS와 MBR은 4개의 기본 파티션만 볼 수 있습니다. 이 제한을 극복하려면 단일 기본 파티션 대신 확장 파티션을 사용하십시오.


2 단계

USB 드라이브를 준비하세요.

"test"라는 새 가상 머신을 생성합니다. 이 가상 머신에는 하드 드라이브가 필요하지도 않고 필요하지도 않습니다. 이렇게 하면 USB 드라이브가 생성됩니다 /dev/sda. 이렇게 하면 나중에 일이 더 쉬워질 것입니다.

Parted Magic ISO를 VM에 연결하고 ISO로 부팅합니다.

USB 드라이브를 연결하고 "가상 머신에 전달"

USB가 VM에 표시되는지 확인하고 장치 번호를 기록해 둡니다.

데스크탑 아이콘에서 Partition Editor를 실행하세요.

내 설정의 USB 드라이브는 다음과 같습니다./dev/sda

파티션 테이블을 0으로 만듭니다. 이렇게 하면 기기의 모든 정보가 삭제됩니다. 보관하려는 데이터를 복사하는 것부터 시작하세요.

  • 잘못된 장치를 초기화하면 컴퓨터가 부팅되지 않을 수 있으므로 올바른 장치(예: /dev/sda)가 있어야 합니다.
  • dd if=/dev/zero of=/dev/sda bs=512 count=4

GParted에서 드라이브 목록 새로 고침(ctrl+R)

장치 -> "msdos" 파티션 테이블 생성

파티션 생성:

노트:결국 남은 공간을 "사용"하기 위해 NTFS 파티션을 만들었습니다.

  • 공간의 백엔드에 확장 파티션을 만듭니다. 5GB 또는 5120
  • 확장 파티션에 두 개의 스왑 파티션을 만듭니다. 리눅스 스왑을 입력하십시오. 4GB, 1GB. 확장 파티션이 거의 가득 찼습니다.
  • 할당되지 않은 공간 끝에 2개의 운영 체제 파티션을 만듭니다. ext4를 입력하세요. 4GB, 8GB.
  • 4GB에 "Ubuntu14"라는 레이블을 지정합니다(복원 시 레이블이 변경되므로 식별에 도움이 됩니다).
  • 8GB에 "Ubuntu16"이라는 레이블을 지정합니다(복원 시 레이블이 변경되므로 식별에 도움이 됩니다).
  • 드라이브 시작 부분에 할당되지 않은 나머지 공간을 사용하여 NTFS 데이터 파티션을 만듭니다. NTFS를 입력하세요.
  • NTFS를 "데이터"로 표시

변경 승인. 이 정도에 가깝다고 봐야 합니다. 내 USB 드라이브는 1TB이므로 NTFS 파티션이 훨씬 더 큽니다. GParted 스크린샷


3단계

USB 드라이브에 복원할 운영 체제를 준비합니다.

새 가상 머신을 생성하고 운영 체제를 설치합니다. 이 예에서는 Ubuntu14 서버가 32비트입니다. VM 설치 드라이브를 USB의 파티션 크기보다 작게 설정했습니다. 4GB. 설치하는 동안 LVM 대신 MBR을 사용했고 설치 시 스왑 파티션이 생성되도록 했습니다.

새 가상 머신을 생성하고 추가 운영 체제를 설치합니다. 이 예에서는 Ubuntu16 서버가 64비트입니다. VM 설치 드라이브를 USB의 파티션 크기보다 작게 설정했습니다. 8GB. 설치하는 동안 LVM 대신 MBR을 사용했고 설치 시 스왑 파티션이 생성되도록 했습니다.

각 운영 체제에 필요한 변경, 업데이트, 설치를 수행합니다.

새 가상 머신 종료

새 가상 머신 복제를 시작합니다.

각각의 새 VM에 연결 pmagic_2013_08_01.iso하고 ISO에서 부팅합니다.

각 가상 머신의 파티션을 봅니다. 설치된 운영 체제의 위치를 ​​기록해 두십시오. 둘 다 여야 합니다 /dev/sda1. (시간에 맞춰 조정하지 않은 경우)

이제 데스크탑 아이콘에서 clonezilla를 사용하여 각 운영 체제를 복제하십시오. 복제된 이미지를 SSH를 통해 데스크탑에 배치할 것이므로 clonezilla를 시작하기 전에 네트워크를 설정하세요.

크론질라 옵션:

  • device-image - 장치 /dev/sda1을 이미지로 복제합니다.
  • ssh_server - 내 데스크탑에 이미지를 배치합니다. 손이 닿는 곳에 보관하세요.
  • 초보자 모드 - 대부분의 기본값이 작동합니다.
  • saveparts - OS 파티션만 필요합니다.
  • 나중에 알아볼 수 있는 이름을 이미지에 지정하십시오.
  • sda1 - 운영 체제 파티션을 선택합니다. 그냥 선택사항이어야 하지만 아닐 수도 있습니다.
  • 소스 파일 시스템 검사/복구 건너뛰기 - VM은 모두 깨끗하고 사용할 준비가 되어 있어야 합니다.
  • 예, 저장된 이미지를 확인하세요. 복제된 이미지가 올바른 파일인지 확인하세요. 프롬프트를 따르십시오.
  • 기다리다.
  • 완전한! -- 이때 전원을 꺼주시면 됩니다.

4단계

운영 체제 이미지를 USB 드라이브에 복원합니다.

가상 드라이브가 연결되지 않은 "테스트" VM으로 돌아가서 에서 시작합니다 pmagic_2013_08_01.iso.

USB 드라이브를 "테스트" 가상 머신에 전달합니다.

데스크탑 아이콘에서 Partition Editor를 실행하세요. 우리는 다시 여기로 돌아왔습니다. 스크린샷을 참조하세요.

USB 파티션이 있는 운영 체제를 이미지 파티션과 일치시킵니다.

우분투14:

  • 미러 파티션--/dev/sda1
  • USB 파티션--/dev/sda3

우분투16:

  • 미러 파티션--/dev/sda1
  • USB 파티션--/dev/sda2

노트: 기본적으로 이 버전의 clonezilla는 이미지를 원래 있던 것과 동일한 파티션에 복원합니다. /dev/sda1도착하다 /dev/sda1. 이는 우리가 원하는 것이 아니므로 이 해킹은 이미지를 USB 파티션에 복원합니다.

다른 복제된 파티션에 이미지를 복원하는 clonezilla 해킹:

새 파티션 ID를 사용하여 이미지 디렉터리의 모든 파일 이름을 바꿉니다.

/home/jc/clonezilla_images/ubuntu14/sda1*에서 /home/jc/clonezilla_images/ubuntu14/sda3*으로

/home/jc/clonezilla_images/ubuntu14/parts 파일의 내용을 수정합니다. "sda1"을 "sda3"으로 교체

Ubuntu16과 동일하며 숫자 sda2를 조정합니다.

노트:VM과 USB의 장치 sda로 시작했습니다. 다른 장치(예: /dev/sdb)를 사용하는 경우 더 많은 파일을 변경해야 합니다. 동일한 장치에서 두 가지를 모두 사용하는 것이 더 쉽습니다. /dev/sda.

clonezilla를 통해 이미지를 USB 드라이브로 복원

크론질라 옵션:

  • device-image -- 이미지에서 장치 /dev/sda1을 복원합니다.
  • ssh_server - 또는 이미지를 어디에 두든 상관없습니다.
  • 초보자 모드 - 대부분의 기본값이 작동합니다.
  • Restoreparts - 개별 파티션을 복원합니다.
  • 복구할 이미지 선택
  • 이미지에 대한 올바른 USB 파티션을 선택하십시오 - Ubuntu14에서 sda3까지;
  • 프롬프트를 따르십시오.
  • 기다리다.
  • 명령줄 프롬프트를 입력합니다. -- 복구할 이미지가 더 있습니다.

clonezilla를 다시 시작하고 모든 이미지에 대해 이를 반복합니다.

복원 사이에 내 USB가 가상 머신에서 마운트 해제되었으므로 USB 드라이브를 다시 통과해야 했습니다.


5단계

USB 드라이브에 GRUB 설치

Grub 부트로더는 USB 드라이브의 처음 512바이트에 설치됩니다. 로더는 grub.cfg 파일을 가리킵니다. Ubuntu16 파티션에 파티션을 배치해 보겠습니다. 그것은 될 수 있습니다어딘가에그럽은 그것을 읽을 수 있습니다.

이를 위해 호스트 운영 체제를 사용할 것입니다.

가상 머신에서 실시간 운영 체제를 사용하여 이 작업을 수행할 수 있습니다.

grub2가 포함된 최신 Linux 운영 체제를 사용해야 합니다.

USB를 연결합니다.

내 USB 드라이브가 현재 장치로 마운트되어 있습니다 /dev/sdf. 귀하의 장치는 다를 것입니다.

grub.cfg파티션이 존재할 곳에 파티션을 설치하십시오.

노트:복구된 각 운영 체제에는 가상 머신에서 부팅 가능한 운영 체제이기 때문에 grub.cfg 파일이 있습니다. USB 부트로더가 가리키는 grub.cfg를 가리키고 수정하는지 확인하십시오.

우분투16 ext4

sudo mount /dev/sdf2 /media/usb_u16

USB 장치에 grub 부트로더 설치

sudo grub-install --recheck --boot-directory=/media/usb_u16/boot /dev/sdf

그러면 구성 파일 포인터가 Ubuntu16 파티션 부팅 디렉터리에 배치됩니다. Ubuntu의 범용 위치. 당신은 어디에나 있을 수 있습니다.

설치가 완료되었습니다. 오류가 보고되지 않았습니다.

grub.cfg파일을 템플릿으로 만듭니다 .

sudo grub-mkconfig --output=/media/usb_u16/boot/grub/grub.cfg

여기서 중요한 점은 grub-mkconfigUSB 드라이브를 감지하고 USB 드라이브에 설치한 운영 체제에 대한 부팅 항목을 생성한다는 것입니다. 우리가 원하지 않는 부분은 호스트에 마운트된 모든 드라이브를 조사하고 해당 드라이브에 대한 항목을 생성한다는 것입니다.

이제 모든 것을 제거하고 USB 부팅을 테스트하십시오.

모든 것이 정상이면 USB 운영 체제로 부팅할 수 있습니다. 돌아가지 않으면...


6단계 사용자 정의 USB 드라이브의 grub.cfg

이 USB 드라이브를 부팅하면 USB가 다른 PC에서 부팅되더라도 호스트 PC에 운영 체제가 표시됩니다. 이 문제를 해결해 봅시다.

더 많은 정보를 모아보자.

각 파티션에는 UUID 번호가 할당됩니다. USB 드라이브의 UUID를 가져옵니다.

blkid

/dev/sdf2: UUID="078ecc53-f73c-4cc7-9d45-f78aa534b7c5" TYPE="ext4" PARTUUID="00005785-02"
/dev/sdf3: UUID="a4654333-ee62-4dac-8c09-79a034e3125d" TYPE="ext4" PARTUUID="00005785-03"
/dev/sdf4: LABEL="data" UUID="667308CA28B6BB86" TYPE="ntfs" PARTUUID="00005785-04"
/dev/sdf5: UUID="8646e3f8-4f5c-40d4-a409-c4d65bf98d21" TYPE="swap" PARTUUID="00005785-05"
/dev/sdf6: UUID="61b8680c-22c9-4efc-98a1-2aaaa4a7f304" TYPE="swap" PARTUUID="00005785-06"

당신은 다를 것입니다.

나중에 사용할 수 있도록 2개의 스왑 파티션 UUID를 저장합니다. /etc/fstab시작 시 자동으로 설치되도록 파일 에 이를 추가합니다 .

2개의 운영 체제 파티션 UUID:

/dev/sdf2: UUID="078ecc53-f73c-4cc7-9d45-f78aa534b7c5" -- Ubuntu16
/dev/sdf3: UUID="a4654333-ee62-4dac-8c09-79a034e3125d" -- Ubuntu14

이 두 파일을 grub 구성 디렉터리 memdisk에 복사하고 이미지가 있는 경우 이미지를 복사합니다.super_grub2_disk_hybrid_2.02s9.isosplash.jpg

우분투16 ext4

sudo mount /dev/sdf2 /media/usb_u16

sudo cp ./memdisk /media/usb_u16/boot

sudo cp ./super_grub2_disk_hybrid_2.02s9.iso /media/usb_u16/boot

sudo cp ./splash.jpg /media/usb_u16/boot

이미 생성된 백업 복사본을 생성합니다.grub.cfg

sudo mv /media/usb_u16/boot/grub/grub.cfg /media/usb_u16/boot/grub/grub.cfg.orginal

맞춤 제작grub.cfg

sudo vi /media/usb_u16/boot/grub/grub.cfg

간단히 말해서, grub.cfg.orginal에서 최소한의 것만 복사하면 됩니다. grub은 insmod... 컨텐츠를 설정하고 gfxmode=... 컨텐츠와 부팅 항목을 표시합니다. 위의 UUID번호를 검색하시면 스타트업 아이템을 찾으실 수 있습니다. 하위 메뉴 항목을 포함하여 모든 항목을 복사하거나 기본 항목만 복사합니다.

부팅 항목이 없더라도 호스트의 모든 운영 체제에서 부팅할 수 있습니다 memdisk.super_grub2_disk_hybrid_2.02s9.iso

이것이 올바른 접근 방식이 아닌 데에는 여러 가지 이유가 있지만 효과가 있습니다.

예시 수정그럽 구성 파일이 USB 드라이브의 경우.

grub.cfg사용자 정의 파일을 덮어쓰려고 시도하므로 사용자 정의 파일을 백업하십시오 .

sudo cp /media/usb_u16/boot/grub/grub.cfg /media/usb_u16/boot/grub/grub.cfg.custom


7단계

설치된 운영 체제 조정

  • 스왑 파티션 UUID를 다음에 추가하십시오./etc/fstab
  • USB(NTFS 데이터, 기타 OS ext4)의 모든 자동 마운트 파티션을/etc/fstab
  • Ubuntu에서는 변경 사항에 따라 기본 grub 항목을 조정하여 운영 체제가 업데이트되면 변경 사항이 새 grub 메뉴에 전파됩니다.

시험을 봐요!

답변2

jc__ 튜토리얼에 대한 몇 가지 제안 및 의견

우선, 내 원래 게시물에 명시된 목표를 달성하는 방법에 대한 튜토리얼을 게시해 주신 jc__(다시 한 번)에게 큰 감사를 드립니다. 설치된 운영 체제를 부팅할 때 몇 가지 추가 문제 해결을 수행해야 할 수도 있지만 이 방법이 작동한다는 것을 확인할 수 있습니다. 이것이 바로 이 튜토리얼을 따르는 동안 고려할 수 있는 몇 가지 사항을 열거하기 위해 이 답변을 작성한 이유입니다.

0. 이전 배포판을 선택하는 경우 다시 확인하세요.할 수 있는완전히 시작하세요

저는 Fedora 8이 현재 노트북과 같은 최신 하드웨어에서 부팅하기에는 너무 오래되었다는 사실을 뼈저리게 깨달았습니다. (참고로 Fedora 8은 2007년경에 출시되었고 제 노트북은 2010년대에 제작되었습니다.) 정확한 내용은 기억나지 않지만(동료에게 배웠기 때문에) 커널이 내 하드웨어를 처리하는 데 문제가 있고 모든 것을 올바르게 설치할 수 없는 것 같아서 결국 Fedora를 포기하게 되었습니다. 8을 사용하여 Fedora 14로 전환했습니다(훌륭하게 작동함).

하지만어떻게배포판이 컴퓨터에서 제대로 부팅되는지 확인할 수 있나요? 간단한 방법은 대상 배포판의 라이브 버전을 사용하여 USB에서 부팅하는 것입니다. 라이브 버전에서 모든 것이 제대로 부팅되면 VM을 통해 배포판을 설치하고 해당 파티션을 USB 스틱에 복제하고 USB에서 부팅하는 데 아무런 문제가 없습니다.

내 경우에는YUMI - 멀티부트 USB 생성기내 노트북에서 이전 Fedora의 여러 라이브 버전을 테스트합니다. 물론 이 조언은 나처럼 이전 배포판을 사용해야 하는 경우에만 적용됩니다.

1. 데이터 분할을 위해 FAT32 또는 ext3/ext4 사용을 고려하십시오.

어느 시점에서 Ubuntu 16.04는 NTFS 형식의 데이터 파티션을 처리하는 데 문제가 있었습니다. 결국 저는 모든 Linux 배포판에서 작동하는 이전 형식인 FAT32로 다시 포맷했습니다. Linux만 사용한다면 ext3/ext4도 괜찮을 것입니다(제가 아는 한 Windows는 이러한 파일 시스템을 처리할 수 없습니다). 하지만 직접 테스트하지는 않았습니다.

이제 USB의 OS와 호스트의 OS 간에 데이터를 쉽게 공유하는 방법으로 데이터 파티셔닝을 사용합니다.

2. 파티션 복제를 위해 보조 USB 스틱 사용을 고려하세요.

첫 번째 단계에서는 두 번째 USB 스틱을 갖는 것이 저장용으로 사용할 수 있으므로 매우 실용적입니다 clonezilla. 폴더를 어디에 넣을 것인지 clonezilla묻는 /home/partimag/메시지가 나타나면 두 번째 USB를 연결하지 않은 채 메뉴(위의 ssh_server 바로 아래)에서 첫 번째 옵션을 선택합니다. 컴퓨터에 꽂은 다음 연결하고 5초 정도 기다렸다가 Enter 키를 누른 다음 폴더 옵션을 clonezilla열거할 때 두 번째 USB 스틱을 선택합니다 /home/partimag/. 후속 작업은 jc__ 열거와 동일합니다.

물론 이 접근 방식은 결과를 변경하지 않으며 호스트의 USB 스틱 파티션과 대상 운영 체제가 있는 파티션의 복제/복구를 전혀 포함하지 않는다는 장점이 있습니다. 디스크를 파티션할지 확실하지 않은 경우 다음을 시도해 볼 수 있습니다.

3. 커널을 로드한 후 USB 운영 체제 부팅에 실패하는 경우 재구축 initrd/ initramfs이미지를 수행하십시오.

dracut대상 운영 체제에 따라 Fedora 24를 시작할 때 대기열 시간 초과와 같이 이 주제에 대한 일부 의견에서 제가 요청한 것과 유사한 문제가 발생할 수 있습니다.

내 경우에는 Fedora 8의 특별한 경우(항목 0 참조)를 제외하고는 이미지를 다시 빌드하여 문제를 해결했습니다 initrd. 배포판과 최신 버전에 따라 이미지에 접두어를 initramfs대신 사용할 수도 있습니다 initrd. 이름에 관계없이 이 파일의 목적은 동일합니다. 즉, 실제 파일 시스템이 마운트되기 전에 시작 시 임시 파일 시스템을 유지하는 것입니다. 이 파일이 손상되었거나 올바르지 않거나 누락된 경우 시스템을 올바르게 시작할 수 없습니다.

모든 Linux 배포판에 이 이미지를 다시 빌드할 수 있는 유틸리티가 제공되기를 바랍니다. 내 (간략한) 경험에서:

  • 이전 배포판:mkinitrd
  • 최근 Ubuntu 배포판:mkinitramfs
  • 최근 Fedora 릴리스:dracut

노트:이미지를 (재)빌드할 때 모든 유틸리티에서 이 파일을 고려합니다 /etc/fstab. 이미 이것을 활용하십시오협회USB 운영 체제로 파티션을 교체하십시오. 에서는 /etc/fstaban을 사용하여 UUID파티션을 나타낼 수 있으므로 fdisk및를 사용하여 blkid원하는 스왑 파티션의 UUID를 가져와 /etc/fstab그에 따라 업데이트합니다.

chroot제가 나열한 세 가지 명령 중 하나를 사용하여 이미지를 재구축하려면 먼저 재구축하려는 운영 체제 initrd/ initramfs이미지 로 이동해야 합니다 . 나는 기본적으로 이것과 동일한 접근 방식을 따릅니다.지도 시간, 여기에는 결함이 있는 운영 체제(예: USB 운영 체제 중 하나)가 있는 호스트에 파티션을 설치하고 일부 바인드 명령을 사용하여 chroot해당 파티션에 올바르게 설치하는 작업이 포함됩니다. /mnt필요한 경우 폴더 내에 하위 폴더를 만들 수 있습니다. 제 경우에는 Fedora 14로 chroot하기 위해 다음 명령을 사용했습니다.

sudo mkdir /mnt/usb_f14
sudo mount /dev/sdb3 /mnt/usb_f14
sudo mount --bind /proc /mnt/usb_f14/proc
sudo mount --bind /dev /mnt/usb_f14/dev
sudo mount --bind /sys /mnt/usb_f14/sys
sudo chroot /mnt/usb_f14

/dev/sdX파티션이 무엇인지 미리 확인하는 것을 잊지 마세요 fdisk. USB 운영 체제에 대한 루트 액세스 권한이 있으면 이 /boot폴더로 이동하십시오. 원할 경우 old-새 이미지를 생성하기 전에 기존 이미지(있는 경우)의 이름을 바꿔서 보존하세요(예를 들어 간단히 접두사를 붙일 수 있음). 그런 다음 실행

ls /lib/modules/

여기에는 USB OS에 있는 다양한 커널이 나열됩니다(대부분의 경우 하나만 있어야 함). 실제로 위에 나열된 명령을 사용하려면 이미지를 빌드하는 데 사용되는 커널을 제공해야 합니다. 그런 다음 액세스할 수 있는 유틸리티에 따라 다음 세 가지 명령 중 하나를 실행해야 합니다( 는 my-kernel나열된 커널 중 하나를 의미합니다 ls /lib/modules/. 원하는 경우 이미지에 다른 이름을 사용할 수 있습니다).

  • mkinitrd initrd-my-kernel.img my-kernel
  • mkinitramfs -o initramfs-my-kernel.img my-kernel
  • dracut initramfs-my-kernel.img my-kernel

운영 체제에 따라 누락된 모듈에 대한 일부 메시지가 나타날 수 있습니다. 이미지가 생성되는 한 이를 무시할 수 있습니다(Fedora 14용 이미지를 다시 빌드할 때 일부를 얻었는데 여전히 정상적으로 부팅됩니다).

또한 이전 이미지를 직접 교체하는 경우 강제로 덮어쓰려면 명령에 플래그를 추가해야 할 수도 있습니다. 예를 들어 의 경우 를 dracut추가해야 합니다 --force. 다른 명령에 대해서는 설명서를 참조하세요. 완료되면 USB 운영 체제 파티션을 마운트 해제하고 컴퓨터를 다시 시작하여 부팅 순서를 USB에서 먼저 부팅하도록 설정합니다. 이제 USB 운영 체제가 정상적으로 부팅됩니다.

마지막으로, 새 이미지에 지정한 이름(초기 이미지 이름과 다른 경우)을 기록해 두는 것을 잊지 마십시오. grub.cfg새 이미지를 고려하려면 파일을 업데이트해야 하기 때문입니다.

4. 가상 머신의 파티션을 다시 확인하세요.

파티션을 직접 선택할 수 없는 상태에서 가상 머신에 특정 대상 운영 체제를 설치하는 경우(Fedora 14에서 이 문제가 발생함) 두 개의 파티션으로 끝날 수 있습니다. ext4하나는 폴더를 포함 /boot하고 다른 하나는 이 폴더에 나머지를 포함합니다 파일 시스템의. 이 경우 jc__에 설명된 방법을 사용하여 더 큰 파티션을 복제한 다음 가상 머신을 다시 시작하고 폴더를 위치(예: 보조 USB 드라이브)에 복사한 /boot다음 복제된 파티션에 복구한 후 넣으십시오. . 원본 파일에는 여전히 하나가 아닌 두 개의 파티션이 나열될 수 있으므로 이미지를 /etc/fstab다시 빌드하기 전에 파일을 업데이트하는 것을 잊지 마십시오 (3 참조).initrdext4

5. USB GRUB을 종료하세요. 쉬운 방법입니다.

jc__가 권장 super_grub2_disk_hybrid_2.02s9.iso되고 memdisk호스트에서 모든 옵션을 가져오지만 다음에서도 사용할 수 있습니다 grub.cfg.

menuentry 'Continue to host machine' {
    exit
}

이렇게 하면 USB 스틱의 GRUB이 종료되고 호스트의 부팅 순서가 복원됩니다. 제 경우에는 호스트 컴퓨터가 듀얼 부팅 노트북이기 때문에 이 메뉴 항목을 선택하면 즉시 컴퓨터의 GRUB 메뉴가 표시됩니다.

그게 내 댓글의 전부야. 저는 Linux 문제 해결에 대한 경험이 많지 않기 때문에 이 게시물에 댓글을 달아 오류나 부정확한 설명을 지적해 주시기 바랍니다.

답변3

길고 장황하므로 대답 위치에 두십시오. 답변에 수정이나 추가가 필요한 경우 해당 답변은 수정 및 삭제됩니다.

"grub.cfg(저는 이것을 Fedora 24 파티션에 넣었으므로 /dev/sda2/"

"FC24는 /dev/sda2입니다."

"FC8은 /dev/sda3입니다."

좋습니다. 문제 해결에 도움이 되는 몇 가지 작업을 수행하겠습니다.

USB 파티션 레이아웃 표시

GParted 그래픽 사용자 인터페이스 또는sudo fdisk -l

USB 파티션의 UUID 번호 표시 blkid

grub을 설치하는 데 사용되는 명령을 표시합니다. grub-install그리고grub-mkimage

5단계에서 사용된 VM이 하드 디스크(VHD)에서 부팅되었는지 또는 라이브 운영 체제에서 부팅되었는지 여부. 어떤 운영 체제가 사용됩니까?

"실수로 파티션을 복원했습니까, 아니면 두 운영 체제를 모두 "구출"할 수 있습니까?"

이것은 복구 문제가 아니라 grub 설치 문제라고 생각합니다.

grub.cfg를 확인하세요.

Entry:
Fedora (4.5.5-300.fc24.x86_64) 24 (Workstation Edition)
search ... --hint='hd0,msdos1'  913f30c2-4a22-44eb-a93d-9fad95764f5d
first HD and first partition. --hint='hd0,msdos1
partition UUID 913f30c2-4a22-44eb-a93d-9fad95764f5d
This tells us: /dev/sda1 and was probably the HD not USB. 
Expected.

Entry:
Fedora release 24 (Twenty Four) (on /dev/sda2)
search ... --hint-bios=hd0,msdos2 d4be737a-c4ea-44cd-a22d-781086854ec8
first HD and second partition --hint-bios=hd0,msdos2
partition UUID d4be737a-c4ea-44cd-a22d-781086854ec8
This tells us: /dev/sda2 and is the second partition on the HD not USB.
Not expected if this OS is on the USB.
Expecting second HD (the USB) NOT the same as the booted OS. Perhaps /dev/sdb2

Entry:
Fedora release 8 (Werewolf) (on /dev/sda3)
search ... --hint-bios=hd0,msdos3  8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e
first HD and 3rd partition. --hint-bios=hd0,msdos3
partition UUID 8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e
Not expected if this OS is on the USB.
Expectiong second HD (the USB) NOT the same as the booted OS. Perhaps /dev/sdb3

첫 번째 하드 드라이브(또는 호스트 OS가 설치된 하드 드라이브) 이외의 다른 하드 드라이브를 기대하는 이유는 컴퓨터가 OS(ISO가 아닌 하드 드라이브에서 가정)에서 부팅된 다음 USB 드라이브가 연결되고 다음 HD가 출시될 예정입니다. /dev/sdX X는 드라이브 문자입니다.

이 시점에서는 부팅된 운영 체제(호스트)와 상호 작용하고 있습니다. USB 드라이브가 연결되었습니다. 호스트 운영 체제가 USB를 자동으로 설치했을 수 있습니다. 읽기/쓰기가 마운트된 경우에는 문제가 되지 않습니다. 저는 USB를 꺼내는 것보다 마운트를 해제하고 확실한 위치에 다시 설치하는 것을 선호합니다.

USB 장치 할당을 확인합니다. sudo fdisk -l USB 레이아웃과 크기를 알고 있으므로 /dev/sdX 정보를 얻으십시오.

또는

호스트 컴퓨터에서 USB 플러그를 뽑습니다.

주문하다dmesg

USB를 다시 삽입하세요.

주문하다dmesg

이는 새 장치 및 /dev 할당에 대해 알려줍니다. sdX.

USB 파티션을 원하는 마운트 지점에 마운트합니다.

예:

sudo mount /dev/sdX /media/f24

sudo mount /dev/sdx /media/f8

/media/f24 -- the root of the Fedora24
/media/f8 -- the root of the Fedora8

grub 부트로더를 USB 드라이브에 다시 설치하고 마운트된 파티션을 지정합니다.

sudo grub-install --recheck --boot-directory=/media/f24/boot /dev/sdX

--boot-directory=/media/f24/boot

부트 로더는 여기에서 grub.cfg 파일을 찾습니다. 그건 그렇고, 이미 존재하는 것만으로는 우리를 거기까지 데려갈 수 없습니다.

/dev/sdX

이것은 USB 드라이브입니다. 위에서 수집한 정보입니다. 여기에는 파티션 정보가 없고 장치만 있습니다.

Fedora24 설치로 생성된 파일을 덮어쓸 새 grub.cfg 파일을 생성합니다.

sudo grub-mkconfig --output=/media/f24/boot/grub/grub.cfg

이렇게 하면 Fedora24 설치의 grub.cfg를 덮어쓰게 됩니다.

새 grub.cfg 파일을 확인합니다.

현재 실행 중인 호스트 운영 체제 정보에 대한 항목이 있어야 합니다.

USB 드라이브 운영 체제가 있어야 합니다. 이는 호스트 운영 체제와 다른 장치에 있습니다. /dev/sdX.

또한 명령을 사용하여 다음을 확인할 수도 있습니다.blkid

USB 드라이브 파티션의 UUID 번호는 새 grub.cfg의 UUID 번호와 일치해야 합니다.

노트: USB 부팅 시 /dev/sdX 할당이 올바르지 않습니다. 그것은 중요하지 않습니다. UUID 파티션 번호는 여전히 올바른 파티션을 "찾고" 올바른 운영 체제를 부팅합니다. 이는 나중에 사용자 정의 grub.cfg에서 조정됩니다.

또한 USB 부팅에 올바른 grub.cfg가 로드되었는지 확인하십시오.

위 명령으로 새 grub.cfg에서 색상을 변경한 후

다음 줄을 추가합니다.

# Set menu colors
set menu_color_normal=red/black
set menu_color_highlight=light-gray/red

줄 사이를 맞춰보세요:

### END /etc/grub.d/01_users ###
and
### BEGIN /etc/grub.d/10_linux ###

그럽 메뉴가 다른 색상으로 표시되면 올바른 메뉴가 로드되었음을 알 수 있습니다. grub-install맞다.

이 부분에서 고민하지 마세요. 메뉴 항목 이름만 바꾸면 됩니다...

새 grub.cfg가 UUID 검증을 통과하면 그것이 grub-mkconfig올바른 것입니다.


문제 해결 2부.

Ferora 24 메뉴 항목 보기...

GRUB은 3가지 방법으로 루트 디렉터리를 설정합니다. (Fedora 커널 루트가 아닙니다. 그것은 다른 것입니다.)

1. set root='hd1,msdos2'

이것은 "단단한" 뿌리의 집합입니다. 두번째. 2일에 운전하세요. 분할.

여기서 "비결"은 처음부터 부팅할 때마다 드라이브를 변경할 수 있다는 것입니다. 가장 먼저 감지하는 장치가 첫 번째가 됩니다.

2. search --no-floppy --fs-uuid --set=root --hint-bios=hd1,msdos2 --hint-efi=hd1,msdos2 --hint-baremetal=ahci1,msdos2 d4be737a-c4ea-44cd-a22d-781086854ec8

이 항목은 if기본적으로 UUID가 xxx인 파티션을 원하지만 두 번째 파티션을 찾기 시작한다고 말합니다. 드라이브 번호 2. 분할.

삼. search --no-floppy --fs-uuid --set=root d4be737a-c4ea-44cd-a22d-781086854ec8

이는 if명령문에도 포함되어 있습니다. 이는 플로피 드라이브를 제외하고 볼 수 있는 모든 곳에서 UUID xxx가 있는 파티션을 찾는다는 의미입니다.

우리는 사용하고 싶습니다세 번째 장소통사론.

노트:GRUB는 드라이브를 0(hd0 - hdn)부터 계산하고 파티션을 1(msdos1 - msdosn)부터 계산합니다. GRUB2수동.

"내 생각에는 initrd/initramfs에 문제가 있는 것 같습니다."

예, 저도 그렇게 생각합니다. 하지만 파일 자체가 아니라 GRUB가 파일을 찾는 곳입니다.

/boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8GRUB은 Linux 커널을 로드 하거나 더 정확하게는 로드하려고 합니다.GRUBroot/boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8

GRUBroot = 파티션 d4be737a-c4ea-44cd-a22d-781086854ec8. 올바르게 설정했다면.

initrd도 마찬가지다.

GRUBroot/boot/initrd-2.6.23.1-42.fc8.img

그런데:첫 번째 grub.cfg는 Fedora24에 다른 커널과 initrd를 로드하도록 지시합니다. 프로덕션 커널 및 언어상의 이유로 인해 이러한 기능을 다시 사용하고 싶을 수도 있습니다.

linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8

initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img

파일이 여전히 존재하는지 확인하십시오.

"/dev/root를 찾을 수 없습니다"

응, 왜냐면

linux /boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8 root=/dev/sdc2

즉, 커널 루트는 3번째에 있습니다. 드라이브 번호 2. 분할.

텍스트 편집을 통해 grub.cfg를 변경하여 새 항목을 만들어 보겠습니다. 이 작업을 완료한 후 다른 콘텐츠를 삭제하세요.

menuentry 'Fedora 24 on USB drive' {
    insmod part_msdos
    insmod ext2

    ## set the GRUB root using UUID only.
    search --no-floppy --fs-uuid --set=root d4be737a-c4ea-44cd-a22d-781086854ec8

    ## is F24 root somewhere else?
    ## Probably not.. remove kernel switch root=/dev/sdc2
    linux /boot/vmlinuz-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8
    initrd /boot/initramfs-0-rescue-731a5ce6cbc840ad9cad96ddf48e5db8.img
    ## I think you want these instead if the files still exist. Make adjustments by adding and removing comments ##
    ## commented out
    # linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8
    # initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img  
}

그리고

menuentry 'Fedora 8 on USB drive' {
    insmod part_msdos
    insmod ext2

    ## set the GRUB root using UUID only.
    search --no-floppy --fs-uuid --set=root 8bc6e37c-53b1-4fe9-b242-5b0b9c8c575e

    ## is F8 root somewhere else?
    ## Probably not.. remove kernel switch root=LABEL=/
    ## not familure with this switch, but removed.
    linux /boot/vmlinuz-2.6.23.1-42.fc8 ro rhgb quiet
    initrd /boot/initrd-2.6.23.1-42.fc8.img
    ## I think you want these instead if the files still exist. Make adjustments by adding and removing comments ##
    ## commented out    
    # linux /boot/vmlinuz-2.6.23.1-42.fc8 ro root=LABEL=/ rhgb quiet
    # initrd /boot/initrd-2.6.23.1-42.fc8.img   
}

업데이트가 필요하지 않으며 USB 드라이브로 재부팅하면 됩니다.

etc/grub.d/40_custom이 작업을 수행한 후에는 Fedora 커널 업데이트가 올바른 새 GRUB 메뉴 항목을 감지하고 생성하도록 수정해야 한다는 점을 명심하십시오 .

이 작업이 수행될 수 있는지 확실하지 않습니다. Fedora 커널이 업데이트될 때마다 grub.cfg를 수동으로 업데이트해야 할 수도 있습니다.

linux /boot/vmlinuz-4.5.5-300.fc24.x86_64 root=UUID=d4be737a-c4ea-44cd-a22d-781086854ec8 ro rhgb quiet LANG=fr_BE.UTF-8

initrd /boot/initramfs-4.5.5-300.fc24.x86_64.img

답변4

제공된 답변은 매우 유익하며 프로세스에 대한 통찰력을 제공합니다. 이는 매우 중요하다고 생각합니다(특히 여기 SE에서 우리를 많이 설명하는 독학 유형의 경우).

그러나단지 비슷한 것(정확히 동일하지는 않더라도)을 달성하기 위해 여기에 오는 사람들을 위해 다소 유사한 목표를 달성하는 무료 프로젝트입니다.

https://www.pendrivelinux.com/yumi-multiboot-usb-creator/

이 이름은 어리석습니다. 그래픽이 끈적합니다. 이러한 도구는 효과적이고 매우 잘 작동합니다. 최소한 그들이 제공하는 소스 코드가 도움이 될 수 있습니다.

관련 정보