[make-initrd] Загрузка с USB

Alexey Gladkov legion at kernel.org
Mon Jul 28 16:45:23 MSK 2025


On Mon, Jul 28, 2025 at 02:38:17PM +0300, Anton Midyukov wrote:
> 28.07.2025 14:31, Vladimir Mokrozub пишет:
> > Здравствуйте,
> > 
> > есть Альт Линукс, установленный на SATA SSD. Задача: настроить загрузку с этого диска через внешний бокс SATA -> USB.
> > 
> > Я добавил фичи usb и usb-storage, пересобрал initrd, но при загрузке initrd падает в шелл. В dmesg вижу такие ошибки:
> > 
> > uas: Unknown symbol usb_stor_sense_invalidCDB (err -2)
> > uas: Unknown symbol usb_stor_adjust_quirks (err -2)
> > 
> > В Интернете ничего вразумительного по этим ошибкам не нашел.
> > 
> 
> Такого набора должно быть достаточно, чтобы загрузить с любого usb:
> 
> MODULES_TRY_ADD += kernel/drivers/scsi/sd_mod.ko
> MODULES_TRY_ADD += kernel/drivers/usb/core
> MODULES_TRY_ADD += kernel/drivers/usb/dwc2
> MODULES_TRY_ADD += kernel/drivers/usb/dwc3
> MODULES_TRY_ADD += kernel/drivers/usb/host
> MODULES_TRY_ADD += kernel/drivers/usb/phy
> MODULES_TRY_ADD += kernel/drivers/usb/storage

Вообще, это интересно. Фича usb пробует добавить uas и usb-storage. 

$ git grep --show-function -w usb_stor_adjust_quirks
drivers/usb/storage/uas-detect.h=55=static int uas_use_uas_driver(struct usb_interface *intf,
drivers/usb/storage/uas-detect.h:132:   usb_stor_adjust_quirks(udev, &flags);
drivers/usb/storage/usb.c=522=static int associate_dev(struct us_data *us, struct usb_interface *intf)
drivers/usb/storage/usb.c:557:void usb_stor_adjust_quirks(struct usb_device *udev, u64 *fflags)
drivers/usb/storage/usb.c:667:EXPORT_SYMBOL_GPL(usb_stor_adjust_quirks);
drivers/usb/storage/usb.c=670=static int get_device_info(struct us_data *us, const struct usb_device_id *id,
drivers/usb/storage/usb.c:687:  usb_stor_adjust_quirks(us->pusb_dev, &us->fflags);
drivers/usb/storage/usb.h=192=extern void usb_stor_disconnect(struct usb_interface *intf);
drivers/usb/storage/usb.h:194:extern void usb_stor_adjust_quirks(struct usb_device *dev,

$ git grep -w uas_use_uas_driver
drivers/usb/storage/uas-detect.h:55:static int uas_use_uas_driver(struct usb_interface *intf,
drivers/usb/storage/uas.c:1005: if (!uas_use_uas_driver(intf, id, &dev_flags))
drivers/usb/storage/usb.c:1204: if (uas_use_uas_driver(intf, id, NULL))

$ git grep -F usb.o drivers/usb/storage/Makefile
drivers/usb/storage/Makefile:16:usb-storage-y := scsiglue.o protocol.o transport.o usb.o

Ну то есть usb_stor_adjust_quirks() находится в usb-storage.

Думаю, что стоит спросить, а действительно ли попали ли эти модули
в образ.

-- 
Rgrds, legion



More information about the Make-initrd mailing list