1*bb4ee6a4SAndroid Build Coastguard Worker# SCSI (experimental) 2*bb4ee6a4SAndroid Build Coastguard Worker 3*bb4ee6a4SAndroid Build Coastguard Workercrosvm supports 4*bb4ee6a4SAndroid Build Coastguard Worker[virtio-scsi](https://docs.oasis-open.org/virtio/virtio/v1.2/csd01/virtio-v1.2-csd01.html#x1-3430006) 5*bb4ee6a4SAndroid Build Coastguard Workerdevices that work as block devices for the guest. 6*bb4ee6a4SAndroid Build Coastguard Worker 7*bb4ee6a4SAndroid Build Coastguard WorkerThe step for setting up a block device is similar to the virtio-blk device. After setting up the 8*bb4ee6a4SAndroid Build Coastguard Workerblock device, pass it with `--scsi-block` flag so the disk will be exposed as `/dev/sda`, 9*bb4ee6a4SAndroid Build Coastguard Worker`/dev/sdb`, etc. The device can be mounted with the `mount` command. 10*bb4ee6a4SAndroid Build Coastguard Worker 11*bb4ee6a4SAndroid Build Coastguard Worker```sh 12*bb4ee6a4SAndroid Build Coastguard Workercrosvm run \ 13*bb4ee6a4SAndroid Build Coastguard Worker --scsi-block disk.img 14*bb4ee6a4SAndroid Build Coastguard Worker ... # usual crosvm args 15*bb4ee6a4SAndroid Build Coastguard Worker``` 16*bb4ee6a4SAndroid Build Coastguard Worker 17*bb4ee6a4SAndroid Build Coastguard Worker## Flags & Options 18*bb4ee6a4SAndroid Build Coastguard Worker 19*bb4ee6a4SAndroid Build Coastguard WorkerThe `--scsi-block` parameter supports additional options and flags to enable features and control 20*bb4ee6a4SAndroid Build Coastguard Workerdisk parameters. 21*bb4ee6a4SAndroid Build Coastguard Worker 22*bb4ee6a4SAndroid Build Coastguard Worker### Read-only 23*bb4ee6a4SAndroid Build Coastguard Worker 24*bb4ee6a4SAndroid Build Coastguard WorkerTo expose the scsi device as a read-only disk, you can add the `ro` flag after the disk image path: 25*bb4ee6a4SAndroid Build Coastguard Worker 26*bb4ee6a4SAndroid Build Coastguard Worker```sh 27*bb4ee6a4SAndroid Build Coastguard Workercrosvm run \ 28*bb4ee6a4SAndroid Build Coastguard Worker --scsi-block disk.img,ro 29*bb4ee6a4SAndroid Build Coastguard Worker ... # usual crosvm args 30*bb4ee6a4SAndroid Build Coastguard Worker``` 31*bb4ee6a4SAndroid Build Coastguard Worker 32*bb4ee6a4SAndroid Build Coastguard Worker### Rootfs 33*bb4ee6a4SAndroid Build Coastguard Worker 34*bb4ee6a4SAndroid Build Coastguard WorkerIf you use a scsi device as guest's rootfs, you can add the `root` flag to the `--scsi-block` 35*bb4ee6a4SAndroid Build Coastguard Workerparameter: 36*bb4ee6a4SAndroid Build Coastguard Worker 37*bb4ee6a4SAndroid Build Coastguard Worker```sh 38*bb4ee6a4SAndroid Build Coastguard Workercrosvm run \ 39*bb4ee6a4SAndroid Build Coastguard Worker --scsi-block disk.img,root 40*bb4ee6a4SAndroid Build Coastguard Worker ... # usual crosvm args 41*bb4ee6a4SAndroid Build Coastguard Worker``` 42*bb4ee6a4SAndroid Build Coastguard Worker 43*bb4ee6a4SAndroid Build Coastguard WorkerThis flag automatically adds a `root=/dev/sdX` kernel parameter with the corresponding virtio-scsi 44*bb4ee6a4SAndroid Build Coastguard Workerdevice name and read-only (`ro`) or read-write (`rw`) option depending on whether the `ro` flag has 45*bb4ee6a4SAndroid Build Coastguard Workeralso been specified or not. 46*bb4ee6a4SAndroid Build Coastguard Worker 47*bb4ee6a4SAndroid Build Coastguard Worker### Block size 48*bb4ee6a4SAndroid Build Coastguard Worker 49*bb4ee6a4SAndroid Build Coastguard Worker- Syntax: `block_size=BYTES` 50*bb4ee6a4SAndroid Build Coastguard Worker- Default: `block_size=512` 51*bb4ee6a4SAndroid Build Coastguard Worker 52*bb4ee6a4SAndroid Build Coastguard WorkerThe `block_size` option overrides the reported block size (also known as sector size) of the 53*bb4ee6a4SAndroid Build Coastguard Workervirtio-scsi device. This should be a power of two larger than or equal to 512. 54