날짜:
프로그래밍 지식
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
보통 임베디드 장비를 디버깅할 때, nfs를 이용하여 리눅스에 설정된 특정 디렉토리를 이용한다. 이때, nfs의 서버를 리눅스로 설정 해야 하는데, 설정 관련 내용은 이 포스팅에서 정리하지 않겠다.
그럼, 이 포스팅을 쓰는 이유는 무엇이냐.. 가끔씩 제목에 쓴 것처럼 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block 라는 에러가 뜨는 경우에 해결 하는 방법을 정리해보려 한다. 당연히, 위에 에러가 한 가지 문제일 경우에만 출력 되는 것은 아니다. 그러므로, 이 포스팅에서 말하는 방법으로 해결이 안되면 다른 방법을 찾아야 한다.
보통, 나는 이런 에러 메시지가 자주 발생하였다.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0): error -6
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block
그 외, Call Trace ...
end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block
위 메시지로 구글링해봐도 전혀 다른 내용의 이야기 밖에 없었고, 포스팅에 있는 해결 방법으로 조치해봐도 해결 되지 않았다
그래서, 일단 NFS가 제대로 동작은 하는 것인지 확인을 하기로 했다. 자신의 NFS 설정 디렉토리로 직접 마운트가 가능한지 확인을 해보면 된다.
NFS 테스트 방법은 아래와 같다.
mount -t nfs [호스트명 또는 ip]:[/공유디렉토리] [/마운트 디렉토리]
위처럼 해보니 실패하였다고, 이때, 뭔가 nfs 동작 자체가 문제가 있다는 것을 알 수 있었다. 실패 메시지는 아래와 같았다.
mount.nfs: requested NFS version or transport protocol is not supported
뭔가 nfs 설정이 잘못 되었기 때문에 위처럼 메시지가 나온 것이 아닐까라는 의문이 생겼고, 바로 구글링해보니 /etc/exports에서 문제가 발생하는 경우 위와 같은 문제가 발생한다는 것을 알 수 있었다. 또한, 아래 명령어로 nfs server의 상태를 확인할 수도 있다는 것을 알 수 있었다.
sudo systemctl status nfs-kernel-server
위의 명령어를 입력해보니, 여기서 문제가 발생했다는 것을 확인할 수 있었다. 에러 메시지는 아래와 같았다.
● nfs-server.service - NFS server and services
Loaded: loaded (/lib/systemd/system/nfs-server.service; enabled; vendor preset: enabled)
Drop-In: /run/systemd/generator/nfs-server.service.d
└─order-with-mounts.conf
Active: failed (Result: exit-code) since Mon 2020-11-09 12:16:10 KST; 5min ago
Process: 978 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
Process: 983 ExecStopPost=/usr/sbin/exportfs -au (code=exited, status=0/SUCCESS)
Process: 985 ExecStopPost=/usr/sbin/exportfs -f (code=exited, status=0/SUCCESS)
systemd[1]: Starting NFS server and services...
exportfs[978]: exportfs: Failed to stat /nfs/~~: No such file or directory
systemd[1]: nfs-server.service: Control process exited, code=exited,
systemd[1]: nfs-server.service: Failed with result 'exit-code'.
ystemd[1]: Stopped NFS server and services.
위처럼 에러가 발생하였고, /etc/exports에 없는 디렉토리 경로가 있었기 때문에 문제가 발생한 것이라는 것을 알 수 있었다. 그래서 경로를 삭제하고, nfs server를 재시작한 후, 상태를 다시 보니 제대로 동작하는 것을 확인할 수 있었다.
nfs server 재시작 방법은 아래와 같다.
sudo systemctl restart nfs-kernel-server
이후, 상태 보는 방법은 아래와 같다.
sudo systemctl status nfs-kernel-server
이제 nfs가 제대로 동작하는 것을 확인할 수 있었디. 혹시나 나와 같은 문제가 발생한다면, 도움이 되었기를 바란다...해결이 안된다면 다른 방법을 찾아야겠지만..
댓글
댓글 쓰기