diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-09-07 19:04:47 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-09-07 19:04:47 +0200 |
| commit | 6b5120a46407f0462e664e15fed3eae5da951c75 (patch) | |
| tree | 07645ed5e18bd92595684b272ccf3c07b5e01649 /pkg/build/linux_generated.go | |
| parent | be20da425029ecd45b18e99fa5f09691ba0658ea (diff) | |
tools/create-gce-image.sh: auto-detect block device type
Currently we choose block device to use (nbd/loop) based on SYZ_VM_TYPE.
Strictly saying these things are orthogonal.
losetup is broken on Ubuntu. qemu-nbd is broken on Debian.
Try to auto-detect what will work based on uname.
Diffstat (limited to 'pkg/build/linux_generated.go')
| -rw-r--r-- | pkg/build/linux_generated.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/pkg/build/linux_generated.go b/pkg/build/linux_generated.go index 14df94954..28e9355e1 100644 --- a/pkg/build/linux_generated.go +++ b/pkg/build/linux_generated.go @@ -30,20 +30,25 @@ else exit 1 fi +BLOCK_DEVICE="loop" +if [ "$(uname -a | grep Ubuntu)" != "" ]; then + BLOCK_DEVICE="nbd" +fi + sudo umount disk.mnt || true -if [ "$SYZ_VM_TYPE" == "qemu" ]; then +if [ "$BLOCK_DEVICE" == "loop" ]; then : -elif [ "$SYZ_VM_TYPE" == "gce" ]; then +elif [ "$BLOCK_DEVICE" == "nbd" ]; then sudo modprobe nbd sudo qemu-nbd -d /dev/nbd0 || true fi rm -rf disk.mnt disk.raw || true fallocate -l 2G disk.raw -if [ "$SYZ_VM_TYPE" == "qemu" ]; then +if [ "$BLOCK_DEVICE" == "loop" ]; then DISKDEV="$(sudo losetup -f --show -P disk.raw)" CLEANUP="sudo losetup -d $DISKDEV; $CLEANUP" -elif [ "$SYZ_VM_TYPE" == "gce" ]; then +elif [ "$BLOCK_DEVICE" == "nbd" ]; then DISKDEV="/dev/nbd0" sudo qemu-nbd -c $DISKDEV --format=raw disk.raw CLEANUP="sudo qemu-nbd -d $DISKDEV; $CLEANUP" |
