셸과 텍스트
Bash 변수는 어디까지 유지될까요?
if문, 함수, 서브셸을 구분하고 변수 값이 자식 프로세스에 전달되는 과정을 확인합니다.
빌드가 실패했는데 다음 단계가 실행되는 이유
종료 상태를 보존하고, 자식 스크립트의 실패를 부모까지 전달합니다. 셸과 Makefile의 달러 기호도 구분합니다.
설정을 바꿨는데 PATH가 그대로인 이유
source, 로그인 셸, 대화형 셸이 설정을 읽는 시점을 구분하고 PATH 중복을 줄입니다.
공백과 개행이 있는 파일 이름을 다루는 방법
파일 이름을 ls 출력에서 다시 잘라 쓰지 않고, find와 인자 전달 규칙으로 처리합니다.
셸의 조건문과 반복문을 읽는 순서
if가 검사하는 종료 상태부터 case, break, read, trap까지 작은 예제로 확인합니다.
Backspace와 개행이 다르게 보일 때
터미널이 보낸 바이트, line discipline, 편집기의 키 해석을 나누어 확인합니다.
문자 하나와 바이트 하나는 다릅니다
cut, locale, isspace를 사용할 때 확인해야 할 조건입니다.
빌드와 디버깅
BusyBox의 applet not found는 무엇을 확인해야 할까요?
명령 검색 실패, BusyBox에 빠진 기능, 인터프리터 오류, 커널 기능 부족을 구분합니다.
빌드하는 컴퓨터와 실행할 컴퓨터를 구분합니다
64비트 여부, 컴파일러, 개발 헤더, sysroot를 확인하는 순서입니다.
커널 빌드 오류에서 확인할 파일들
실행 커널, .config, Kbuild, Module.symvers를 각각 어떤 목적으로 읽는지 설명합니다.
주소 하나를 소스 위치로 바꾸려면
실행 파일, 디버그 정보, 로드 주소가 맞아야 addr2line 결과를 해석할 수 있습니다.
패치가 적용되지 않을 때 확인할 순서
원본 버전과 경로를 먼저 맞추고, 변경 결과를 비교합니다.
ITS, ITB, DTB는 무엇이 다른가요?
U-Boot FIT에서 이미지와 부팅 구성을 묶는 방식을 살펴봅니다.
printk, 콘솔, 사용자 로그를 구분합니다
로그가 저장되는 곳과 화면에 출력되는 조건, 디버깅 이력을 확인합니다.
system()의 반환값을 exit 코드처럼 읽으면 안 됩니다
명령 실행 실패, 정상 종료, 시그널 종료를 구분합니다.
파일과 시스템 상태
용량이 남았는데 No space left on device가 나옵니다
실패한 경로가 속한 파일시스템에서 블록·inode·사용자별 가용량을 차례로 확인합니다.
파일 크기와 디스크 공간 확보는 다릅니다
ftruncate와 posix_fallocate를 구분하고, 반환값에 들어 있는 오류 번호를 올바르게 처리합니다.
파일을 비교하고 분할본을 확인하는 방법
cmp, 체크섬, strings가 각각 무엇을 확인하는지 구분합니다.
디스크·파티션·파일시스템을 구분합니다
포맷과 덮어쓰기의 차이, 용량과 사용량을 읽는 방법을 정리합니다.
권한 오류를 볼 때 확인할 순서
UID, 디렉터리 탐색 권한, ACL, 파일 속성을 구분합니다.
메모리·온도·CPU 상태를 읽는 방법
수치의 대상과 단위를 확인하고, 관찰한 값에서 말할 수 있는 범위를 구분합니다.
경과 시간과 CPU 시간을 따로 측정합니다
CLOCK_MONOTONIC과 CPU 시간 시계를 같은 구간에 사용해, 기다린 시간과 실제 계산 시간을 구분합니다.
APT 오류와 dpkg 상태를 구분합니다
목록 갱신, 패키지 파일, 설치 기록은 서로 다른 데이터입니다.
장치와 네트워크
장치 노드와 드라이버를 따로 확인합니다
lsmod, /proc/devices, sysfs, Device Tree에 나타나는 정보의 차이입니다.
직렬 통신 코드는 읽은 길이부터 확인합니다
termios 설정의 수명과 read/poll 결과를 구분하는 C 예제입니다.
i2cdetect의 UU와 빈칸을 해석합니다
주소 응답과 커널의 장치 등록, 실제 기능 동작을 구분합니다.
주소·경로·DNS를 따로 확인합니다
IP 연결과 이름 조회를 나눠 실패 지점을 좁힙니다.
NFS 연결 오류와 파일 권한 오류를 구분합니다
경로, NFS 버전, exports, UID 매핑을 나누어 확인합니다.
SSH 키와 중계 서버 설정을 확인합니다
접속 경로, 사용자 인증, 서버의 신원 확인을 각각 점검합니다.