제목을 어떻게 지어야 할지 애매한 상황인데, 어쨋든 내가 Ubuntu 16.04에서 Virtualbox를 설치하고 나서 겪은 문제를 해결한 비교적 짧은 삽질기이다.

 

일단 환경 자체는 일반 데스크탑 PC에 iptime wirelss NIC(무선랜카드) 드라이버를 설치하면서 커스텀 MOK.priv / MOK.der라는 걸 만들어서 커널 모듈들을 해당 키로 서명을 했었는데 그 상황 때문에 생긴 문제이다.

 

https://eine.tistory.com/entry/Ubuntu-1804%EC%97%90%EC%84%9C-iptime-A2000UA-Wireless-LAN-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-%EC%9E%A1%EA%B8%B0%EC%82%BD%EC%A7%88%EA%B8%B0

 

Ubuntu 18.04에서 iptime A2000UA Wireless-LAN 드라이버 잡기(삽질기)

본 방법은 제가 수행한 방법으로, 환경마다 조금씩 방식은 다를 수 있습니다. 수행 환경과 버전 Desktop Ubuntu 18.04 4.15.0-52-generic iptime A2000UA Wirelss Lan 카드 USB 버전 일단 그냥 USB를 꼽았을 때는..

eine.tistory.com

위 글에서 한 것 과 비슷하게 iptime A2000UA를 설치를 해 놓은 상태이다. 위 글은 Ubuntu 18.04 기준이긴 한데 이번에는 Ubuntu 16.04 환경이다.

 

Virtualbox 공식 홈페이지에서 Linux distribution에서 알맞은 데비안 패키지 파일을 받아서 sudo dpkg -i virtualbox.deb 명령어로 설치를 했었다.

이제 Win키를 누른 뒤 virtualbox를 실행하면 그냥 잘 될 줄 알았으나 그렇진 않았다.

일단 걍 실행하고 Vbox 이미지를 import한 뒤 실행을 하려니 아래와 같은 메시지가 나왔다.

 

Effective UID is not root (euid=1000 egid=1000 uid=1000 gid=1000) (rc=-10)
Please try reinstalling VirtualBox.
where: SUPR3HardenedMain what: 2 VERR_PERMISSION_DENIED(-10) - Permission denied.

 

 

뭐 대충 이런 메시지가 나오길래, root로 재설치를 하라는데, sudo로 설치했으니 root로 설치된게 맞다.

뭔 소리지 싶어서, 터미널에서 sudo virtualbox로 다시 실행해 보았다.

 

root로 돌린 virtualbox에서 똑같이 이미지 import를 다시 하고 실행을 시키려니, 이번엔 좀 다른 메시지가 나왔다.

Kernel driver not installed (rc=-1908)
The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

'/sbin/vboxconfig'

as root.

If your system has EFI Securie Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

where: sublibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED(-1908) - The support driver is not installed. On linux, open returned ENOENT.

뭐 커널드라이버가 설치가 안됬니 뭐니 하면서 vboxconfig를 실행하라는데 찾아보니 나한테는 없는 프로그램이었다.

대충 구글링 해보니 스택오버플로에 아래와 같은 명령어로 설치를 하란다.

 

$ sudo apt install --reinstall -y virtualbox-dkms

 

치니까 apt가 apt-get -f install을 치라고 하더라. 그래서 그냥 쳤다.

 

$ sudo apt-get -f install

 

이제 vboxconfig라는 바이너리가 위에서 말하는 경로에 생겼다. sbin에 있는 바이너리니 당연 sudo 넣어서 실행을 해야겠다 싶었다.

 

$ sudo vboxconfig

 

근데 뭐 좀 되는 것 같더니만 fail을 내뿜는다. dmesg로 확인을 해보란다.

그래서 dmesg로 확인해보니, modprobe에서 에러가 났으며 해당 드라이버 서명이 제대로 안됬다고 한다.

modprobe는 커널 드라이버 로드하는 명령어이다.

 

