我不得不从备份中恢复损坏的文件系统,现在它无法加载很多模块
lsmod 之前:
Module Size Used by
ses 6715 0
enclosure 8649 1 ses
xt_multiport 2794 1
iptable_filter 2791 1
ip_tables 18390 1 iptable_filter
x_tables 22461 2 xt_multiport,ip_tables
nls_iso8859_1 4633 0
nls_cp437 6351 0
vfat 10866 0
fat 55350 1 vfat
usb_storage 50633 1
act_police 4620 1
sch_ingress 2098 1
cls_u32 6698 5
sch_sfq 5863 3
sch_cbq 17140 1
snd_hda_codec_realtek 279072 1
snd_hda_intel 25805 0
ppdev 6375 0
snd_hda_codec 85759 2 snd_hda_codec_realtek,snd_hda_intel
fbcon 39270 71
tileblit 2487 1 fbcon
font 8053 1 fbcon
bitblit 5811 1 fbcon
softcursor 1565 1 bitblit
parport_pc 29958 1
snd_hwdep 6924 1 snd_hda_codec
serio_raw 4918 0
snd_pcm 87946 2 snd_hda_intel,snd_hda_codec
snd_timer 23681 1 snd_pcm
vga16fb 12757 1
lp 9336 0
vgastate 9857 1 vga16fb
parport 37160 3 ppdev,parport_pc,lp
snd 71283 6 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
soundcore 8052 1 snd
snd_page_alloc 8500 2 snd_hda_intel,snd_pcm
raid10 21450 0
raid456 54752 0
async_pq 3891 1 raid456
async_xor 3111 2 raid456,async_pq
xor 4685 1 async_xor
async_memcpy 1537 1 raid456
async_raid6_recov 1816 1 raid456
raid6_pq 80147 2 async_pq,async_raid6_recov
async_tx 2545 5 raid456,async_pq,async_xor,async_memcpy,async_raid6_recov
raid1 22610 1
raid0 6778 0
multipath 7181 0
linear 4126 0
r8169 39714 0
mii 5237 1 r8169
ahci 38350 4
lsmod 之后:
Module Size Used by
raid456 54720 0
async_pq 3891 1 raid456
async_xor 3111 2 raid456,async_pq
xor 4685 1 async_xor
async_memcpy 1537 1 raid456
async_raid6_recov 1816 1 raid456
8139too 22245 0
raid10 21450 1
usbhid 41116 0
hid 83888 1 usbhid
8139cp 19541 0
e1000 109015 0
raid6_pq 80147 2 async_pq,async_raid6_recov
async_tx 2545 5 raid456,async_pq,async_xor,async_memcpy,async_raid6_recov
r8169 39714 0
mii 5237 3 8139too,8139cp,r8169
raid1 22610 1
raid0 6778 0
multipath 7181 0
linear 4126 0
我是从另一台服务器进行备份的,并且它有一个不同的 raid 设置,所以我必须执行 update-initramfs 和 grub-update,所以这可能与它有关
我备份的服务器仍在运行
我该如何恢复这些模块?最好不要重启。
答案1
我认为许多模块都是按需加载的,因此一旦您在恢复的服务器上启动服务,您就会看到更多模块正在使用中。但是有些模块需要您安装相关的软件包。
同步已安装软件包的快速方法是从旧机器导出所有软件包的列表,如下所示;
$ dpkg --get-selections | cut -f1 > /tmp/package-list
然后按照本教程
关于模块列表中的差异;例如,我在一个列表中看到模块,soundcore
但在其他列表中没有看到,因此尝试在恢复的服务器上查询模块信息以检查在需要时是否可用,如下所示;
# modinfo soundcore
filename: /lib/modules/3.3.1-5.fc16.x86_64/kernel/sound/soundcore.ko
alias: char-major-14-*
license: GPL
author: Alan Cox
description: Core sound module
depends:
intree: Y
vermagic: 3.3.1-5.fc16.x86_64 SMP mod_unload
parm: preclaim_oss:int
一旦您有了模块文件名,从上面的详细信息中,您就可以看到需要安装哪个包来提供它,例如模块fbcon
;
$ modinfo fbcon
filename: /lib/modules/2.6.32-38-generic/kernel/drivers/video/console/fbcon.ko
license: GPL
srcversion: 65B645FD36D989F537E4715
depends: bitblit,font,tileblit
vermagic: 2.6.32-38-generic SMP mod_unload modversions
由包提供linux-image
;
$ dpkg -S /lib/modules/2.6.32-37-generic/kernel/drivers/video/console/fbcon.ko
linux-image-2.6.32-37-generic: /lib/modules/2.6.32-37-generic/kernel/drivers/video/console/fbcon.ko