私のRaspberryPi(現在私から10,000 km離れています)は次のように機能します。
/boot
が含まれていますcryptsetup
を使用)には/
が含まれていますdropbear
を使用してリモートでHDDのロックを解除できます。 HDDのパスワードを要求すると、起動シーケンスは正常に続行されます。私がこれらすべてをどのように行ったかについての詳細は、 http://blog.romainpellerin.eu/raspberry-pi-the-ultimate-guide.html をお読みください。
TL; DRここに短縮バージョンがあります:
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
を微調整することで修正できると確信していますが、方法がわかりません。手伝ってくれませんか。どうもありがとうございました。
aptitude upgrade
がカーネルに影響を与えないという印象を与えた理由はわかりませんが、単にそうではありません。暗号化されたpiのカーネルを更新した後、同じ問題が発生しました。問題は、initramfsを再構築する必要があることです。これが外部マシンでそれを行う方法です。
まず、暗号化されたラズビアンが入った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
Qemuをインストールして、RaspberryPiバイナリをエミュレートします。
apt-get install qemu qemu-user-static binfmt-support
this Gist に従って、続行する前に/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}
chroot
内の/lib/modules
をチェックすると、新しいラズビアンカーネルバージョンを見つけることができます。
それを行った後、私のRaspberryPiは再び正常に起動しました。