어제 떠돌이님의 가이드북에 동봉된 우분투 10.04 라이브 CD로 설치하고, 업데이트 창이 하나 뜨길래 업데이트를 한 뒤 재부팅을 하니 사진과 같은 화면이 뜨더군요.
‘이번에도 우분투는 포기해야 하나’ 싶은 생각을 하면서 멍하니 화면이나 쳐다보고 있던 도중, 5분 쯤 지났으려나, 갑자기 우분투 초기 화면이 제대로 부팅되었습니다.
물론 제대로 부팅되니 당장이야 기뻤지만, 앞으로 우분투로 부팅할 때마다 마냥 기다리고 있을 수도 없고, 불안하기도 해서 이렇게 질문 올려봅니다.
cpu 보안, 정확하게 말하면 buffer-overflow attack, 에 관한 이슈입니다. 우선 화면에서 준 메세지와 같이 정확한 정보를 얻기위해 터미널에서 suro /usr/bin/check-bios-nx --vervose 라고 명령해 보세요. 그러면 아마도 자세한 정보를 알려줄 것입니다. NX (non execute) 설정이 바이오스에서 활성화되어 있는지 알 수 있을 겁니다.
그리고 다시 부팅을 하셔서 바이오스 설정에서 NX나 XD혹은 EDB 라고 적혀있는 설정을 활성화 시키시면 해결 될 것 같습니다.
sudo /usr/bin/check-bios-nx --vervose를 명령했을 땐, check-bios-nx: unrecognized option '–vervose’라고 뜹니다.
그리고 그 다음 부분은 이해가 잘 안 가네요, Bios 설정에 진입하는 건 가능한데, NX/XD/EDB라고 적혀있는 설정이 정확히 어디에 위치해 있는 건지도 잘 모르겠구요.;
This CPU is family 6, model 15, and has NX capabilities but is unable to use these protective features because the BIOS is configured to disable the capability. Please enable this in your BIOS. For more details, see: [url:14ntliio]https://wiki.ubuntu.com/Security/CPUFeatures[/url:14ntliio]
근데 위에서 말했듯이, 바이오스 진입이야 할 수 있는데, NX가 구체적으로 뭔지를 모르니 활성화 시키는 방법도 모르겠습니다. 일단 바이오스 내에서 'NX’라는 문구는 못 봤는데…
[quote="아스피린":ull002gy]일단 바이오스 내에서 'NX’라는 문구는 못 봤는데…[/quote:ull002gy]
혹시 "NX"만 찾아보셨나요? EDB, XD, Non-eXecute, Execute Disable Bit도 찾아보시기 바랍니다.
CPU 가상화는 막아놓는 경우가 종종 있지만 EDB를 막아놓는다는 것은 (제가 아는 한도 안에서는) 들어본 적이 없습니다.
게다가 OEM메인보드가 아니라면 있을 것 같군요. 메인보드 설명서를 참조해보세요.
참고로 삼성 컴퓨터에는("삼성"과 같은 OEM도 이 옵션이 있습니다) EDB로 표시가 되어있습니다.
올려주신 스샷 보다가 새로운 생각이 떠올라 올려봅니다.
이 추리(?)는 제 부족한 지식에서 나온 것이기 때문에 고수님들께서 지적해주시면 감사하겠습니다.
올려주신 컴퓨터 사양에 의하면, 이 컴퓨터는 메모리가 4GB입니다.
떠돌이님의 책에 들어간 우분투는 32bit입니다.
32bit에서는 4GB 메모리를 모두 사용하지 못합니다.
PAE 기술이 들어간 커널을 사용하면 4GB 모두 사용 가능합니다.
따라서 시스템 업데이트에서 커널을 기본 generic에서 generic-pae 커널로 교체합니다.
리눅스 커널은 PAE 기술을 사용할 시 NX(다른말로 EDB,…)가 반드시 활성화되어 있어야 합니다.
그런데 Bios에서 NX(다른말로 EDB,…)가 켜져있지 않습니다.
에러!!!
만약 제 생각이 맞다면 해결방안은 5가지 입니다.
Bios에서 해당 옵션을 찾아 켠다.
우분투 또는 코분투 64bit를 설치한다.
메모리를 3.2GB정도만 사용하는 것으로 만족하고 PAE 커널을 설치하지 않는다.
우분투 9.04 또는 그 이하버전을 사용한다.
Bios 옵션이 없다면 CMOS 덤프 후 파일을 수정해서 가능하게 만든다. 실패하면 바이오스 수리하거나 구매한다.
참고로 이 해결방안은 위에서부터 추천합니다.
부연설명을 하자면…
5. 스샷을 보면 커널이pae인것을 알 수 있습니다.
6. [url=http://en.wikipedia.org/wiki/NX_bit:28e6ztlq]위키피디아 링크[/url:28e6ztlq]의 Linux 부분을 보시면 됩니다.
[quote:28e6ztlq]Some desktop Linux distributions such as Fedora Core 6, Ubuntu and openSUSE do not enable the HIGHMEM64 option by default, which is required to gain access to the NX bit in 32-bit mode, in their default kernel; this is because the PAE mode that is required to use the NX bit causes pre-Pentium Pro (including Pentium MMX) and Celeron M and Pentium M processors without NX support to fail to boot. Other processors that do not support PAE are AMD K6 and earlier, Transmeta Crusoe, VIA C3 and earlier, and Geode GX and LX. VMware Workstation versions older than 4.0, Parallels Workstation versions older than 4.0, and Microsoft Virtual PC and Virtual Server do not support PAE on the guest. Fedora Core 6 and Ubuntu 9.10 and later provide a kernel-PAE package which supports PAE and NX.
NX memory protection has always been available in Ubuntu for any systems that had the hardware to support it and ran the 64-bit kernel or the 32-bit server kernel. The 32-bit PAE desktop kernel (linux-image-generic-pae) in Ubuntu 9.10 and later, also provides the PAE mode needed for hardware with the NX CPU feature. For systems that lack NX hardware, the 32-bit kernels now provide an approximation of the NX CPU feature via software emulation that can help block many exploits an attacker might run from stack or heap memory.[/quote:28e6ztlq]
간단히 말하자면 [quote:28e6ztlq]요즘 리눅스 배포판들은 커널이 PAE 사용의 경우 NX가 필요하며 이에 따라 NX 기술이 없는 이전 펜티엄 프로, 셀러론 M, 펜티엄 M들이 아스피린 님께서 현재 겪고 있는 것과 같이 부팅을 실패하고 있다. 페도라 코어 6와 우분투 9.10부터 그렇다[/quote:28e6ztlq]정도 됩니다.(제가 영어를 잘 못해 오역의 소지가 있습니다.)
못다한 이야기…
Nvidia 그래픽 카드와는 확신은 못하지만 관련이 없어 보입니다.
커널을 바꾸지 않는이상 NX가 반드시 필요하니 /etc/update-motd.d/20-cpu-checker는 살리시는 것이 좋을 것 같습니다.
CPU 가상화 기술과는 상관이 없습니다.
인텔 CPU를 사용하신다고 해서 언급하지 않았지만 AMD는 "Enhanced Virus Protection", ARM은"XN"이며 "eXecute Never"로 표기한다고 합니다.