실수로 삭제된 initrd 이미지를 어떻게 복원합니까?

실수로 삭제된 initrd 이미지를 어떻게 복원합니까?

실수로 시스템에서 initrd 이미지를 삭제했습니다. 어떻게 복원하나요?

답변1

이것은 사용자 정의 라이브 CD를 만드는 경우 일반적으로 사용되는 라이브 CD에서 initrd.lz를 추출하는 방법에 대한 원래 질문에 대한 답변입니다.

initrd.lz를 작업 디렉토리( ~) 에 복사합니다.

cp /media/cdrom/initrd.lz ~

내용을 추출할 디렉토리를 만듭니다. 저는 를 사용하고 initrd해당 디렉토리에 CD를 넣습니다.

mkdir ~/initrd
cd ~/initrd

발췌

lzma -dc -S .lz ../initrd.lz | cpio -imvd --no-absolute-filenames

필요할 수 있는 부분을 변경하고 다시 패키징하세요.

cd ~/initrd
find . | cpio --quiet --dereference -o -H newc | lzma -7 > ../cusotm.initrd.lz

새로운 initrd는 홈 디렉토리에 있을 것이며 호출될 것입니다.cusotm.initrd.lz

답변2

각 커널의 initrd 이미지는 커널 설치 시 시스템의 모듈 및 애플리케이션에서 빌드됩니다. 아래 명령을 사용하여 누락된 initrd를 간단히 빌드할 수 있습니다.

update-initramfs -c -k <version>

(커널에 적합한 버전으로 대체하는 것을 잊지 마십시오.)

답변3

이는 댓글에 게시된 OP 문제를 해결하는 더 좋은 방법입니다.

우분투 설치 시 livecd의 initrd를 사용하려고 합니다. 실수로 삭제했습니다. – 비노이 바부

initramfs를 만들려면 먼저 대체 커널을 부팅하십시오(이전 커널도 괜찮습니다).

그런 다음 실행

sudo mkinitramfs 3.2.0-15-generic-pae -o /boot/initrd.img-3.2.0-15-generic-pae

pae 커널이 설치되어 있지 않습니다. "3.2.0-15-generic-pae"가 작동하지 않으면 내용을 나열하여 /lib/modules이름을 가져옵니다.

ls /lib/modules

이전 커널이 없으면 라이브 CD를 부팅하고 다음을 사용할 수 있습니다 chroot.

  1. 루트 파티션을 먼저 마운트하십시오: mount -t ext4 /dev/sdX /mnt. 올바른 파티션 이름을 사용하고 이 명령을 입력했는지 확인하십시오. lsblk등과 같은 명령을 사용하여 blkid올바른 파티션을 찾으십시오.

  2. [선택 사항] 다음에 마운트할 별도의 부팅 파티션이 있는 경우:mount -t ext4 /dev/sdY /mnt/boot

  3. 다음 바인드는 명령에 필요한 모든 가상 파일 시스템을 마운트합니다 mkinitramfs... mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /dev/proc

  4. 이제 폴더로 전환 /mnt하고 mkinitramfs위에 설명된 대로 명령을 실행합니다.

관련 정보