내 Raspberry Pi(현재 나로부터 10,000km 떨어져 있음)가 작동하는 방식은 다음과 같습니다.
- Raspbian(2016년 7월 버전)을 실행 중입니다.
- SD 카드에는 다음이 포함됩니다.
/boot
- 암호화된 하드 드라이브(LUKS 사용
cryptsetup
)에는 다음이 포함됩니다./
- Pi가 부팅되면 SSH를 통해 원격으로 HDD의 잠금을 해제할 수 있습니다
dropbear
. HDD의 비밀번호를 묻는 메시지가 나타나면 부팅 순서가 정상적으로 계속됩니다.
이 모든 것을 어떻게 달성했는지에 대한 자세한 내용은 다음을 읽어보세요.http://blog.romainpellerin.eu/raspberry-pi-the-ultimate-guide.html.
긴 이야기 짧게단축 버전은 다음과 같습니다.
apt-get install busybox cryptsetup rsync
echo "initramfs initramfs.gz 0x00f00000" >> /boot/config.txt
sed -e "s|root=/dev/mmcblk0p2|root=/dev/mapper/hddcrypt cryptdevice=/dev/sda1:hddcrypt|" -i /boot/cmdline.txt
sed -e "s|/dev/mmcblk0p2|/dev/mapper/hddcrypt|" -i /etc/fstab
echo -e "hddcrypt\t/dev/sda1\tnone\tluks" >> /etc/crypttab
cryptsetup --verify-passphrase -c aes-xts-plain64 -s 512 -h sha256 luksFormat /dev/sda1
mkinitramfs -o /boot/initramfs.gz $(uname -r)
aptitude install dropbear
// Configuring the SSH access here...
mkinitramfs -o /boot/initramfs.gz $(uname -r)
update-initramfs -u
질문
어제까지는 모든 것이 잘 돌아가고 있었습니다. 재부팅하고 SSH를 통해 HDD의 잠금을 해제할 수 있습니다. 그러나 어제 나는 그것을 했다 aptitude update && aptitude upgrade
. 내가 아는 한 이것은 커널을 업그레이드하지 않습니다. 아무튼 다시 시작했습니다. 이제 잠금 해제 단계에서 막혔습니다. 올바른 비밀번호를 입력했는데도 바로 나타나서 Can't change directory to <something/a kernel version>
비밀번호 Cannot initialize device-mapper. Is dm_mod kernel module loaded?
를 다시 물어보네요.
얼마 전에 설정했고 자주 사용하지 않았기 때문에 어떤 코어가 실행되고 있는지 말할 수 없습니다.
자세한 내용이 부족해서 죄송합니다. 라즈베리에 물리적으로 접근할 수 없고 어제 꺼두었기 때문에 기억을 통해 말씀드립니다.
가설
조정을 통해 문제를 해결할 수 있다고 확신 /boot/initramfs.gz
하지만 방법을 모르겠습니다. 도와주세요? 매우 감사합니다.
답변1
핵심이 동일하게 유지되어야 한다는 인상을 주는 이유가 무엇인지 모르겠습니다 aptitude upgrade
. 사실은 그렇지 않습니다. 내 암호화 파이에서 커널을 업데이트한 후에도 동일한 문제가 발생했습니다. 문제는 initramfs를 다시 빌드해야 한다는 것입니다. 외부 컴퓨터에서 이를 수행하는 방법은 다음과 같습니다.
먼저 암호화된 Raspbian이 포함된 SD 카드를 외부 컴퓨터에 삽입하고 다음과 같이 모든 것을 설치합니다.
cryptsetup -v luksOpen /dev/mmcblk0p2 thunderdome
mount /dev/mapper/thunderdome /mnt
mount /dev/mmcblk0p1 /mnt/boot
mount -o bind /dev /mnt/dev
mount -t sysfs none /mnt/sys
mount -t proc none /mnt/proc
Raspberry Pi 바이너리를 에뮬레이트하려면 qemu를 설치하세요.
apt-get install qemu qemu-user-static binfmt-support
~에 따르면이 점/mnt/etc/ld.so.preload
, 계속하기 전에 모든 줄을 삭제하는 것이 가장 좋습니다 . 이는 sed
다음 명령이 수행하는 작업입니다.
# comment out ld.so.preload
sed -i 's/^/#/g' /mnt/etc/ld.so.preload
# copy qemu binary
cp /usr/bin/qemu-arm-static /mnt/usr/bin/
# chroot to raspbian and rebuild initramfs
chroot /mnt /bin/bash
mkinitramfs -o /boot/initramfs.gz [NEW RASPBIAN KERNEL VERSION]
exit
# undo damage
sed -i 's/^#//g' /mnt/etc/ld.so.preload
umount /mnt/{dev,sys,proc,boot}
/lib/modules
에서 이 작업을 수행할 수 있습니다 chroot
.
이 작업을 수행한 후 Raspberry Pi가 다시 정상적으로 시작되었습니다.