Studies

버추얼박스의 우분투 커널컴파일 에러 및 어이없는 해결

로볼키 2015. 3. 29. 18:39

과제를 위해 커널을 kernel.org에서 받아서 


make 

make modules

make modules_install

make install


해서 적용시키는 과제.


시간이 오래 걸리는 작업이라는 것은 알고 있었는데.




버추얼박스에 깔아서 했는데 실패.




왜 안되지...?



ccache라고, 이미 컴파일한 C 파일에 변화가 없으면 다시 컴파일하지 않고 넘어가게 해 주는 프로그램.


이게 문제가 있나?


ccache 덕분에 다시 make하는 시간이 오래 걸리진 않았으나,

여전히 실패.



아 안되겠다, 어차피 가상머신인데,


우분투를 아예 처음부터 깔고, 필요한 설정 다시 하고 컴파일 재시도했으나 실패.



저놈의 error -8...


failed to execute /init (error -8)

/bin/sh exists but couldn't execute it (error -8)

No working init found.

Try passing init= option to kernel.


각각 다 구글링해봤는데, 뭐 부트로더 문제라고 고치는 프로그램을 설치하거나 등등 여러 해결책을 시도해봤으나 실! 패!





시간은 이미 새벽 두 시가 되어가고.



make에 -j2옵션 줬던 것이 문제였나? 생각해서,

CPU를 1개로 잡고 아무 옵션 없이 make 걸고 잤다.



오늘 아침 모듈 인스톨이랑 인스톨까지 다 했으나 결과는...


또 실패...


커널패닉 나도 패닉.



아, 가상 머신으로 돌리는게 문제인가.


방치되어 있는, 간신히 굴러는 가는 노트북에 깔아봐야겠다.


CPU는 코어2듀오, 램은 2기가.


가상머신보단 낫지 않을까?





노트북 두 대에 같은 작업.


그런데 하다가 두 노트북을 보니,


Core 2 Duo T8100 + 램 2기가 + 하드디스크 의 네이티브 보다

i5 4세대 + 램 8기가 + SSD의 컴퓨터에 CPU 2개 + 램 1기가 (+당연히 SSD) 로 돌리는 가상머신이


컴파일 속도가 더 빨라......


같은 명령을 네이티브에 먼저 걸었는데, 한 5~10분 후에 시작한 가상머신이 중간에 역전함...



쨌든, 작업을 걸다가 문득,


Core 2 Duo T8100이 32비트 CPU인가 64비트인가를 고민하게 됨.



인텔 사이트에는 64비트라고 나와있으나...


우분투에서 확인하면 32비트.


어 뭐지...



그리고 uname -a에 amd64란 글자가 전혀 안 보이는 것을 보고,


getconf LONG_BIT 명령어가 32를 나타내는 것을 보고,


우분투 설치 iso를 확인하니 i386...



내가 컴퓨터에 갖고 있던 설치 파일이 32비트였던 것...


어쩐지 그 파일이 다운로드 폴더에는 없더라......

(용량 좀 확보한다고 지웠었음.)





가장 처음에 안되었던 원인은 모르겠지만,


기존에 쓰던 가상머신을 날린 시점부터 지금까진 계속 32비트 우분투를 잡고 싸우고 있었다는 것....



make menuconfig에서 언젠가부터 64비트 지원 부분이 체크 해제되어 나오던데,

OS가 32비트이니 체크를 해제해서 보여줬을 것이고,

나는 당연히 64비트라고 생각했기에 꼬박꼬박 64에 체크를 넣어줬고...



그러니까 재부팅해서 컴파일한 커널로 부팅하려고 하면 안 되지.





결론: 32비트 및 64비트 확인 철저히 합시다...

32비트 - i686, i386 등....

64비트 - x86_64, amd64 등...

그냥 우분투 터미널에서 getconf LONG_BIT 에서 32 뜨면 32비트, 64 뜨면 64비트.




오늘의 삽질은 여기로 끝.이었으면 좋겠다.


일단 한 단계는 해결.

728x90