다음과 같은 디스크 구조가 있습니다.
sda1 : Windows
sda2 : an old Linux distribution
sda3 : a new Linux distribution
sda4 : data partition
grub을 설치하고 부팅 시 시스템을 선택했습니다. 저는 이제 sda3에서만 새로운 Linux 배포판을 사용하고 있는데 잘 작동합니다. 저는 부팅 시 CDROM과 데이터 파티션을 마운트하도록 /etc/fstab 파일을 설정해 왔습니다.
나는 최근에 새로운 Linux 시스템(sda3)의 /etc/fstab 파일이 다음과 같은 것을 보았습니다:
/dev/sda2 / ext4 errors=remount-ro 0 1 #NOTE THIS ENTRY HAS SDA2!
/dev/sda4 /media/me_user/datapart ext4 defaults 1 1
/dev/sr0 /media/cdrom0 auto ro,user,noauto,unhide 0 0
루트 항목이 잘못된 것 같습니다. /dev/sda3이어야 합니다(실수로 변경한 것이 틀림없습니다). 그러나 시스템은 잘 작동하고 부팅할 때 홈 폴더는 sda2가 아닌 sda3에만 있습니다.
/etc/fstab에서 루트 항목 줄을 제거해 보았습니다. 그런 다음 시작 시 로그인을 요청하는 터미널 프롬프트가 표시됩니다. 여전히 로그인할 수 있지만 그래픽이 시작되지 않습니다.
루트 항목이 sda3에서 작동하도록 fstab 파일을 수정했지만 문제를 명확히 하고 싶습니다. 내 시스템이 제대로 작동하고 sda3의 홈 폴더에 액세스하고 있는데 /etc/fstab의 루트 항목이 sda2용인 이유는 무엇입니까?
답변1
최근에 비슷한 문제가 발생하여 조사를 했습니다. 내 이해는 다음 위치에 올바른 파티션이 설정되어 있기 때문에 작동한다는 것입니다.
- 커널 명령줄 매개
root=<UUID of />
변수. Satwell은 이에 대해 더 많이 썼습니다. - 부트로더 설정. 예를 들어
grub
-gnulinux-simple-<UUID of />
및--set=root <UUID /boot>
( UUID 와 동일할 수도 있고 동일하지 않을 수도 있음/
)을 가정합니다.
/etc/fstab
이제 파일 시스템이 부팅 프로세스의 일부로 읽고 마운트됩니다( /
쓰기 가능한 [ rw
]가 다시 마운트되고 있음). 재설치하려면 /etc/fstab
다음 옵션을 사용하세요. satwell이 쓴 것처럼 이는 /
파일에서 마운트 라인을 제거할 때 발생하는 문제를 설명할 수 있습니다. 잘못된 파티션의 UUID에서 작동하는 이유는 무엇입니까? 아마도 mount()
시스템 호출이 다시 마운트할 때 잘못된 UUID를 무시하고 이미 설정된 [올바른] UUID를 사용하기 때문일 것입니다 .
에서 man 2 mount
:
기존 설치 다시 설치
및
source
매개변수는filesystemtype
무시됩니다.
답변2
/etc/fstab
루트로 마운트되는 파일 시스템을 직접 제어하지 않습니다. (말이 됩니다. 루트 파일 시스템을 읽으려면 먼저 마운트해야 합니다 /etc/fstab
.)
루트 파일 시스템은 일반적으로 커널 명령줄 인수에 지정됩니다. 실행하여 cat /proc/cmdline
확인 하면 root=/dev/sda3
또는 이 표시될 수 있습니다 root=UUID=<uuid of /dev/sda3>
.
이러한 매개변수는 일반적으로 부트로더 구성에서 구성됩니다. 여기의 세부 사항은 사용 중인 배포판에 따라 다르지만 grub을 사용한다고 가정하면 아마도 /boot/grub/grub.cfg
또는 에서 해당 구성을 찾을 수 있을 것입니다 /boot/grub2/grub.cfg
. 이 구성이 올바르면 올바른 루트 파일 시스템이 마운트되어야 합니다.
/
그렇다면 시동을 제거하면 시동이 실패하는 이유는 무엇입니까 /etc/fstab
? 시스템 시작 프로세스의 일부가 /
에 지정된 옵션으로 다시 설치되는데 /etc/fstab
, 이는 오류의 원인일 수 있습니다.