xref: /aosp_15_r20/external/crosvm/docs/book/src/devices/scsi.md (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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