
Я случайно перезаписал /lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko в Ubuntu 14.04. Как мне это вернуть?
решение1
Просто переустановите пакет, содержащий файл.
Чтобы узнать, что содержит пакет /lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko
, выполните:
dpkg -S /lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko
Это должно вывести (в вашем случае):
linux-image-4.4.0-116-generic: /lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko
Просто переустановите пакет:
sudo apt-get install --reinstall linux-image-4.4.0-116-generic
Если это не помогло:
sudo apt-get purge linux-image-4.4.0-116-generic
sudo apt-get install linux-image-4.4.0-116-generic
решение2
Поскольку установка, похоже, не помогает, я думаю, вы можете попробовать вручную загрузить ядро, извлечь файлы, а затем вручную скопировать файл.
Загрузите ядро в /tmp
каталог:
cd /tmp
apt download linux-image-extra-4.4.0-116-generic
Далее извлеките файлы из загруженного .deb
архива:
ar -x linux-image-extra-4.4.0-116-generic_4.4.0-116.140_amd64.deb
Теперь извлеките data.tar.gz
содержимое:
tar xvf data.tar.gz
Теперь вы сможете скопировать отсутствующий файл обратно в свою папку.
sudo cp /tmp/lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko /lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/
Спасибо @Olorin за классную однострочную команду, которая позволяет dpkg-deb
извлечь один файл после загрузки файла ядра и поместить его в папку назначения:
dpkg-deb --fsys-tarfile linux-image-extra-4.4.0-116-generic_4.4.0-116.140_amd64.deb | sudo tar xv ./lib/modules/4.4.0-116-generic/kernel/drivers/usb/serial/usbserial.ko -C /
Затем очистите /tmp
папку, или перезагрузка очистит ее:
Надеюсь это поможет!