가상 머신을 사용하여 리눅스 모듈을 개발 / 테스트하는 것이 안전합니까?


18

저는 운영 체제 수업에 있습니다. 이제 커널 코드를 수정하는 작업을해야합니다. 우리는 나쁜 코드를 작성해서는 안되는 곳에 덮어 쓸 수 있으므로 개인용 컴퓨터를 사용하여 테스트하지 않아야한다고 권고했습니다 (이것은 설치를 의미한다고 가정합니다). 실험실의 기계에 안전하게 접근 할 수 있습니다.

VM을 사용하여 테스트 할 경우 잠재적으로 안전하지 않은 코드로부터 호스트 시스템을 보호 할 수 있습니까? 학교에서 시스템을 고수 할 필요가 없으며 스냅 샷이 유용 할 것입니다.

여전히 위험이 높은 경우 안전하게 테스트하기 위해 고려해야 할 사항이 있습니까?

우리는 linuxmint와 같은 것을 사용하여 시작할 것입니다. 누구든지 현재 프로젝트에 무엇이 있는지 보려면 http://www.cs.fsu.edu/~cop4610t/assignments/project2/writeup/specification.pdf


솔직히 실제 하드웨어에서, 특히 백업을하는 경우 그렇게 할 위험이 크지 않습니다. 나는 많은 다른 개발자들도 가지고 있다고 확신합니다.
홉스

@hobbs 그것은 우리 중 많은 사람들이 위험하게 사는 것을 좋아하기 때문입니다. 작은 모듈을 다루는 신중한 개발자라면 실제 컴퓨터에서 작업하는 것이 좋습니다. 대규모 개발 (또는 부주의 한 개발자) 의 경우 격리 된 환경에서 작업하는 것이 가장 좋습니다. 커널 수준의 커스터마이제이션이 모듈과 상호 작용할 수 없도록 "깨끗한 배포"작업을하는 것이 좋습니다. 커널 모듈 개발은 가장 작은 실수가 가장 두려운 결과를 초래할 수있는 부분이라는 것을 명심하십시오. D
John WH Smith

답변:


28

커널 모듈을 개발할 때의 주요 위험은 일반 코드보다 훨씬 쉽게 시스템을 중단시킬 수 있다는 것입니다. 언로드 할 수없는 모듈을 생성하는 경우가있을 수 있습니다. 다시로드하려면 다시 부팅해야합니다. 문제를 해결 한 후

예, VM은 이러한 종류의 개발에 적합하며 커널 모듈에서 작업 할 때 사용합니다. VM은 테스트 환경을 실행중인 시스템과 멋지게 격리시킵니다.

스냅 샷을 생성하고 복원하려는 경우 VM의 현재 상태를 버릴 때 실수로 최신 코드를 잃지 않도록 소스 코드를 VM 외부 의 버전 제어 저장소에 체크인해야합니다 .


3
또는 VM의 특정 측면 만 스냅 샷 할 수 있습니다. 예를 들어 소스 코드를 별도의 가상 디스크에 보관합니다. 물론, 정기적으로 코드를 체크인하는 VM 외부 소스 코드 저장소는 좋은 생각입니다. 그것은 많은 난처한 실수로부터 당신을 구할 수 있으며, 좋은 코딩 연습을 가르칩니다.
CVn

시스템을보다 쉽게 ​​충돌시키는 다른 측면은 시스템을 충돌 할 때 부수적 손상을 일으킬 가능성이 높다는 것입니다.
user253751

14

실제 하드웨어 용 드라이버를 작성하지 않으려는 경우 모듈에서 작업하기에 좋은 방법입니다. 작업 시스템의 스냅 샷을 생성 할 수 있으며 문제가 발생하면 스냅 샷으로 돌아가십시오.

가능하면 스냅 샷 시스템이 생각보다 이상 할 경우를 대비하여 VM의 전체 복제본을 만드십시오. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.