저는 운영체제 수업을 듣고 있어요. 다음으로 커널 코드를 일부 수정해야 합니다. 우리는 나쁜 코드를 작성하고 작성해서는 안 되는 곳에 작성할 수 있으므로 테스트를 위해 개인용 컴퓨터를 사용하지 말라고 조언받았습니다(아마 설치를 의미하는 것 같습니다). 안전상의 이유로 연구실의 기계를 사용할 수 있습니다.
테스트를 위해 가상 머신을 사용하려는 경우 잠재적으로 안전하지 않은 코드로부터 호스트 시스템을 보호할 수 있습니까? 학교 시스템에 얽매일 필요가 없기를 진심으로 바랍니다. 스냅샷이 유용할 것입니다.
여전히 위험이 높은 경우 안전한 테스트를 위해 고려해야 할 사항은 무엇입니까? 제안 사항이 있습니까?
linuxmint와 같은 것을 사용하여 시작하겠습니다. 현재 프로젝트의 내용을 보고 싶은 사람이 있는 경우:http://www.cs.fsu.edu/~cop4610t/locationments/project2/writeup/specation.pdf
답변1
커널 모듈 개발의 주요 위험은 일반 코드를 사용할 때보다 시스템이 더 쉽게 충돌할 수 있다는 점이며, 때로는 언로드할 수 없는 모듈을 생성할 수도 있습니다. 즉, 문제를 해결하기 전에 재부팅하여 다시 로드해야 한다는 의미입니다.
예, 가상 머신은 이러한 종류의 개발에 적합합니다. 커널 모듈 작업 시 사용합니다. VM은 실행 중인 시스템에서 테스트 환경을 분리하는 데 탁월한 역할을 합니다.
스냅샷을 만들고 복원하는 경우 버전 제어 저장소에 소스 코드를 체크인해야 합니다.외부VM의 현재 상태를 삭제할 때 실수로 최신 코드를 잃지 않도록 합니다.
답변2
실제 하드웨어용 드라이버를 작성하지 않는다고 가정하면 이는 모듈을 다루는 좋은 방법입니다. 작동 중인 시스템의 스냅샷을 찍을 수 있으며, 문제가 발생한 경우 스냅샷으로 돌아갈 수 있습니다.
가능하다면 스냅샷 시스템이 생각보다 이상한 경우를 대비해 VM의 전체 복사본을 만드세요. :)
답변3
사용자 공간에서 프로세스로 실행되는 C 프로그램(프로세스는 단지 실행되는 프로그램임)을 작성했고 이제 실제 작업이 있는 곳(커널 공간)으로 이동하려고 한다고 가정해 보겠습니다. 단일 와일드 포인터가 파일 시스템을 지울 수 있는 곳은 전체 커널일 수 있습니다.
예, 초보자에게는 가상 머신을 추천하고 싶습니다. 이렇게 하면 XD로부터 커널을 보호할 수 있습니다.
어떤 사람들은 Docker를 선호하는데, 이는 궁극적으로 기본 커널을 사용하기 때문에 좋은 선택이 아닙니다. Docker는 동일한 코어에 있는 또 다른 배포판과 같습니다.
스냅샷은 홈 디렉터리의 파일을 복원하는 데에만 사용됩니다. 모든 버전 제어 시스템을 사용하여 간단한 방법으로 이 작업을 수행할 수 있습니다.