LVM 分区自定义镜像无法启动问题记录

问题现象:

本地设置的镜像系统,使用的是lvm分区,上传后,第一次创建成功后可以启动


LVM 分区自定义镜像无法启动问题记录



重启后,再也无法进入系统了,显示如截图所示


LVM 分区自定义镜像无法启动问题记录




问题分析

阿里云自有镜像都是非lvm分区,因此重启后没有问题

使用非阿里云镜像,第一次启动时,linux去重新remake initrd,initrd里面原有的lvm模块被移除了,因此需要想办法将lvm驱动来被dracut 来引导识别



解决方法

1.vi /etc/dracut.conf.d/lvm.conf  (如无,新建文件), 加入lvm驱动模块配置,

   add_dracutmodules+=" lvm "


2.lvm 也是建立在磁盘的基础之上的,那么同时要保证 virtio-blk 驱动也要在 ramdisk 里面

  


dracut -f   -add-drivers   'xen-blkfront  xen-blkfront virito_blk  virtio_pci virtio_console '


  

LVM 分区自定义镜像无法启动问题记录



执行上述操作重启恢复正常



延伸说明


dracut     create initial ramdisk images for preloading modules。  dracut创建虚拟磁盘映像,提供给内核,预加载块设备模块,通过加载这些设备模块访问根文件系统



dracut  官方手册 

https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html#dracutkernel7

https://www.kernel.org/pub/linux/utils/boot/dracut/


开机流程:Systemd & Dracut

systemd-journal.socket
                                               |
                                               v
                                    dracut-cmdline.service
                                               |
                                               v
                                    dracut-pre-udev.service
                                               |
                                               v
                                     systemd-udevd.service
                                               |
                                               v
local-fs-pre.target                dracut-pre-trigger.service
         |                                     |
         v                                     v
 (various mounts)  (various swap  systemd-udev-trigger.service
         |           devices...)               |             (various low-level   (various low-level
         |               |                     |             services: seed,       API VFS mounts:
         v               v                     v             tmpfiles, random     mqueue, configfs,
  local-fs.target   swap.target     dracut-initqueue.service    sysctl, ...)        debugfs, ...)
         |               |                     |                    |                    |
         \_______________|____________________ | ___________________|____________________/
                                              \|/
                                               v
                                        sysinit.target
                                               |
                             _________________/|\___________________
                            /                  |                    \
                            |                  |                    |
                            v                  |                    v
                        (various               |              rescue.service
                       sockets...)             |                    |
                            |                  |                    v
                            v                  |              rescue.target
                     sockets.target            |
                            |                  |
                            \_________________ |                                 emergency.service
                                              \|                                         |
                                               v                                         v
                                         basic.target                             emergency.target
                                               |
                        ______________________/|
                       /                       |
                       |                       v
                       |            dracut-pre-mount.service
                       |                       |
                       |                       v
                       |                  sysroot.mount
                       |                       |
                       |                       v
                       |             initrd-root-fs.target
           (custom initrd services)            |
                       |                       v
                       |             dracut-mount.service
                       |                       |
                       |                       v
                       |            initrd-parse-etc.service
                       |                       |
                       |                       v
                       |            (sysroot-usr.mount and
                       |             various mounts marked
                       |               with fstab option
                       |                x-initrd.mount)
                       |                       |
                       |                       v
                       |                initrd-fs.target
                       \______________________ |
                                              \|
                                               v
                                          initrd.target
                                               |
                                               v
                                    dracut-pre-pivot.service
                                               |
                                               v
                                     initrd-cleanup.service
                                          isolates to
                                    initrd-switch-root.target
                                               |
                                               v
                        ______________________/|
                       /                       |
                       |        initrd-udevadm-cleanup-db.service
                       |                       |
           (custom initrd services)            |
                       |                       |
                       \______________________ |
                                              \|
                                               v
                                   initrd-switch-root.target
                                               |
                                               v
                                   initrd-switch-root.service
                                               |
                                               v
                                          switch-root











上一篇:百度地图根据经纬度计算瓦片行列号


下一篇:C语言数据结构(9)--串的朴素模式匹配算法