pacman -Syu
가끔 실행 중에 (Arch Linux에서 패키지 업데이트) 업그레이드 목록에 언급된 Linux 커널이 표시되는 경우가 있습니다 . 이런 일이 발생할 때마다 패키지를 설치한 후 재부팅할 때까지 더 이상 USB 드라이브를 마운트할 수 없습니다. 이것이 일반적이고 예상되는 일인지(그렇다면 그 이유를 알고 싶습니다), 아니면 조사해서는 안 되는 일인지 궁금합니다.
답변1
아마도 해당 배포판에서는 이것이 정상일 것입니다. 새 커널을 설치하는 방법은 패키지 관리자에 따라 다릅니다.
내 생각에는 패키지 관리자가 (커널을 업그레이드할 때) 이전 커널 모듈 디렉터리를 즉시 삭제하는 것 같습니다. 이렇게 해서 설치하려고 하면지방 조직-USB 플래시 드라이브를 포맷하면 커널이 필요한 vfat 커널 모듈을 로드할 수 없습니다.
내 가설을 검증하기 위해 다음에 커널을 업그레이드할 때 커널 모듈 디렉터리가 있는지 확인할 수 있습니다.
업그레이드하기 전에 현재(이전) 커널 버전이라는 디렉터리가 있는지 확인해야 합니다.
~> ls -d /lib/modules/`uname -r` /lib/modules/3.0.0-1.2-desktop
업그레이드 후 재부팅하기 전에 디렉터리가 더 이상 존재하지 않음을 확인해야 합니다(따라서 새 하드웨어를 관리할 수 없음).
~> ls -d /lib/modules/`uname -r` ls: cannot access /lib/modules/3.0.0-1.2-desktop: No such file or directory
재부팅한 후에는 현재(새) 커널 버전이라는 새 커널 모듈 디렉터리가 있음을 확인해야 합니다.
~> ls -d /lib/modules/`uname -r` /lib/modules/3.1.0-1.4
이 문제를 방지하기 위해 다른 배포판(예: openSuSE)은 재부팅할 때까지 디렉터리 삭제를 지연합니다.
답변2
예, 아니오. 이상적으로는 재부팅이 필요하지 않지만 실제로는 재부팅이 어려울 수 있습니다.
이 세션 중에 이미 사용하고 있던 장치 유형을 계속 사용할 수 있어야 합니다. 모듈 로딩이 필요한 새로운 장치 유형(또는 파일 시스템 형식, 네트워크 프로토콜 등)을 사용하려고 하면 문제가 발생할 수 있습니다. 새 커널의 모듈은 실행 중인 커널과 호환되지 않을 수 있습니다.
바이너리 인터페이스를 변경하지 않는 사소한 보안 업그레이드인 경우 새 모듈은 계속 실행됩니다. 배포판은 새 커널을 컴파일하고 바이너리 호환성이 영향을 받지 않음을 나타내도록 준비되어 있어야 합니다(동일한 uname -r
출력).
커널 패키지 버전을 변경하는 주요 업그레이드인 경우 다음 재부팅 때까지 이전 패키지와 새 패키지를 유지할 수 있습니다. 이렇게 하면 모듈이 이전 패키지에서 계속 로드됩니다.
업그레이드로 인해 기존 커널과 모듈을 덮어쓰지만 바이너리 호환성이 변경되면 문제가 발생합니다. 이상적으로는 배포판에서는 이 작업을 수행하지 않습니다. 운이 좋다면 모듈을 강제 로드할 수 있습니다 modprobe --force-vermagic --force-modversion
. 바이너리 비호환성이 존재하는 경우 이로 인해 충돌, 데이터 손상 및 강아지 사망이 발생할 수 있다는 점에 유의하세요. 사용에 따른 책임은 사용자에게 있습니다.