Skip to content

Instantly share code, notes, and snippets.

@orimanabu
Created August 1, 2020 06:39
Show Gist options
  • Save orimanabu/244ae677b55b4536735fbf906c9664cb to your computer and use it in GitHub Desktop.
Save orimanabu/244ae677b55b4536735fbf906c9664cb to your computer and use it in GitHub Desktop.
Mount luks_root partition in RHCOS qcow2 image
#!/bin/bash
if [ x"$#" != x"2" ]; then
echo "$0 image mountpoint"
exit 1
fi
image=$1; shift
mountpoint=$1; shift
nbd=/dev/nbd0
LUKS_HEADER_OFFSET_SECTORS=32768
echo "=> qcow2-nbd --connect"
qemu-nbd --connect ${nbd} ${image}
echo "=> lsblk"
lsblk ${nbd}
echo "=> parted"
parted ${nbd} print
part_id=$(parted /dev/nbd0 print | awk '/luks_root/ {print $1}')
dev=${nbd}p${part_id}
echo "=> cryptsetup luksDump ${dev}"
cryptsetup luksDump ${dev}
cipher=$(cryptsetup luksDump ${dev} | awk '/cipher/{print$NF;exit}')
echo "* cipher: ${cipher}"
dev_size=$(($(blockdev --getsize ${dev}) - ${LUKS_HEADER_OFFSET_SECTORS}))
echo "* dev_size: ${dev_size}"
echo "0 ${dev_size} linear ${dev} ${LUKS_HEADER_OFFSET_SECTORS}" | sudo dmsetup create coreos-luks-root-nocrypt
echo "=> ls -l /dev/mapper"
ls -l /dev/mapper
echo "=> mount"
mount /dev/mapper/coreos-luks-root-nocrypt ${mountpoint}
echo "=> df"
df -h
## for unmount...
# umount /mnt
# dmsetup remove coreos-luks-root-nocrypt
# qemu-nbd --disconnect ${nbd}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment