SD카드 32GB로는 아무것도 못 한다는 걸 뼈저리게 깨달은 날
들어가며
https://betateacher.tistory.com/1
Jetson Orin Nano 개봉기 — AI 서버 만들기 첫 걸음
AI 컴퓨터, 과연 교무실에서 살아남을 수 있을까?들어가며정보 교사로 일하다 보면 늘 이런 생각이 든다."교과서에서 AI를 가르치는데, 나는 AI를 제대로 써본 적이 있나?"그래서 질렀다. NVIDIA Jetso
betateacher.tistory.com
1편에서 JetPack 설치와 SSH 원격 접속까지 성공했다.
오늘 목표는 딱 하나였다. LLM 모델을 돌려서 한국어로 대화하는 것.
결론부터 말하면 됐다. 하지만 그 과정이 순탄하지 않았다.
1. 용량 문제 — 예상치 못한 벽

의기양양하게 첫 모델을 받으려는 순간 이런 오류가 났다:
Error: no space left on device
df -h
# /dev/mmcblk0p1 28G 27G 0 100% /
32GB SD카드에 JetPack이 27GB를 잡아먹어버렸다.
남은 공간이 0바이트였다.
💡 팁: JetPack 6.x는 설치 후 약 25~27GB를 사용한다. 처음부터 128GB 이상 SD카드 또는 NVMe SSD를 사용할 것을 강력히 권장한다.
2. NVMe 마이그레이션 — 생각보다 험난했다
512GB NVMe SSD를 구매했다.
(중고로 20만원에 구입... 너무나 가격이 올랐다..)
Jetson Orin Nano M.2 슬롯에 꽂고 마이그레이션을 시도했다.
2-1. dd 명령어로 복사
sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4M status=progress

88MB/s 속도로 약 10분 소요
약 10분 후 복사 완료. 여기까지는 순탄했다.
2-2. 파티션 확장
sudo apt install cloud-guest-utils -y
sudo e2fsck -f /dev/nvme0n1p1
sudo growpart /dev/nvme0n1 1
sudo resize2fs /dev/nvme0n1p1
NVMe 파티션이 457GB로 확장됐다.
2-3. 부팅 순서 변경 — 여기서 진짜 삽질 시작
재부팅했는데 여전히 SD카드로 부팅되고 있었다.
efibootmgr, nvbootctrl, nv-l4t-bootloader-config.sh 등 여러 방법을 시도했고, 결국 핵심은 두 파일을 수정하는 것이었다.
1. /etc/nv_boot_control.conf 수정
sudo sed -i 's/TEGRA_BOOT_STORAGE mmcblk0/TEGRA_BOOT_STORAGE nvme0n1/' \
/etc/nv_boot_control.conf
sudo /opt/nvidia/l4t-bootloader-config/nv-l4t-bootloader-config.sh
2. NVMe 안의 extlinux.conf 수정
sudo mount /dev/nvme0n1p1 /mnt
sudo sed -i 's/root=\/dev\/mmcblk0p1/root=\/dev\/nvme0n1p1/g' \
/mnt/boot/extlinux/extlinux.conf
sudo umount /mnt
sudo reboot
재부팅 후 확인:
df -h
# /dev/nvme0n1p1 457G 26G 410G 6% /

410GB 여유 공간 확보! 🎉
💡 핵심 포인트: Jetson Orin Nano는 extlinux.conf가 SD카드와 NVMe 두 곳에 있다. 둘 다 수정해야 NVMe 부팅이 된다.
3. Ollama + 모델 설치
NVMe로 전환하고 나니 모든 게 순탄해졌다.
# Ollama 설치 (이미 1편에서 완료)
# 모델 다운로드
ollama pull qwen2.5:7b # 한국어 성능 우수, 4.7GB
ollama pull qwen3:8b # 최신 버전, Thinking 모드 포함, 5.2GB
모델 선택 기준 (Jetson Orin Nano 8GB 기준)
모델 용량 특징
| qwen2.5:7b | 4.7GB | 한국어 성능 우수, 안정적 |
| qwen3:8b | 5.2GB | 최신, Thinking 모드, 약간 느림 |
| qwen3:4b | 2.5GB | 빠른 응답, 성능 다소 낮음 |
터미널에서 바로 테스트:
ollama run qwen3:8b --think=false
>>> 안녕
안녕하세요! 😊 어떤 도움이 필요하신가요?

--think=false 옵션을 붙이면 Thinking 과정 없이 바로 응답한다.
4. Open WebUI — 브라우저로 ChatGPT처럼
터미널 채팅만으로는 학생들한테 보여주기 어렵다.
브라우저에서 쓸 수 있는 Open WebUI를 Docker로 설치했다.
4-1. Docker 설치
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
JetPack에 Docker가 이미 포함되어 있어서 업데이트 형태로 진행됐다.
4-2. Open WebUI 실행
docker run -d \
--network=host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v open-webui:/app/backend/data \
--name open-webui \
--restart always \
ghcr.io/open-webui/open-webui:main
4-3. 메모리 부족 문제와 Swap
첫 시도에서 이런 오류가 났다:
cudaMalloc failed: out of memory

OS + Docker + qwen3:8b를 동시에 올리니 8GB RAM이 부족했다.
해결책은 Swap(가상 메모리) 추가였다.
sudo fallocate -l 8G /var/swapfile
sudo chmod 600 /var/swapfile
sudo mkswap /var/swapfile
sudo swapon /var/swapfile
# 재부팅 후에도 유지
echo '/var/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
SSD 8GB를 RAM처럼 쓰는 방식이다. 속도는 느리지만 돌아는 간다.
free -h
# Mem: 7.4Gi 2.4Gi 4.6Gi
# Swap: 11Gi 1.2Gi 10Gi
RAM 7.4GB + Swap 11GB = 총 18GB 확보!
💡 교과서 연계: 이 Swap이 바로 중학교 정보 교과서 I단원 "기억 장치" 에서 배우는 가상 메모리 개념이다. 실제로 작동하는 걸 눈으로 보는 것이 교육 효과가 크다.
4-4. 성공!
http://192.168.10.76:8080 접속 후 계정 생성, qwen3:8b 선택.

Thinking 모드를 끄면 응답 속도가 훨씬 빠르다.
현재까지 완료된 것
- ✅ JetPack 6.2.1 설치 및 부팅
- ✅ Ubuntu 초기 설정
- ✅ SSH + Tailscale 원격 접속
- ✅ NVMe 마이그레이션 (457GB)
- ✅ Ollama + qwen3:8b 설치
- ✅ Swap 8GB 추가
- ✅ Open WebUI — 브라우저 AI 채팅
- ⬜ YOLO 카메라 + QR 디스플레이 (다음 편)
- ⬜ 교무실 전시 세팅
마치며
성능은 ChatGPT나 Claude에 비할 바가 못 된다.
응답도 느리고, 가상 메모리까지 써가며 겨우 돌아간다.
하지만 이 작은 보드가 인터넷 없이, 비용 없이, 데이터 한 줄 외부로 나가지 않고 한국어 AI를 돌리고 있다는 사실 자체가 의미 있다.
내일 학생들한테 보여줄 생각에 괜히 설렌다.
"수업도 장비도 늘 베타 중. 정보 교사의 기록 실험실."
정보쌤의 실험실 | 베타버전 선생님
'삽질' 카테고리의 다른 글
| Discord 챗봇 "하루" 만들기 — Ollama + NovelAI 연동기 (0) | 2026.06.04 |
|---|---|
| Jetson Orin Nano 개봉기 — AI 서버 만들기 첫 걸음 (0) | 2026.05.18 |