하드 드라이브의 ISO 파일에서 Linux를 RAM으로 부팅하고 Linux를 다시 설치하세요.

하드 드라이브의 ISO 파일에서 Linux를 RAM으로 부팅하고 Linux를 다시 설치하세요.

다음과 같은 경우가 있습니다.

Ubuntu 14.04 설치를 버전 22.04로 업그레이드해야 합니다. 하드 드라이브를 다시 파티션해야 하며 이전 14.04 설치를 완전히 지워야 합니다. Ubuntu 14.04는 하드 드라이브에서 LVM을 사용합니다.

Ubuntu 22.04 .iso 파일을 RAM에 로드한 다음 RAM에서 .iso 파일을 부팅하도록 GRUB를 구성할 수 있습니까? GRUB를 수정하여 하드 드라이브(Ubuntu 22.04 포함)에서 .iso 파일을 부팅할 수 있었지만 하드 드라이브가 사용 중이기 때문에 다시 파티션할 수 없습니다("toram" 옵션을 사용하여 Linux 항목을 로드했음에도 불구하고). GRUB) .

Ubuntu 22.04를 사용하여 USB 스틱에서 시스템을 부팅하면 하드 드라이브를 다시 파티션할 수 있습니다. 하지만 하드 드라이브에서 설치하고 USB 스틱 없이 새로 설치하는 방법이 필요합니다. 원격지에 컴퓨터가 몇 대 있어서 현장에 가지 않고도 다시 설치할 수 있어야 합니다.

답변1

그럽은 이런 일을 하지 않습니다. Grub이 하는 일은 커널/initrd를 로드하고 인수를 전달하는 것뿐입니다. 그런 다음 Ubuntu는 RAM에 자체적으로 로드됩니다. Grub은 이 과정에 더 이상 관여하지 않습니다.

toram우분투의 kernel/initrd에 의해 구현된 함수입니다. 다른 라이브 이미지는 유사한 기능에 대해 다른 이름을 사용하거나 전혀 구현하지 않을 수 있습니다.

일반적으로 이 기능이 작동하려면 충분한 메모리가 필요합니다. 메모리가 제한된 시스템에서는 완전히 실패할 수 있습니다. 이미지는 RAM에 완전히 들어가야 하며 실제로 설치 작업을 수행하는 데 사용할 수 있는 충분한 RAM이 있어야 합니다.

toram명령줄에서 커널 매개변수에 있는지 확인할 수 있습니다 .

$ grep toram /proc/cmdline
… toram …

다음 출력은 Ubuntu 22.04 데스크탑 amd64를 사용하여 생성되었습니다.

df활성화 후 출력 toram(/dev/shm을 /cdrom으로):

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           972M  1.5M  971M   1% /run
/dev/shm        3.8G  3.6G  182M  96% /cdrom
/cow            4.8G   58M  4.7G   2% /
tmpfs           4.8G     0  4.8G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.8G     0  4.8G   0% /tmp
tmpfs           972M  128K  972M   1% /run/user/999

df비활성화된 경우 출력 toram(/dev/usbstick은 /cdrom이고 다른 것은 설치되지 않음):

$ df -h
Filesystem    1K-blocks    Used Available Use% Mounted on
tmpfs            995092    1496    993596   1% /run
/dev/usbstick   3737140 3737140         0 100% /cdrom
/cow            4975444   58760   4916684   2% /
tmpfs           4975444       0   4975444   0% /dev/shm
tmpfs              5120       0      5120   0% /run/lock
tmpfs           4975444       0   4975444   0% /tmp
tmpfs            995088     120    994968   1% /run/user/999

free활성화 후 출력 toram(3.6Gi 공유, 4.9Gi 사용 가능):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           9.5Gi       736Mi       4.4Gi       3.6Gi       4.4Gi       4.9Gi
Swap:             0B          0B          0B

free비활성화된 경우 출력 toram(81Mi 공유, 8.5Gi 사용 가능):

$ free -h
               total        used        free      shared  buff/cache   available
Mem:           9.5Gi       727Mi       4.4Gi        81Mi       4.4Gi       8.5Gi
Swap:             0B          0B          0B

이는 시스템에 따라 다르게 보일 수 있지만 대략적으로 작동하는 방식은 다음과 같습니다. 서버 또는 네트워크 부팅 이미지에는 RAM 요구 사항이 다를 수 있습니다.

답변2

해결책을 찾았습니다여기이것이 작동하는지 테스트했습니다.

간단히 말해서 절차는 다음과 같습니다.

  1. 기존 Ubuntu 22.04 ISO 설치 파일을 임시 위치에 추출합니다.
  2. 파일을 casper/initrd임시 위치에 추출합니다.
  3. 파일 에 다음 줄을 추가합니다 casper/scripts/casper-bottom/05mountpoints(파일의 마지막 줄 바로 앞에).
if grep -q '^[^ ]* /isodevice ' /proc/mounts; then
    mkdir -p /root/isodevice
    mount -n -o move /isodevice /root/isodevice.
fi

(실제로 if 문을 건너뛰고 mkdir 및 mount 명령만 추가했습니다)

  1. initrd 파일을 다시 패키지하고 원본 파일을 교체합니다.
  2. ISO 파일을 다시 패키지하십시오.
  3. Grub이 찾을 수 있도록 수정된 ISO 파일을 하드 드라이브에 복사합니다.
  4. 컴퓨터를 다시 시작하고 toramgrub의 옵션을 사용하여 ISO 파일을 부팅합니다.
  5. 터미널 창을 열고 다음 명령을 입력합니다.
sudo losetup -d /dev/loop0
sudo umount /isodevice
  1. 이제 동일한 하드 드라이브에 하드 드라이브를 다시 파티션하고 Ubuntu 14.04 대신 Ubuntu 22.04를 설치할 수 있습니다(일반적인 업그레이드 단계인 16.04 -> 18.04 -> 20.04를 모두 수행하지 않아도 작동하지 않음).

이러한 단계가 없으면 Ubuntu 22.04는 부팅되는 하드 드라이브를 다시 분할할 수 없으며 GParted는 사용 중인 파일 시스템이 있다고 불평합니다.

관련 정보