맨 위에서 말한것 처럼 무선랜카드 드라이버 빌드해서 적제할려고 MOK.der라는 키들을 새로 만들었는데, 아마 이 키로 서명된게 아니라서 그런 것 같다.

 

대충 컨텍스트를 보니 vboxconfig를 실행하면 내 리눅스 시스템에 맞는 vbox용 드라이버를 빌드해서 사이닝 한 뒤 load까지 해주는데 내가 이 커널에서 신뢰하는 키를 새로 만들어버려서 등록을 했으니 signing이 제대로 안되는 것이다.

 

그래서 vboxconfig 로그메시지를 대충 보니, vboxdrv.sh라는 파일에서 빌드하고 서명하고 그런 동작들을 하는 것 같더라.

 

경로를 찾아보니 /usr/lib/virtualbox/vboxdrv.sh 이었다.

 

파일을 열어보자.

kmodsign sha512 /var/lib/shim-signed/mok/MOK.priv \
/var/lib/shim-signed/mok/MOK.der \
/lib/modules/"$KERN_VER"/misc/"$i".ko

그냥 쉘 스크립트 파일이고, setup()이라는 함수 쪽을 보니, 506~508라인이 kmodsign이라는 명령어로 빌드된 모듈들을 서명해주는 것 같았다.

저기서 MOK.priv와 MOK.der파일의 경로만 내 키의 경로로 바꾸어주고 다시 실행해보았다.

vscode로 실행해서 저장을 해 주었다. vscode가 기특한게 저장할때 permission denied가 뜨니까 sudo로 할 건지 아래에 창이 따로 떠서 누르면 password 인증으로 sudo save가 되게 되어있다.

 

그리고 다시 vboxconfig를 실행해보았다.

옳지! 잘된다. Fin!

 

나랑 비슷한 상황에 겪는 사람은 별로 없겠지만, 그래도 혹시모르는 누군가에게 내 글이 도움이 되기를 하고자 하는 마음에 포스팅을 작성한다.

리눅스, 제가 사용하던 버전은 Ubuntu 18.04와 Ubuntu 16.04에서 동일한 문제였는데, python3를 삭제를 한 적이 있습니다.

두개의 버전 다 동일한 문제가 생겼는데, 삭제를 할 때 까지는 별 일 없는 것 같았는데, 터미널을 다 끄고 다시 키니 터미널 폰트가 맛이 가있습니다?

 

그리고 뭐지? 하고 보니 launcher도 안보이고 이상하다 싶어서 재부팅을 해 보니 GUI desktop은 부팅도 제대로 안되는 기현상들이 나타났습니다.

 

그래서 좀 구글링을 해 보니 리눅스에서 파이썬3를 지우지 말라고 하더군요. apt remove python3 이런식으로 지웠었는데 지워지면서 관련 dependencies들이 영향을 다 받은 모양입니다.

 

생각보다 복구방법은 간단했습니다.

 

일단 Ctrl+Alt+F1를 누르면 까만화면에 CLI Only 인터페이스가 뜨게 되는데, 여기서 username/password를 쳐서 로그인을 합니다.

 

그리고 삭제된 패키지들을 아래의 명령어들도 설치/재설치를 해준 뒤 reboot을 해주면 정상적으로 다시 복구가 됩니다.

 

 

sudo apt install -y python3-all
sudo apt install -y software-center
sudo apt install -y gnome-software
sudo apt install --reinstall -y ubuntu-desktop

저 같은 경우는 회사컴퓨터에서 위 현상을 겪었고, 라우팅 테이블을 좀 고쳐놔서 apt 레포지토리에서 파일을 못받아오는 현상도 있어서, 라우팅 테이블을 CLI 환경에서 고치느라 애를 좀 더 먹었었네요.

 

python3을 지우면 왜 ubuntu-desktop, gnome-terminal 등이 맛탱이가 가는지 자세한 내용들은 나중에 한번 시간나면 좀 더 분석해서 올려보도록 하겠습니다.

References

