[DEBUG NOTE] 디버깅 노트 2022.12.12 - 2022.12.23

■■■■■■■■■■

<문제>
Install 후에 왜 ifconfig 에 PPP가 뜨지 않았을까? 원래 정상작동이라면 PPP가 떠야한다.

<가정>
가정1. 모뎀이 2개 꽂혀 있어서
가정2. 모뎀이 설정된 포트와 다른 곳에 꽂혀서

<실험>
실험1. 해당 LTE 모뎀으로 아래포트에 연결 -> ppp 안뜸.
실험2. 해당 LTE 모뎀으로 위포트에 연결 -> ppp 안뜸. 해당 LTE모뎀이 불량이든지, USIM 개통이 안됐든지.
실험3. 드론 LTE 모뎀으로 아래포트에 연결 -> ppp 뜸.
실험4. 드론 LTE 모뎀으로 위포트에 연결 -> ppp뜸. 즉 LTE모뎀을 라즈베리 어느포트에 연결하든지 상관없다.

<결론>
따라서 2개 꽂혀서 그렇다.

■■■■■■■■■■

<문제>
왜 wi-fi가 안 잡힐까? 원래라면 잡혀야 하는데?

<가정>
가정1. psk 값에 패스워드 대신 key 값을 넣어야 해
가정2. 오타
가정3. 다른 파라미터 값 수정을 안했나

<실험>
실험1. dhcpcd.conf 에 wlan0를 설정하는 것을 깜박해서 바꿨다.
실험2. psk 값에 패스워드 대신 key 값을 넣으니까 된다.
실험3. 오타가 있었나보다. 패스워드를 다시 입력하니까 된다.

■■■■■■■■■■

<문제>
systemctl status networking.service 에러가 뜨는 이유?

<검색>
https://lux.cuenet.kr/105


<결론>
설정한 인터페이스 명이 달라서.

■■■■■■■■■■

<문제>
업데이트가 자동적으로 이뤄지게 프로그램 상에서 지원하면,
매번 종속된 모든 라이브러리를 체크하느라 부팅이 느려진다.
그리고 업데이트 이후 특정 라이브러리가 버전업이 되면서
호환이 맞지 않아 버그가 발생하는 경우가 있다.
더군다나 업데이트를 지원하면 디바이스의 LTE 연결이 반드시 필요해진다.
업데이트를 안 할 수도 없는 노릇이다.

<가정>
업데이트는 꼭 필요하다?
꼭 그렇지만도 않다. 특히나 우리 서비스처럼 폐쇄적인 시스템에서는 더더욱 필요없다.
유저로서의 개인적인 경험은, 업데이트가 귀찮을 때가 있다.
빨리 사용하고 싶은데 업데이트로 이런저런 과정을 거치면서 기다리는게 싫다.
두 번째 이유는 더 큰데, 괜히 업데이트 해서 내가 세팅해 놓은 값들이 바뀔까봐
우려스러워서 업데이트를 망설이는게 있다. 그런 일이 일어나면 굉장히 짜증날 거고
일어나지 않더라도 딱 맞게 잘 돌아가고 있는거 괜히 업데이트해서 불편해지거나
흐트러질 수 있다는 가능성만으로도 그걸 기피하게 된다. 더군다나 중요한 일을
앞두고 강제로 업데이트를 진행해서 문제가 생긴다면 사용자의 불만이 폭주할 것이다.

<결론>
모든 라이브러리들이 업데이트 된 버전을 틈틈히 올려서
사용자들이 버전을 선택해서 이용할 수 있게하자.
그러면 디바이스 단에서 업데이트가 필요하지 않을 것이므로,
LTE가 필요한 이유도 하나 줄어들게 되고, 또 그를 위한 모뎀도
제거할 수 있다.

■■■■■■■■■■

<문제>
사용자가 자신의 사용환경에 맞춰 파라미터를 세팅하는 과정은
재고의 여지없이 불가피하다. 그런데 리눅스 터미널 화면에서
파라미터를 세팅하는 과정은 사용자에게 너무 어려울 수 있으며,
종종 이에 대한 문의가 들어온다.

