initramfs 프롬프트로 부팅을 수정하고 “mount : ‘/ etc / fstab’을 읽을 수 없습니다 : 해당 파일이나 디렉토리가 없습니다”및 “No init found”? 로더 설정을 생성하기위한 extlinux-update. 재부팅 후 결과 (여전히

단일 파티션 전용 GPT 파티션 디스크, ext4 포맷, extlinux (버전 4.05)를 부트 로더로, Ubuntu Core 버전 13.10 amd64를 rootfs로, Ubuntu linux-image-3.11.0-18-generic을 커널로 사용하여 새 시스템 설치 부트 로더 설정을 생성하기위한 extlinux-update.

재부팅 후 결과 (여전히 KVM 기반 가상 머신 내부)는 (initramfs) 프롬프트이며 다음 메시지가 표시됩니다.

mount: can't read '/etc/fstab': No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /sys on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed: No such file or directory
The filesystem doesn't have requested /sbin/init.
No init found. Try passing init= bootarg.

BusyBox는 v1.20.2입니다.

회귀 :

  • 파일 시스템이 확인되었습니다 fsck.ext4

루트 존재 확인

(initramfs) ls -l /dev/[hs]da*
ls: /dev/[hs]da*: No such file or directory

루트 부팅 인수

(initramfs) cat /proc/cmdline
initrd=/boot/initrd.img-3.11.0-18-generic ro quiet BOOT_IMAGE=/boot/vmlinuz-3.11.0-18-generic

로드 된 모듈 확인

(initramfs) cat /proc/modules
e1000 145368 0 - Live 0xffffffffa0000000

/ boot 폴더 내용

$ sudo ls -l boot
-rw------- 1 root root 3296162 Feb 18 22:37 System.map-3.11.0-18-generic
-rw-r--r-- 1 root root 1007681 Feb 18 22:37 abi-3.11.0-18-generic
-rw-r--r-- 1 root root  163258 Feb 18 22:37 config-3.11.0-18-generic
drwxr-xr-x 2 root root    4096 Mar 17 20:13 extlinux
-rw-r--r-- 1 root root 4995000 Mar 16 23:35 initrd.img-3.11.0-18-generic
-rw------- 1 root root 5634192 Feb 18 22:37 vmlinuz-3.11.0-18-generic

이 시스템을 기본 bash 프롬프트로 부팅하는 방법은 무엇입니까?



답변

root=/dev/sdaX옵션 을 설정하여 커널 부팅 매개 변수를 수정하십시오 . sdaX당신 /또는 root파티션 일 것입니다. 다음에 부팅 할 때 파일 시스템에 initramfs액세스 /etc/fstab하고 마운트 하기 전에 파티션을 마운트하려고 시도 함을 알 수 있습니다.

자세한 내용은 ” initramfs에서 / etc / fstab을 사용합니까? “질문을 참조하십시오.


답변

이해해야 initramfs할 것은 파일 시스템이라는 것입니다. 커널 2.6 이후는,이다 기본적으로, 유일한 커널 부과 한 파일 시스템 (옆입니다 VFS, 떠나 틀림없이 컴퓨터에 또한 파일 시스템). 귀하 initramfs image는 디스크 이미지입니다.

당신은 내 initramfs image결정 배포는 루트 디스크가 발견되기 전에 요구하는 중요한 충분히 있었다 파일을 어떤 될 것입니다. 일반적으로 Busybox와 루트 장치를 찾아 마운트하는 데 필요한 모든 커널 모듈입니다. 이것은 당신을 위해 작동하지 않습니다.

여기에는 모든 미스터리가 없습니다. 터미널 프롬프트에서 길을 찾을 수 있다면 initramfs.먼저 탐색 할 수는 있지만 먼저 해독해야합니다.

가장 먼저 그리고 다시 한번-이것은 단지 /.Linux 루트 유형 일을하는 것은 Linux 루트입니다. 실제로 커널과 다른 파일에 있으면 실제로 두 번째 루트 장치입니다. 모든 리눅스 커널에는 기본적으로 비어있는 /모든 것이 포함 되어 있습니다.initramfs.

중요한initramfs 것은 실제 루트입니다. Linux 커널 init은 이후에 발생할 수있는 모든 문제에 대한 모든 책임을 실행 한 후 취소함으로써 사용자 공간을 초기화 합니다. 당신 init은 Busybox처럼 많은 것처럼 보입니다. 즉, 동작을 제어하는 ​​것은 함께 제공되는 쉘 스크립트를 편집하는 것만 큼 간단해야합니다.

그렇다면 init?거의 확실하게 찾을 수 없다는 오류는 init실제로 init쉘 스크립트를 통해 실제로 실행 되도록 지시받은 프로그램을 지칭합니다 .

나에게 가장 놀라운 것은 커널 의사 파일 시스템이 dev sys proc마운트되지 않는다는 것입니다. 이것은 매우 힘들거나 좋은 단서입니다. 커널 기능에 의문을 제기하는 KVM을 언급했지만, 어둡고 험난한 길을 가기 전에 먼저 다른 것을 시도해 볼 수 있습니까?

cd /root || mkdir /root

오류 메시지가 반복적으로 발생합니다.

그러한 파일이나 디렉토리가 없습니다

initramfs이미지 를 다시 작성해야하는 데 실패했습니다 . 라이브 디스크로 부팅하여 배포를 위해 제공하는 모든 도구를 실행하십시오. 아, 그리고 제발 확인 이 라이브 디스크에로드되어 EFI의 모드.

그래서 여기에 대한 유일한 진정한 예외는 initramfs - switchroot.

Linux 커널은 초기 사용자 공간과 initramfs루트 디스크 장치로 의 이동을 처리하기위한 매우 특별한 syscall을 제공합니다 . 먼저 루트 디스크를 마운트 지점에 마운트 initramfs한 다음 루트 파일 시스템을 피벗하여 작동합니다. initramfs's대상 마운트 지점이 root계속 신음하는 방식을 기반으로 가정합니다 . 왜 거기 있는지 확인하지 않습니까?

추가 조사를 위해서는 약간의 문제가 필요합니다. 부트 로더가 통과하도록 조정하십시오 …

init=/bin/sh

… 커널 매개 변수로.


답변

나는 같은 문제가 있었다. Alex가 말한 것은 맞습니다. 먼저 fstab을 조정했지만 도움이되지 않았습니다. 그래서 나는 grub을 확인했다. GRUB 메뉴에 액세스 할 수있는 경우

  • Linux, 시작하려는 항목 및 문제를 선택하십시오.
  • ‘e’를 누르고 ‘boot_image’또는 ‘boot … root’를 찾으십시오.
  • uuid ‘를 확인하십시오 .
  • 제 경우에는 잘못되었습니다. ‘blkid’를 입력하여 initramfs로 그림을 만들고 Linux가 설치된 파티션을 uuid로 만듭니다.
  • 올바른 uuid를 blkid에서 grub-> boot_image로 붙여 넣습니다.

그게 내 문제를 해결했다. 재부팅 후 리눅스는 디스크 검사를 시작하는 데 더 오랜 시간이 필요했습니다. 그러나 이제 다시 작동합니다.

내가 당신을 도울 수 있기를 바랍니다.

문안 인사