diff --git a/kvmapp/system/init.d/S03usbdev b/kvmapp/system/init.d/S03usbdev index 3536cf5..f6cd9cf 100755 --- a/kvmapp/system/init.d/S03usbdev +++ b/kvmapp/system/init.d/S03usbdev @@ -104,6 +104,7 @@ start_usb_dev(){ echo 1 > functions/mass_storage.disk0/lun.0/ro echo 0 > functions/mass_storage.disk0/lun.0/cdrom fi + echo "NanoKVM USB Mass Storage0520" > functions/mass_storage.disk0/lun.0/inquiry_string disk=$(cat /boot/usb.disk0) if [ -z "${disk}" ] then diff --git a/server/service/storage/image.go b/server/service/storage/image.go index 63360ed..d25b309 100644 --- a/server/service/storage/image.go +++ b/server/service/storage/image.go @@ -1,6 +1,7 @@ package storage import ( + "fmt" "os" "os/exec" "path/filepath" @@ -19,6 +20,7 @@ const ( imageNone = "/dev/mmcblk0p3" cdromFlag = "/sys/kernel/config/usb_gadget/g0/functions/mass_storage.disk0/lun.0/cdrom" mountDevice = "/sys/kernel/config/usb_gadget/g0/functions/mass_storage.disk0/lun.0/file" + inquiryString = "/sys/kernel/config/usb_gadget/g0/functions/mass_storage.disk0/lun.0/inquiry_string" roFlag = "/sys/kernel/config/usb_gadget/g0/functions/mass_storage.disk0/lun.0/ro" ) @@ -91,6 +93,20 @@ func (s *Service) MountImage(c *gin.Context) { } } + inquiryVen := "NanoKVM" + inquiryPrd := "USB Mass Storage" + inquiryVer := 0x0520 + if req.Cdrom { + inquiryPrd = "USB CD/DVD-ROM" + } + inquiryData := fmt.Sprintf("%-8s%-16s%04x", inquiryVen, inquiryPrd, inquiryVer) + + if err := os.WriteFile(inquiryString, []byte(inquiryData), 0o666); err != nil { + log.Errorf("set inquiry %s failed: %s", inquiryData, err) + rsp.ErrRsp(c, -2, "set inquiry failed") + return + } + // mount image := req.File if image == "" {