<가정>
사용자가 느끼는 이 어려움은 CLI로 인한 어려움인가?
대부분 우리의 유저는 일반 생활가전을 다루는 주부, 아이들이 아니라
그래도 나름 기기를 다루는 것에 관심이 많고, 메뉴얼을 보면서
기기를 조작하는 것에 익숙한 유저라고 추정된다.
그렇다고 가정했을 때, 종종 우리가 받게 되는 문의의
핵심 문제는 CLI 환경 자체에 있다기 보다는
파라미터 설정 과정의 복잡성과 메뉴얼이나 설명의
불충분함이 문제일 것이라고 여겨진다.
CLI 환경을 GUI 환경으로 어렵지 않게 바꿀 수 있다.
sudo apt-get install xfce4 -y 로 가능하다.
근데 GUI 를 넣으면 메모리를 꽤 많이(500MB) 차지해서,
적은 메모리를 사용하는 유저에게는 부담스러울 수 있다.
그리고 GUI를 넣는다는건 모니터를 꼭 연결한다는 가정인데,
매번 기기마다 모니터를 연결하는 불편한 방식을 권장하는 모양새다.
사용자가 CLI에 익숙해진다면 단순히 ssh로 접속하여 기기만 바꿔서
세팅을 달리 할 수 있으므로, GUI는 굳이 필요없다.

<결론>
따라서 CLI를 더 쉽게 사용할 수 있도록 돕는게 더 나은 방안이다.
CLI 세팅 과정을 어떻게든 최소화한다.
파일은 하나로 통일하고,
복잡한 명령어는 단축키로 만들고,
파라미터는 보기 좋고, 읽기 좋게 배치하고
당연한 것들은 자동화시키고,
불필요한 것들은 삭제하거나 안보이게 만들고,
여러 파트의 과정들을 최대한 축소시키거나 통합한다.
그리고 메뉴얼을 최대한 친절하게 만든다.
일상어 사용 + 예시 + 그림 + 사소한 과정도 빼지 않고.

■■■■■■■■■■

<문제>
메인 프로그램 이후에 터미널이 죽는다.

<가정>
백그라운드로 실행하지 않아서 그렇다.

<결론>
실행 명령어 뒤에 & 앰퍼샌드 붙일 것.

■■■■■■■■■■

<문제>
이미지 생성 과정에서 raspberry pi OS 중 라즈비안 64bit lite 버전이
라즈베리파이 3, 4를 위한 것이어서 다운받았는데 SDAS 설치 과정에서
sudo ./setwifi 를 치면 버젓이 있는 파일에 sudo: unable to edcute no such file 이란 에러가 뜬다.
sudo로 권한을 변경해주기도 했는데 그럼에도 에러가 뜬다.

<가정>
가정1. 패키지 이름뒤에 :i386을 붙여본다.

<실험>
실험1. 패키지 이름뒤에 :i386을 붙여도 안된다.

<검색>
https://ubuntuforums.org/showthread.php?t=2359697

이 사이트를 참고하자면 이건, 64bit 운영체제에서 32bit 프로그램을 돌리려하기 때문이란다.

<결론>
32bit로 하니깐 된다. ㅎ

■■■■■■■■■■

<문제>
rc.local 파일에 특정 문자열 넣기. echo >>로 집어넣으면 마지막줄에 넣어지는데,
맨 마지막에는 exit 0 가 있어야 한다. 따라서 그 위에 넣어야 함

<검색>

<결론>
perl -p -i -e '$.==<22:특정열> and print"<명령어>"'<InputFile> 이렇게 해야한다.
sudo perl -p -i -e '$.==19 and print "sudo /home/pi/expand_rootfs"' /etc/rc.local
더 좋은 방법을 찾았다.
그냥 실행 코드를 넣어줄 것이 아니라 직접 실행하면 된다.

Posted by ssanatos
,