하드웨어 준비물
- 라즈베리파이 5
- M.2 NVMe가 장착 가능한 PCle 인터페이스 HAT(for RPi5)
- M.2 NVMe
위 준비물조합 × n개 세트
작업내용
- 부트로더 업데이트 및 부팅 순서 설정: NVMe 에 부트 미디어가 있는지 부트로더가 살펴보게 합니다.
- 부트로더 업데이트: 최신 부트로더를 사용해야 NVMe 부팅이 가능합니다. SD 카드를 통해 라즈베리파이를 부팅한 후, 터미널에서 다음 명령어를 실행하여 부트로더를 업데이트하세요.
sudo apt update sudo apt full-upgrade sudo rpi-eeprom-update -d -a
- 부팅 순서 설정: 부트로더 설정 파일을 편집하여 NVMe를 우선 부팅 장치로 지정해야 합니다. 다음 명령어를 실행하여 설정 파일을 엽니다.
sudo -E rpi-eeprom-config --edit
부팅 순서 설정 시 BOOT_ORDER 값을 0xf41로 설정하여 SD 카드를 우선 부팅 장치로 지정하고, NVMe를 두 번째로 설정하는 것도 고려해 볼 수 있습니다. 이렇게 하면 NVMe 부팅에 문제가 발생했을 때 SD 카드로 부팅하여 문제를 해결할 수 있습니다. - sudo -E rpi-eeprom-config --edit 명령어를 실행할 때 "ERROR: rpi-eeprom-update -b timeout"이라는 오류 메시지
flashrom 패키지 설치 확인:
rpi-eeprom-config 도구는 flashrom 패키지에 의존합니다. flashrom이 설치되어 있지 않으면 오류가 발생할 수 있습니다. 터미널에서 다음 명령어를 실행하여 flashrom이 설치되어 있는지 확인하고, 설치되어 있지 않다면 설치해 보세요.
설치 후, rpi-eeprom-config --edit 명령어를 다시 시도해 보세요.sudo apt update sudo apt install flashrom
- 부트로더 업데이트: 최신 부트로더를 사용해야 NVMe 부팅이 가능합니다. SD 카드를 통해 라즈베리파이를 부팅한 후, 터미널에서 다음 명령어를 실행하여 부트로더를 업데이트하세요.
- PCIe 포트 활성화: NVMe와 통신할 수 있게 허용해 줍니다.
- /boot/config.txt 파일을 편집하여 PCIe 포트를 활성화해야 합니다. 다음 명령어를 실행하여 파일을 엽니다.
sudo nano /boot/firmware/config.txt
- 파일의 마지막에 다음 줄을 추가하여 PCIe 포트를 활성화합니다.
dtparam=pciex1
- /boot/config.txt 파일을 편집하여 PCIe 포트를 활성화해야 합니다. 다음 명령어를 실행하여 파일을 엽니다.
- 라즈베리파이의 현재 시스템을 NVMe SSD로 복사하기: NVMe에 부트 미디어를 복사합니다.
- 디스크 식별:
- 터미널에서 lsblk 명령어를 실행하여 연결된 디스크와 파티션을 확인합니다.
lsblk
- 출력 결과에서 NVMe SSD의 디바이스 이름을 확인합니다. 일반적으로 /dev/nvme0n1과 같은 형식입니다.
- 터미널에서 lsblk 명령어를 실행하여 연결된 디스크와 파티션을 확인합니다.
- 디스크 복사:
- dd 명령어를 사용하여 SD 카드의 내용을 NVMe SSD로 복사합니다. 이때, if는 입력 파일(현재 SD 카드), of는 출력 파일(NVMe SSD)을 의미합니다.
sudo dd if=/dev/mmcblk0 of=/dev/nvme0n1 bs=4M status=progress
- 이 명령어는 SD 카드의 모든 데이터를 NVMe SSD로 복사합니다. 복사 시간은 SD 카드와 NVMe SSD의 속도에 따라 다를 수 있습니다.
- 노드 4번이 이 단계에서 ssd가 인식되지 않았습니다. 그런 경우에 대해서는 추가로 설명하는 글을 쓸 예정입니다.
- dd 명령어를 사용하여 SD 카드의 내용을 NVMe SSD로 복사합니다. 이때, if는 입력 파일(현재 SD 카드), of는 출력 파일(NVMe SSD)을 의미합니다.
- 파일 시스템 점검 및 복구:
- e2fsck 명령어를 사용하여 NVMe SSD의 두 번째 파티션(/dev/nvme0n1p2)을 점검하고 복구합니다.
sudo e2fsck -f /dev/nvme0n1p2
- -f 옵션은 파일 시스템이 깨끗하더라도 강제로 점검을 수행합니다. 이 과정에서 발견된 오류는 수정되며, 사용자에게 수정 여부를 묻는 메시지가 나타날 수 있습니다. 모든 프롬프트에 자동으로 'yes'라고 응답하려면 -y 옵션을 추가할 수 있습니다.
sudo e2fsck -f -y /dev/nvme0n1p2
- 주의: 파일 시스템 점검 및 복구 작업은 데이터 손실의 위험이 있으므로, 중요한 데이터는 사전에 백업하시기 바랍니다.
- e2fsck 명령어를 사용하여 NVMe SSD의 두 번째 파티션(/dev/nvme0n1p2)을 점검하고 복구합니다.
- 파일 시스템 크기 조정: 파일 시스템 점검이 완료되면, resize2fs 명령어를 사용하여 파일 시스템의 크기를 조정합니다.
sudo resize2fs /dev/nvme0n1p2
- 이 명령어는 파티션의 크기에 맞게 파일 시스템을 확장합니다. 만약 특정 크기로 조정하려면, 크기를 명시적으로 지정할 수 있습니다. 예를 들어, 100GB로 설정하려면 아래와 같이 입력합니다.
추가 참고 사항: e2fsck 및 resize2fs 명령어는 마운트되지 않은(unmounted) 상태의 파일 시스템에서 실행하는 것이 권장됩니다. 마운트된 상태에서 실행하면 데이터 손상이나 시스템 불안정이 발생할 수 있습니다. 따라서 해당 파티션을 사용 중인 경우, 가능한 한 언마운트한 후 진행하시기 바랍니다. 만약 루트 파일 시스템 등 언마운트할 수 없는 파티션이라면, 시스템을 복구 모드로 부팅하거나 라이브 USB를 사용하여 부팅한 후 해당 작업을 수행하는 것이 좋습니다. 위 내용은 저의 경우엔 동작하지 않아서 추후 SSD부팅해서 raspi-config에서 아래와 같이 확장했습니다.sudo resize2fs /dev/nvme0n1p2 100G
- 디스크 식별:
- NVMe SSD의 부트 파티션에 있는 /boot/firmware/cmdline.txt 파일 수정:SD카드용 설정을 NVMe기준으로 변경
- NVMe SSD의 부트 파티션 마운트
- 먼저, NVMe SSD의 첫 번째 파티션을 임시 디렉토리에 마운트합니다.
sudo mkdir -p /mnt/nvme_boot sudo mount /dev/nvme0n1p1 /mnt/nvme_boot
- 이제 NVMe SSD의 부트 파티션이 /mnt/nvme_boot 디렉토리에 마운트되었습니다.
- PARTUUID 확인
- blkid 명령어를 사용하여 NVMe SSD의 루트 파티션의 PARTUUID를 확인합니다.
sudo blkid /dev/nvme0n1p2
- 출력 결과에서 PARTUUID="xxxx-xxxx" 형식의 값을 확인하고, 앞서 편집한 cmdline.txt 파일의
root=PARTUUID=...
부분에 이 값을 입력합니다.
- cmdline.txt 파일 수정
- 마운트한 디렉토리에서 cmdline.txt 파일을 편집합니다.
sudo nano /mnt/nvme_boot/cmdline.txt
- 파일 내에서
root=PARTUUID=...
부분을 찾아, NVMe SSD의 루트 파티션(nvme0n1p2)에 해당하는 PARTUUID로 변경합니다.
- 변경 사항 저장 및 마운트 해제
- cmdline.txt 파일을 저장하고 편집기를 종료한 후, NVMe SSD의 부트 파티션을 마운트 해제합니다.
이러한 과정을 통해 NVMe SSD의 부트 파티션에 있는 cmdline.txt 파일을 올바르게 수정하여, 시스템이 NVMe SSD에서 부팅되도록 설정할 수 있습니다.sudo umount /mnt/nvme_boot
- 재부팅 및 확인
- 모든 과정이 완료되면 라즈베리파이를 재부팅합니다.
sudo reboot
- 재부팅 후
lsblk
명령어를 실행하여 시스템이 NVMe SSD에서 부팅되었는지 확인합니다.
- NVMe SSD의 부트 파티션 마운트
주의사항
- dd 명령어 사용 시 디바이스 이름을 정확하게 지정하지 않으면 데이터 손실이 발생할 수 있으므로 주의하시기 바랍니다.
- 중요한 데이터는 사전에 백업해 두는 것을 권장합니다.
'Tech > Physical Computing' 카테고리의 다른 글
YDLIDAR X4PRO 뷰어로 보는 법 (0) | 2025.02.26 |
---|---|
RISC(축소 명령어 집합 컴퓨터) (0) | 2025.02.22 |
RPI5 클러스터 근황과 공유하고 싶은 해결 과정 정리 (0) | 2025.02.16 |
RPI5 8G ubuntu 24.04 LTS Desktop install ISSUE -우분투 설치 오류 및 해결 방법 정리 (0) | 2025.02.08 |
클러스터를 만들 겁니다.JPG (0) | 2024.03.14 |