linux – 如何使用mkinitrd将一个模块添加到initrd

前端之家收集整理的这篇文章主要介绍了linux – 如何使用mkinitrd将一个模块添加到initrd前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经将 Linux(Fedora)服务器系统从IDE驱动器克隆到SATA驱动器,但是它无法启动,在交换机根目录时失败.我在目标驱动器上做了一个干净的安装,并通过检查initrd文件了解到在SATA驱动器上安装fedora时它包含了ahci模块,当我在安装工作期间没有SATA驱动器时没有使用系统.

所以我想运行mkinitrd来构建新的initrd,和旧的一样,但添加ahci模块(可能作为预加载)

我做了太多的猜测,所以我想在这里提出这个问题:
什么是从现有的initrd构建新initrd的最简单方法,只需添加一个模块?

这是两个init文件的差异

  1. diff /media/disk/SATA_initrd/initrd/init /media/disk/PATA_initrd/initrd/init
  2. 50a51,52
  3. > echo "Loading crc-t10dif module"
  4. > modprobe -q crc-t10dif
  5. 57,60d58
  6. < echo "Loading ahci module"
  7. < modprobe -q ahci
  8. < echo Waiting for driver initialization.
  9. < stabilized --hash --interval 250 /proc/scsi/scsi
  10. 66a65,68
  11. > echo "Loading pata_amd module"
  12. > modprobe -q pata_amd
  13. > echo Waiting for driver initialization.
  14. > stabilized --hash --interval 250 /proc/scsi/scsi

和我要修改的initrd的init文件.

  1. #!/bin/nash
  2.  
  3. mount -t proc /proc /proc
  4. setquiet
  5. echo Mounting proc filesystem
  6. echo Mounting sysfs filesystem
  7. mount -t sysfs /sys /sys
  8. echo Creating /dev
  9. mount -o mode=0755 -t tmpfs /dev /dev
  10. mkdir /dev/pts
  11. mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
  12. mkdir /dev/shm
  13. mkdir /dev/mapper
  14. echo Creating initial device nodes
  15. mknod /dev/null c 1 3
  16. mknod /dev/zero c 1 5
  17. mknod /dev/systty c 4 0
  18. mknod /dev/tty c 5 0
  19. mknod /dev/console c 5 1
  20. mknod /dev/ptmx c 5 2
  21. mknod /dev/tty0 c 4 0
  22. mknod /dev/tty1 c 4 1
  23. mknod /dev/tty2 c 4 2
  24. mknod /dev/tty3 c 4 3
  25. mknod /dev/tty4 c 4 4
  26. mknod /dev/tty5 c 4 5
  27. mknod /dev/tty6 c 4 6
  28. mknod /dev/tty7 c 4 7
  29. mknod /dev/tty8 c 4 8
  30. mknod /dev/tty9 c 4 9
  31. mknod /dev/tty10 c 4 10
  32. mknod /dev/tty11 c 4 11
  33. mknod /dev/tty12 c 4 12
  34. mknod /dev/ttyS0 c 4 64
  35. mknod /dev/ttyS1 c 4 65
  36. mknod /dev/ttyS2 c 4 66
  37. mknod /dev/ttyS3 c 4 67
  38. echo Setting up hotplug.
  39. hotplug
  40. echo Creating block device nodes.
  41. mkblkdevs
  42. echo "Loading ehci-hcd module"
  43. modprobe -q ehci-hcd
  44. echo "Loading ohci-hcd module"
  45. modprobe -q ohci-hcd
  46. echo "Loading uhci-hcd module"
  47. modprobe -q uhci-hcd
  48. mount -t usbfs /proc/bus/usb /proc/bus/usb
  49. echo "Loading ext3 module"
  50. modprobe -q ext3
  51. echo "Loading crc-t10dif module"
  52. modprobe -q crc-t10dif
  53. echo "Loading scsi_mod module"
  54. modprobe -q scsi_mod
  55. echo "Loading sd_mod module"
  56. modprobe -q sd_mod
  57. echo "Loading libata module"
  58. modprobe -q libata
  59. echo "Loading ata_generic module"
  60. modprobe -q ata_generic
  61. echo "Loading pata_acpi module"
  62. modprobe -q pata_acpi
  63. echo Waiting for driver initialization.
  64. stabilized --hash --interval 250 /proc/scsi/scsi
  65. echo "Loading pata_amd module"
  66. modprobe -q pata_amd
  67. echo Waiting for driver initialization.
  68. stabilized --hash --interval 250 /proc/scsi/scsi
  69. echo "Loading dm-mod module"
  70. modprobe -q dm-mod
  71. echo "Loading dm-mirror module"
  72. modprobe -q dm-mirror
  73. echo "Loading dm-zero module"
  74. modprobe -q dm-zero
  75. echo "Loading dm-snapshot module"
  76. modprobe -q dm-snapshot
  77. echo Making device-mapper control node
  78. mkdmnod
  79. modprobe scsi_wait_scan
  80. rmmod scsi_wait_scan
  81. mkblkdevs
  82. echo Scanning logical volumes
  83. lvm vgscan --ignorelockingfailure
  84. echo Activating logical volumes
  85. lvm vgchange -ay --ignorelockingfailure VolGroup00
  86. resume /dev/VolGroup00/LogVol01
  87. echo Creating root device.
  88. mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00
  89. echo Mounting root filesystem.
  90. mount /sysroot
  91. echo Setting up other filesystems.
  92. setuproot
  93. loadpolicy
  94. echo Switching to new root and running init.
  95. switchroot
  96. echo Booting has Failed.
  97. sleep -1

解决方法

您无需担心所有已安装的模块.首先,启动进入救援盘.
  1. chroot /mnt/sysimage # this is for Fedora specifically - YMMV
  2. cp /boot/initrd-2.26.27.24-78.2.53-fc9.x86_64.img \
  3. /boot/initrd-2.26.27.24-78.2.53-fc9.x86_64.old
  4. mkinitrd --preload ahci -f /boot/initrd-2.26.27.24-78.2.53-fc9.x86_64.img \
  5. 2.26.27.24-78.2.53-fc9.x86_64
  6.  
  7. exit and reboot the system.

华而不实的

在“驱动程序初始化”之前,您不必担心所有的modprobes

  1. ignore --> use the --preload *MODNAME* in the arguments to mkinitrd
  2. ignore --> for all the rest use --with

只需添加–preload ahci

有用的网址:

> http://www.mail-archive.com/fedora-package-announce@redhat.com/msg21104.html
> http://www.justlinux.com/forum/showthread.php?p=886204

猜你在找的Linux相关文章