| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- Qt OpenGL
- Qt4
- 양평역
- 이륜차
- 고속도로
- 디자이어HD
- c언어
- 안드로이드
- QT
- 오토바이
- 재귀함수
- 스타크래프트2
- 잡담
- 윈도우7
- 엑티브엑스
- 스타2
- 자바
- qt 설치
- FFI
- vuejs
- 마영전
- HTML
- 알람프로그램
- Qt 소켓프로그래밍
- 바이크
- 정성하
- QTcpServer
- android SAF
- Java
- 자료구조
- Today
- Total
프로그래밍과 잡담
[Odroid C5] 외장 ssd 부팅의 대삽질의 여정 본문
Odroid의 C5라는 걸 샀는데,
아~ 빌어먹을 사도 아주 잘못 산거 같아.
가격이 싸다고 샀다가 된통 피를 봤다.
사실 라즈베리파이 같은거는 그냥 기본적으로 usb 부팅을 지원하는데 이노무거는 왜 지원을 안하냐?
뭐 사실 그냥 emmc 모듈을 꼽으면 되는건데 돈 아깝기도 하고, 예전에 쓰던 ssd 용량 작은게 있어서 그걸로 부팅을 해볼려는거 였음.
내가 할려는 목적은 micro sd로 부팅을 하고 나머지 리눅스의 rootfs 부분 ( / )은 ssd를 통해서 사용하고 싶은거 였음.
이유는 간단히 sdcard가 너무 느려터지기 때문이지. 물론 이노무게 싼마이라 그런지 몰라도 usb3.0을 지원을 안하긴 하지만 그래도 sdcard 보단 훨씬 빠름.
근데 이 망할노무 os를 어떻게 셋팅을 해놓은건지 몰라도
/etc/default/flash-kernel 을 백날 바꿔서 부팅을 해도 무조건 sd카드로 부팅을 한다.
뭔가 내부적으로 sdcard를 무조건 부팅하게 끔 하는게 있는거 같음.
그래도 gemini 로 열심히 물어봐서 성공을 했네.
여하튼 나중에 또 이 지랄을 안하기 위해서 gemini 한테 삽질 했던거에 대한 메뉴얼을 만들어 달라서 다음에 할때 보고 해야겟다.
gemini 나 chatgpt 같은게 생기면서 검색하기가 굉장히 편해졌음.
물론 이게 가끔씩 개소리를 하기 때문에 전적으로 믿으면 큰코를 다치지만 잘 이용하면 좋은 도구로서 이용 할 수 있다.
생성형 AI들은 영화에서 나오는 그런 AI가 아닌데도 불구하고 이렇게 하는거 보면 무섭긴 하다.
아래의 내용은 Gemini를 통해서 만든 메뉴얼이므로 반듯이 동작한다고 보장할수 없음.
물론 내가 삽질을 하면서 찾아낸거라. 동작 할 가능성은 높으니 참고 할 만함.
아나 tistory 꺼 에디터 왜 이래? gemini 꺼 복사하니까 거지같이 나오네..
======================================================================================
1단계: SSD 파티션 준비
먼저 SSD를 연결하고 장치 이름을 확인합니다. (보통 /dev/sda)
- 파티션 생성:
sudo fdisk /dev/sda # 기존 파티션 삭제(d), 새 파티션 생성(n), 저장(w) -
포맷:
sudo mkfs.ext4 /dev/sda1 - UUID 확인 및 변경 (선택사항): SD카드와 UUID가 겹치지 않게 새로 생성해주는 것이 가장 깔끔합니다.
sudo tune2fs -U random /dev/sda1 lsblk -f /dev/sda1 # 새로 생성된 UUID를 메모해두세요.
2단계: 데이터 복사 (SD → SSD)
단순 복사가 아니라 권한과 속성을 그대로 유지하며 복사해야 합니다.
- 마운트용 폴더 생성 및 연결:
-
sudo mkdir -p /mnt/ssd sudo mount /dev/sda1 /mnt/ssd - 데이터 복사 (rsync 사용): 현재 실행 중인 시스템을 통째로 복사합니다. (/proc, /sys 등 가상 폴더는 제외)
-
sudo rsync -axHAWXS --numeric-ids --info=progress2 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/ssd/
3단계: SSD 내부 설정 수정 (이사 갈 집 단장)
아직 SSD가 마운트된 상태에서, SSD 내부의 설정 파일들을 SSD의 UUID에 맞게 고쳐줍니다.
- fstab 수정:
-
sudo nano /mnt/ssd/etc/fstab/ (루트) 경로의 UUID를 아까 메모한 SSD의 UUID로 교체합니다.
-
- 드라이버(Modules) 추가:
-
sudo nano /mnt/ssd/etc/initramfs-tools/modules- 아래 내용 추가 (USB 인식 보장):
usb_storage uas xhci_pci sd_mod
-
- Flash-Kernel 설정:
-
sudo nano /mnt/ssd/etc/default/flash-kernel - LINUX_KERNEL_CMDLINE에 root=UUID=[SSD-UUID] rootwait rootdelay=20 추가.
-
4단계: 부팅 파일 생성 (Binding & Chroot)
이 부분이 가장 중요합니다. SD카드의 /boot를 SSD 환경에 빌려줘서 파일을 굽게 만듭니다.
# 가상 시스템 경로 연결
sudo mount --bind /dev /mnt/ssd/dev
sudo mount --bind /dev/pts /mnt/ssd/dev/pts
sudo mount --bind /proc /mnt/ssd/proc
sudo mount --bind /sys /mnt/ssd/sys
# ★ 핵심: SD카드의 부트 파티션을 SSD의 /boot 위치에 연결
sudo mount --bind /boot /mnt/ssd/boot
# SSD 환경으로 들어가서 파일 갱신
#sudo chroot /mnt/ssd /bin/bash -c "update-initramfs -u && flash-kernel"
# 위의 내용 중 gemini가 잘못된걸 알려주고 있음.
# update-initramfs -u => update-initramfs -u -k $(uname -r) 변경해야한다.
# 수정한 부분
sudo chroot /mnt/ssd /bin/bash -c "update-initramfs -u -k $(uname -r) && flash-kernel"
* ai가 역시나 잘못된 걸 알려준다.
* update-initramfs -u -k $(uname -r) 이걸 써줘야 부팅 시 벽돌되는걸 막을 수 있다.
물론 다시 /boot를 백업했으면 PC 연결해서 복구하면 되겠지만. 위의 chroot를 이용하는 작업 할 때는 /boot를 백업하고 하는걸 추천한다.
5단계: 마무리 및 종료
모든 작업이 끝났으므로 안전하게 마운트를 해제합니다.
exit # chroot에서 혹시 안 나왔다면 실행
sudo umount /mnt/ssd/boot
sudo umount /mnt/ssd/dev/pts
sudo umount /mnt/ssd/dev
sudo umount /mnt/ssd/proc
sudo umount /mnt/ssd/sys
sudo umount /mnt/ssd
sudo reboot
💡 다음번에 바로 써먹을 핵심 요약
- 복사는 rsync (권한 유지).
- SSD의 fstab 미리 수정 (UUID 일치).
- mount --bind /boot 반드시 실행 (부트 영역 동기화).
- chroot에서 굽기 (이게 가장 확실한 방법).
'프로그램 사용법' 카테고리의 다른 글
| [termux] proot-distro tarball 설치 방법. (0) | 2026.02.08 |
|---|---|
| [도커] 윈도우10 WSL 에서 도커 사용하기. (0) | 2026.02.03 |
| [윈도우] 전원메뉴에서 절전을 없애는 방법 (0) | 2025.02.27 |
| [엑셀] 숫자로된 날짜에서 년월일 빼내기 (0) | 2025.02.14 |
| [FTP 서버] 윈도우 IIS FTP 서버 가상디렉토리 관련.. (0) | 2024.11.22 |