라이브 디스크에서 시스템을 실행하는 동안 iso에서 부팅하는 방법이 있습니까?

라이브 디스크에서 시스템을 실행하는 동안 iso에서 부팅하는 방법이 있습니까?

이것은 다소 복잡한 질문입니다. 무엇을 기대해야 하는지 설명하겠습니다.

menuentryGRUB 및 ISO 파일의 위치를 ​​추가하고 GRUB 항목을 사용하여 ISO에서 부팅할 수 있다는 것을 알고 있습니다 . (즉이것방법)

그러나 가정해보자:

  • 내 컴퓨터(하드 드라이브)에 GNU/Linux(예: Trisquel 7.0)의 ISO 파일이 저장되어 있습니다./dev/sda3/
  • 에 설치하고 싶어요/dev/sda4
  • 라이브 시스템을 설치하거나 시험해 볼 수 있는 Ubuntu 14.04 설치(부팅 가능) 디스크가 있습니다.
  • 현재 OS가 설치되어 있지 않거나 설치된 시스템이 충돌/손상되었습니다(현재 부트로더와 관련 없음).

문제는 설치 디스크를 사용하여 라이브 환경을 실행하는 경우(예: Ubuntu 14.04를 설치하지 않고 설치하려는 경우) ISO(Trisquel 7.0)에서 부팅하고 /dev/sda3시스템을 설치할 수 있습니까 /dev/sda4? 내가 어떻게 할 수있는?

참고: 설치하려는 시스템의 ISO에서 라이브 디스크/USB를 생성/굽는 것이 더 낫다는 데 동의합니다. 하지만 현재 사용 가능한 디스크/USB가 없는 경우 위의 작업을 수행할 수 있습니까?

가능한 기술이 있다고 생각합니다. 라이브 환경(Ubuntu's)에서 HDD에 GRUB를 설치하고 궁극적으로 부팅하려는 ISO(Trisquel)의 경로를 지정합니다! 어떻게?

답변1

가상 머신에서 테스트합니다. Trisquel Live ISO(하드 드라이브에 있음)에서 부팅하려면 이 방법을 사용하십시오.

필요한 단계는 다음과 같습니다.

  1. Ubuntu Live 디스크로 부팅한 후 설치 프로세스를 시작합니다. /dev/sda4작동하고 부팅 가능한 GRUB를 얻으 려면 최소한 시스템을 최소한으로 설치해야 합니다 . 그러나 전체 설치가 더 쉽습니다(매우 빠릅니다).

    1.a. 설치를 변경으로만 제한하십시오 /dev/sda4. 이렇게 하려면 하드 드라이브 설정을 묻는 메시지가 나타나면 "기타"를 선택해야 합니다.

  2. 설치된 시스템으로 부팅하여 새 GRUB가 제대로 작동하는지 테스트하세요.

    2.a.노트:Ubuntu에서 GRUB 메뉴를 표시하려면 시스템 시작을 길게 누릅니다 Shift.이 문제부팅할 때마다 GRUB 메뉴를 표시하는 방법에 대한 지침이 포함되어 있습니다.

  3. 이제 설명된 대로 필수 메뉴 항목을 추가해야 합니다.이 방법당신이 언급한 것. 다음에 대한 적응을 제공합니다.

    3.a. 나는 Trisquel ISO가 루트 디렉토리에 있다고 가정합니다 /dev/sda3/.

    ISO 이미지의 메뉴 항목을 /etc/grub.d/40_custom파일에 추가해야 합니다. 다음을 통해 파일을 편집합니다.

    sudo apt-get install gksu
    gksudo gedit /etc/grub.d/40_custom
    

    해당 파일의 텍스트를 다음 텍스트로 바꿉니다.

    #!/bin/sh
    exec tail -n +3 $0
    # This file provides an easy way to add custom menu entries.  Simply type the
    # menu entries you want to add after this comment.  Be careful not to change
    # the 'exec tail' line above.
    
    menuentry "Trisquel ISO" {
            set isofile="/trisquel_7.0_amd64.iso"
            loopback loop (hd0,3)$isofile
            linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
            initrd (loop)/casper/initrd
    }
    

    어디:

    • Trisquel ISO= Grub 메뉴에 표시하려는 이름입니다.
    • /trisquel_7.0_amd64.iso= 대상 파티션의 ISO 이미지 경로.
    • (hd0,3)= ISO 이미지가 포함된 파티션(GRUB의 경우 /dev/sda3Linux에서 "sda1" == "(hd0,1)"; "sdb2" == "(hd1,2)"; ...)과 동일합니다.
    • 참고: 이것은 tail -n +3단지 "grub이 구성 읽기를 시작하는 줄"입니다. 이 예의 3행은 첫 번째 주석 행으로, 이는 좋습니다.

    3.b. 이 파일을 저장하고 닫은 후 다음 명령을 실행합니다(변경 사항을 적용하려면).

    sudo update-grub
    
  4. 이제 하드 드라이브의 ISO에서 부팅할 수 있습니다.
    노트:설치 중에 필요한 경우 /dev/sda3Live CD 환경에서 다음 명령을 사용하십시오.

    sudo umount -l /isodevice
    

추가 자료:인용하다그리고우분투 메뉴 항목.

답변2

저는 킥스타트 기반 배포판에서 이것을 달성할 수 있었지만 다른 배포판에서도 작동할 것입니다. iso를 마운트하고 파일을 꺼냅니다. cat .....isolinux/initrd.img cpio -idm 킥스타트 파일을 수정하고 새 파일에 저장합니다.

이제 까다로운 부분은...iso를 가져와서 새 initrd 트리(원본 initrd.img에서 복사)에 넣은 다음 dracut을 사용하여 "losetup"이 포함된 장치 파일을 생성하는 스크립트를 삽입하는 것입니다. 일찍 시작하세요. 그런 다음 부팅 매개변수 inst.repo=hd:/dev/loop9(루프)를 사용하고 inst.ks=file:////(킥스타트 파일.. 사용 가능한 경우 iso에서 추출되었을 수 있음)을 사용합니다.

그런 다음 kexec -l을 사용하여 새 initramfs 및 커널을 로드하고 재부팅하면 iso가 로드/부팅됩니다.

저는 주로 a) 완료할 수 있고 b) 제 경험으로는 매우 복잡하다는 점을 확인하기 위해 이 답변을 여기에 게시하고 있습니다.

관련 정보