본문 바로가기
General CS/Linux

Linux - Raspberry PI라면 Raspbian을 쓰자.

by 리나그(ReenAG) 2021. 7. 10.
728x90
반응형

 오늘 왭서핑을 하면서 나한테 필요한 정보를 하나 얻었다. 왜 NodeJS 11.15.0이 분명 "armv6hl"로 적혀있고, 내 라즈베리 파이 제로가 ARMv6인데도 동작하지 않았는가? 에 대한 정보이다.

결론부터 이야기하자면 :

https://www.raspberrypi.org/software/operating-systems/

 

Teach, Learn, and Make with Raspberry Pi

The Raspberry Pi is a tiny and affordable computer that you can use to learn programming through fun, practical projects. Join the global Raspberry Pi community.

www.raspberrypi.org

-> armhf아키텍쳐를 쓰고 싶다면 우선 이것부터 깔자!

 

미래의 내가 의문을 갖지 않도록 왜 이런 결론에 도달했는지를 적어 놓아야겠다.

이 글이 나에게 힌트를 주었다 :

https://chrislea.com/2018/08/20/cross-compiling-node-js-for-arm-on-ubuntu/

 

Cross Compiling Node.js for ARM on Ubuntu

Node.js is available for many different operating systems and architectures. We can run it on our Macbooks locally, on full server grade systems, and on IoT devices with ease. The Node Foundation p…

chrislea.com

우분투 시스템에서 NodeJS를 다른 시스템을 위해서 컴파일하는, 그러니까 크로스 컴파일 하는 방법을 다룬 것이다. 여기서 file명령어를 통해서 NodeJS의 executable을 살펴본 output이 있는데, 그게 이것이다.

node: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=6cad42017fc1be2138aee900f0219890584268c7, with debug_info, not stripped

여기서 나는 이 부분에 주목했다.

interpreter /lib/ld-linux-armhf.so.3

/lib 안의 어떤 링커를 통해서 이것이 실행된다는 뜻이었다. 설마 싶어서 /lib안에 들어가 보니, 그런 파일은 존재하지 않았다. 비슷한 이름으 ld-linux.so.3라는 파일이 있어서 여러 사이트에 물어보았는데, 두 개의 파일을 심볼릭 링크 시켜서 쓸 수 있다는 답변을 받았다. 하지만 ld-linux-armhf -> ld-linux 로 링크하라는 소리는 있어도 그 반대는 없었다. (여기서 부터 망했다는 예감이 들었다.)

 

아무튼 그냥 링크 시킨 다음 내가 다운로드 받은 NodeJS를 실행해보니, 기존의 "No such file" 대신의 "Segment Fault"에러를 받았다. 아예 다른 반응을 보인적이 없던 NodeJS가 여기서 반응하길래 좀 어이가 없었다. 대강 메모리 적인 이유로는 이해가 갔다. armhf가 armel보다는 더 상위 버전이기 때문에, 하위 버전을 링크한다고 동작하지는 않을 것이다.

 

여기서 더 구글링을 한 결과 armhf가 kali linux에서는 지원되지 않고, Raspbian에서는 지원 된다는 것을 알아낼 수 있었다. 결론은... kali linux에서는 죽어도 안되도 Raspbian에서는 RoR이고 NodeJS고 멀쩡하게 돌릴 수 있다는 사실이다. 나는 왜 여태까지 그것을 몰랐을까 ㅜㅜ

 

아무튼 기기에 최적화된 OS가 있다면 역시 그것을 쓰는 것이 옳다~ 라는 교훈을 얻은 하루였다.

 

2021 - 07 - 13 update

교훈은 개뿔 내가 Raspbian을 싫어했던 이유가 생각났다. 네트워크 핸들링을 정말 못한다는 점이었다... 아 정말 armhf패키지를 쓸 수 있으면 뭐하냐. Wi-Fi에 연결하면 google에 핑이 안가지를 않나... 대환장 쇼이다. 분명 내 RPI에 뭔가 문제가 있는것 같은데 그게 뭔지를 모르겠다. 아무리 wpa_supplicant를 제대로 세팅을 해도... 구글링을 해도... 답이 나오지를 않는다. 그래서 어쩔 수 없이 결정하기로 했다. armel을 쓰더라도 네트워크가 안정적인 kali linux로 밀고 나갈 건지, 아님 armhf를 쓰고 네트워크가 불안한 Raspbian을 쓸 건지, 아님 두개의 장점 만을 가져온, 정말 이상적인 linux distro를 내가 직접 제작하던지. 아무튼 대강 결정을 내릴 계획이다. 생각해보니 NodeJS 11버전을 kali에 박는 방법을 찾는 것도...?

728x90
반응형