프로그래밍과 잡담

[Odroid C5] 외장 ssd 부팅의 대삽질의 여정 본문

프로그램 사용법

[Odroid C5] 외장 ssd 부팅의 대삽질의 여정

크레온 2026. 2. 6. 21:28

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)

  1. 파티션 생성: 
    sudo fdisk /dev/sda
    # 기존 파티션 삭제(d), 새 파티션 생성(n), 저장(w)
    
  2. 포맷: 
    sudo mkfs.ext4 /dev/sda1
    

     

  3. UUID 확인 및 변경 (선택사항): SD카드와 UUID가 겹치지 않게 새로 생성해주는 것이 가장 깔끔합니다.
    sudo tune2fs -U random /dev/sda1
    lsblk -f /dev/sda1  # 새로 생성된 UUID를 메모해두세요.
    

2단계: 데이터 복사 (SD → SSD)

단순 복사가 아니라 권한과 속성을 그대로 유지하며 복사해야 합니다.

  1. 마운트용 폴더 생성 및 연결:
  2. sudo mkdir -p /mnt/ssd
    sudo mount /dev/sda1 /mnt/ssd
    
  3. 데이터 복사 (rsync 사용): 현재 실행 중인 시스템을 통째로 복사합니다. (/proc, /sys 등 가상 폴더는 제외)
  4. 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에 맞게 고쳐줍니다.

  1. fstab 수정:
    • sudo nano /mnt/ssd/etc/fstab
      

      / (루트) 경로의 UUID를 아까 메모한 SSD의 UUID로 교체합니다.

        

  2. 드라이버(Modules) 추가:
    • sudo nano /mnt/ssd/etc/initramfs-tools/modules
      
       
      • 아래 내용 추가 (USB 인식 보장):
      usb_storage
      uas
      xhci_pci
      sd_mod
      
       
       
  3. 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

💡 다음번에 바로 써먹을 핵심 요약

  1. 복사는 rsync (권한 유지).
  2. SSD의 fstab 미리 수정 (UUID 일치).
  3. mount --bind /boot 반드시 실행 (부트 영역 동기화).
  4. chroot에서 굽기 (이게 가장 확실한 방법).
반응형
Comments