Jorge E. Moreira | a8142f9 | 2018-06-13 17:33:55 -0700 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | # |
| 4 | # Copyright (C) 2018 The Android Open Source Project |
| 5 | # |
| 6 | # Licensed under the Apache License, Version 2.0 (the "License"); |
| 7 | # you may not use this file except in compliance with the License. |
| 8 | # You may obtain a copy of the License at |
| 9 | # |
| 10 | # http://www.apache.org/licenses/LICENSE-2.0 |
| 11 | # |
| 12 | # Unless required by applicable law or agreed to in writing, software |
| 13 | # distributed under the License is distributed on an "AS IS" BASIS, |
| 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 15 | # See the License for the specific language governing permissions and |
| 16 | # limitations under the License. |
| 17 | # |
| 18 | |
| 19 | default_instance_number() { |
| 20 | if [[ "${USER::5}" == "vsoc-" ]]; then |
| 21 | echo "${USER: -2}" |
| 22 | else |
| 23 | echo "01" |
| 24 | fi |
| 25 | } |
| 26 | CUTTLEFISH_INSTANCE="${CUTTLEFISH_INSTANCE:-$(default_instance_number)}" |
| 27 | default_instance_name="cvd-${CUTTLEFISH_INSTANCE}" |
| 28 | default_uuid="699acfc4-c8c4-11e7-882b-5065f31dc1${CUTTLEFISH_INSTANCE}" |
| 29 | default_dir="${HOME}/runfiles" |
| 30 | default_mobile_tap_name="cvd-mtap-${CUTTLEFISH_INSTANCE}" |
| 31 | |
| 32 | if [[ -z "${ivshmem_vector_count}" ]]; then |
| 33 | echo "The required ivshmem_vector_count environment variable is not set" >&2 |
| 34 | exit 1 |
| 35 | fi |
| 36 | |
| 37 | exec "${qemu_binary=/usr/bin/qemu-system-x86_64}" \ |
| 38 | -enable-kvm \ |
| 39 | -name "guest=${instance_name=${default_instance_name}},debug-threads=on" \ |
| 40 | -machine "pc-i440fx-2.8,accel=kvm,usb=off,dump-guest-core=off" \ |
| 41 | -m "${memory_mb=2048}" \ |
| 42 | -realtime mlock=off \ |
| 43 | -smp "${cpus=2},sockets=${cpus=2},cores=1,threads=1" \ |
| 44 | -uuid "${uuid=${default_uuid}}"\ |
| 45 | -display none \ |
| 46 | -no-user-config \ |
| 47 | -nodefaults \ |
| 48 | -chardev "socket,id=charmonitor,path=${monitor_path=${default_dir}/qemu_monitor.sock},server,nowait" \ |
| 49 | -mon "chardev=charmonitor,id=monitor,mode=control" \ |
| 50 | -rtc "base=utc" \ |
| 51 | -no-shutdown \ |
| 52 | -boot "strict=on" \ |
| 53 | -kernel "${kernel_image_path=${HOME}/kernel}" \ |
| 54 | -initrd "${ramdisk_image_path=${HOME}/ramdisk.img}" \ |
| 55 | -append "${kernel_args="loop.max_part=7 console=ttyS0 androidboot.console=ttyS1 androidboot.hardware=vsoc enforcing=0 audit=1 androidboot.selinux=permissive mac80211_hwsim.radios=0 security=selinux buildvariant=userdebug androidboot.serialno=CUTTLEFISHCVD01 androidboot.lcd_density=160"}" \ |
| 56 | -dtb "${dtb_path=${HOME}/config/cuttlefish.dtb}" \ |
| 57 | -device "piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2" \ |
| 58 | -device "virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3" \ |
| 59 | -drive "file=${system_image_path=${HOME}/system.img},format=raw,if=none,id=drive-virtio-disk0,aio=threads" \ |
| 60 | -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1" \ |
| 61 | -drive "file=${data_image_path=${HOME}/userdata.img},format=raw,if=none,id=drive-virtio-disk1,aio=threads" \ |
| 62 | -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk1,id=virtio-disk1" \ |
| 63 | -drive "file=${cache_image_path=${HOME}/cache.img},format=raw,if=none,id=drive-virtio-disk2,aio=threads" \ |
| 64 | -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk2,id=virtio-disk2" \ |
| 65 | -drive "file=${vendor_image_path=${HOME}/vendor.img},format=raw,if=none,id=drive-virtio-disk3,aio=threads" \ |
| 66 | -device "virtio-blk-pci,scsi=off,bus=pci.0,addr=0x7,drive=drive-virtio-disk3,id=virtio-disk3" \ |
| 67 | -netdev "tap,id=hostnet0,ifname=${mobile_tap_name=${default_mobile_tap_name}},script=no,downscript=no" \ |
Jorge E. Moreira | 576ce9e | 2018-06-20 16:42:03 -0700 | [diff] [blame] | 68 | -device "virtio-net-pci,netdev=hostnet0,id=net0,bus=pci.0,addr=0x2" \ |
Jorge E. Moreira | a8142f9 | 2018-06-13 17:33:55 -0700 | [diff] [blame] | 69 | -chardev "socket,id=charserial0,path=${kernel_log_socket_name=${default_dir}/kernel-log}" \ |
| 70 | -device "isa-serial,chardev=charserial0,id=serial0" \ |
| 71 | -chardev "socket,id=charserial1,path=${console_path=${default_dir}/console},server,nowait" \ |
| 72 | -device "isa-serial,chardev=charserial1,id=serial1" \ |
| 73 | -chardev "file,id=charchannel0,path=${logcat_path=${default_dir}/logcat},append=on" \ |
| 74 | -device "virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=cf-logcat" \ |
| 75 | -device "virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x8" \ |
| 76 | -object "rng-random,id=objrng0,filename=/dev/urandom" \ |
| 77 | -device "virtio-rng-pci,rng=objrng0,id=rng0,max-bytes=1024,period=2000,bus=pci.0,addr=0x9" \ |
| 78 | -chardev "socket,path=${ivshmem_qemu_socket_path=${default_dir}/ivshmem_socket_qemu},id=ivsocket" \ |
| 79 | -device "ivshmem-doorbell,chardev=ivsocket,vectors=${ivshmem_vector_count}" \ |
| 80 | -cpu host \ |
| 81 | -msg "timestamp=on" |