https://askubuntu.com/questions/810854/i-deleted-package-python3-on-ubuntu-and-i-have-lost-dashboard-terminal-and-un

https://askubuntu.com/questions/384033/removed-python-3-and-now-ubuntu-software-center-terminal-and-other-applications

https://stackoverflow.com/questions/34198892/ubuntu-how-do-you-remove-all-python-3-but-not-2/34198961

http://www.yes24.com/Product/Goods/91433923

 

이것이 취업을 위한 코딩 테스트다 with 파이썬

IT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년

www.yes24.com

이번에는 다른 포스팅과는 다르게 책에 대한 리뷰 겸 홍보를 하려고 합니다. 보통 이런 글은 잘 쓰지 않지만, 지인인 동빈님이 작성하신 첫 종이책이기도 하고, 제가 리뷰어로서 참여한 책이기도 하니 한번 소개해보려고 합니다.

 

무작정 이 책이 좋다, 아니다 어떻다라기 보다는 객관적인 시선으로 이 책의 특징과 장점을 설명하고, 어떠한 사람들이 이 책을 읽으면 좋을 지에 대해 한번 글을 써 보도록 하겠습니다.

 

제가 알고리즘을 처음 공부할 때에는...

제가 알고리즘 문제풀이를 본격적으로 시작했던 때가 딱 3년전인 2017년 즈음 이었던것 같습니다. 그때는 컴퓨터공학과 학부에서 내주는 과제수준의 Naive한 다중 for-loop으로 코드를 짜거나, 함수의 재귀 개념에 스택, 링크드리스트라는게 있다 정도만 아는 정도의 수준이었습니다.

 

그때 알고리즘 분야의 정석 교과서라고 불리던 종만북을 구입을 했었고, 앞에 수십페이지에 달하는 서문을 읽고, 첫번째 문제인 Festival을 알고스팟에서 풀어보려고 했었죠. 당시 종만북 책에는 해당 문제에 대한 해답이 없었던걸로 기억하고, 고로 Festival 문제를 제대로 풀지 못하고 바로 종만북은 책장에 박혀서 먼지가 쌓여갔던 기억이 있습니다.

당시의 저에는 매우 어려운 문제였던 것이지요.

 

그러다가 학교 선배의 추천으로 정보올림피아드 초등부 문제를 풀었었고, 풀다가 막히면 좌절감에 공부를 쉬기도 했었죠. 그리고 강남역에서 있었던 백준님의 오프라인 강의도 돈을 내고 들었었습니다. 제대로 공부해보겠답시고 학부 4학년에 학교 알고리즘 동아리의 문을 두드렸기도 했고, 그때 들은 코드포스에 참여하면서 혼자서 이것저것 시도해보고 막히면 잠시 쉬었다가 다시 공부하고 이런 과정들의 연속이었습니다.

 

어쨋든 시간이 지나고 경험이 쌓이면서 지금은 왠만한 국내 기업들의 코딩테스트에서는 떨어지지 않을 정도의 기반이 쌓이긴 했지만, 꽤나 시행착오도 많이 했었고 중간에 어려운 난이도에 부딪혀서 잠시 공부를 포기하며 쉬는 기간들도 꽤 많았습니다.

 

3년전의 과거의 저에게 지금 이 책이 주어진다면, 좀 더 효율적이고 덜 좌절하면서 공부를 할 수 있었지 않았을까 하는 생각이 듭니다.

 

그래서 이 책의 특/장점은 무엇이냐면

동빈님이 쓰신 이 책의 특징과 장점이라고 하면, 아마 다음과 같은 항목들이지 싶습니다.

취업용 코딩테스트의 최신 트랜드 반영

알고리즘 문제풀이를 공부하는 사람들은 이유가 다양하지만, 일반적으로는 취미용이나 대회용을 타겟으로 한 책들이 많습니다. 취업용 문제풀이의 경우는 취미용이나 대회용 만큼의 고급/심화 내용을 포함하진 않고, 취업용은 이 대회용 문제들의 부분집합이라고 볼 수 있습니다. 물론 고급 내용들도 공부를 하면 무조건 좋지만, 효율적으로 취직을 타겟으로 공부를 할 때에는 조금 돌아가는 부분이 있을 수 있습니다.

