
실수로 시스템에서 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
.
루트 파티션을 먼저 마운트하십시오:
mount -t ext4 /dev/sdX /mnt
. 올바른 파티션 이름을 사용하고 이 명령을 입력했는지 확인하십시오.lsblk
등과 같은 명령을 사용하여blkid
올바른 파티션을 찾으십시오.[선택 사항] 다음에 마운트할 별도의 부팅 파티션이 있는 경우:
mount -t ext4 /dev/sdY /mnt/boot
다음 바인드는 명령에 필요한 모든 가상 파일 시스템을 마운트합니다
mkinitramfs
... mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys mount --bind /dev /dev/proc이제 폴더로 전환
/mnt
하고mkinitramfs
위에 설명된 대로 명령을 실행합니다.