이 책에는 취업용 코딩테스트에서 나올 법 한 것들을 모두 잘 커버하며 잘 짜여진 커리큘럼이 있으며, 최근 기출문제들과 관련 유형들을 잘 커버하고 있습니다. 

유명한 종만북과 비교를 하자면, 종만북은 책의 목적이 취업용 코딩테스트를 위한 책이 아니며 책이 쓰인지도 꽤 오래된 편입니다.

알고리즘 문제풀이를 처음 접하는 사람들을 위한 난이도

보통 취업용 코딩테스트를 준비하는 분들은 하나 정도의 프로그래밍 언어를 사용할 줄 알며, 취직 준비를 위해서 알고리즘 문제풀이를 처음 공부하는 사람들이 많습니다. 이미 프로그래밍 대회 등을 준비했던 사람들에게는 따로 준비가 필요없을 수 있거든요. 이렇게 알고리즘 문제풀이에 처음 입문하는 사람들도 쉽게 이해하며 단계별로 계단을 밟아가듯 핵심 개념들을 쉽게 이해할 수 있도록, 이러한 독자들의 눈높이에 맞도록 쓰여진 책이라고 생각합니다.

종만북과 비교를 하자면, 종만북은 예상독자와 책 읽는 목적 자체가 좀 더 향상된 실력에 맞추어져 있어서, 알고리즘 문제풀이를 처음 접하는 사람에게는 진입장벽이 다소 있어서 책을 읽는 처음부터 어느정도 좌절을 할 수 있습니다.

파이썬 및 C++/Java 풀이 제공

코딩테스트 시 3대장 언어가 C/C++, Java, Python입니다. 전통적인 알고리즘 책들은 보통 C++ 코드를 고수하는 경우가 많습니다. 저 역시 알고리즘 문제 풀이 입문을 위해서 PS스타일의 C++와 C++ STL을 따로 공부하며 시간을 투자했습니다. 하지만 요즘에는 컴퓨터 공학 전공자 뿐만 아니라, 그 외의 산업공학과나 수학과 통계학과 경영학과 등 다양한 전공자들이 코딩을 배우는 경우가 많으며, 보통 이 경우 첫 입문 언어로 파이썬을 많이들 배웁니다. 이러한 분들에게 파이썬으로 코딩테스트 문제 풀이를 도와주는 책으로써 가치가 있고, 파이썬 뿐 만 아니라 C++과 Java 풀이 코드도 github를 통해 제공을 하여 공부에 도움을 줍니다.

지속적인 학습을 위한 리소스 제공

저자인 동빈님은 원래 유투브를 통해서 무료 개발과 SW관련 강의들을 많이 찍던 컨텐츠 크리에이터로써, 책과 관련된 강의들도 유투브를 통해 제공을 하고, 정답 코드 들도 친절한 주석과 함께 github에 공개되어 있습니다. 컴퓨터교육과 전공자 출신 답게 전달력있는 강의를 잘 제공하며, 수 많은 교육 경험들이 어우러진 동빈님의 컨텐츠는 공부를 할 방향과 내용들을 쉽게쉽게 이해할 수 있게 해줍니다.

 

어떤 사람들이 읽으면 좋은가?

3년전의 저에게 추천해주고 싶은 책입니다. 여태까지 알고리즘 문제해결 분야에 발을 담그지 않았다가, 이제 곧 취직 준비를 해야 해서 코딩테스트를 준비를 해야 하는 경우, 이 책에 있는 공부법대로 그대로 실시하면 됩니다. 최신 트랜드도 그대로 반영하고 있기 때문에 지금으로서는 이보다 더 가성비 좋은 선택은 없지 않을까 하는 생각이 듭니다.

+ Recent posts