Назад | Перейти на главную страницу

проблемы с загрузкой после преобразования запущенного linux в vm вручную

Я сделал копию файла работающей установки debian8 в образ. Ниже приводится процедура.

  1. создать образ виртуального диска - raw / vdi.
  2. смонтируйте его локально.
  3. сделать файловую копию работающего дистрибутива linux:

    rsync -aAXv --delete --exclude = {"/ dev /"," / proc /"," / sys /"," / tmp /","/бегать/"," / mnt /","/СМИ/"," / потеряно + найдено "," / главная /"} / *" $ TMPDIR "

  4. установить extlinux загрузчик и связанные /boot/extlinux.conf, Обновить /etc/fstab, размонтируйте и загрузитесь.

Я могу загрузиться с помощью qemu. Возможность входа в консольный режим.

ВОПРОСЫ:

  1. Не удается смонтировать разделы подкачки, но в / etc / fstab нет ссылки.
  2. Не удается загрузить модули ядра.
  3. Я вижу сообщение о запуске lightdm, но следующая VT отображается для входа в систему.
  4. Я не воссоздавал initram-fs для цели, может ли это вызвать проблему?

Пожалуйста помоги.

- С уважением, JB

Удалось решить некоторые проблемы, что привело к созданию загрузочного образа виртуальной машины из работающей системы.

Проблема:

  1. Нет эффекта.
  2. Нет эффекта.
  3. На самом деле это 1 проблема и 1 ошибка, у меня был собственный xorg.conf с определенным драйвером, удаление xorg.conf делает загрузку qemu в графическом режиме. Другой - из-за простой медлительности qemu, вам просто нужно долго ждать запуска lightdm.
  4. Нет эффекта.

Для удобства я резюмировал весь процесс в сценарии:

#!/bin/bash
# create bootable image from running linux distro

IMG_format="raw"
IMG_name="debian8"
IMG_size="13G"

LNX_image="vmlinuz-4.4.3"
LNX_initrd="initrd.img-4.4.3"
LNX_rootdev="/dev/sda"

TMPDIR="/mnt/vmd/"
WRKDIR="/media/domnic/tmp1"

create_img(){
  IMG="$WRKDIR/$IMG_name.$IMG_format"
  echo "image => $IMG"

  if [ -a "$IMG"]; then
    echo "vm [$IMG] already exists... skipped!"
  else
    if [ "vdi" == "$IMG_format" ]; then
      #- create .vdi
      VBoxManage createhd --filename $IMG --size $(( IMG_size * 1024 ))
    else
      #- or create image on .raw disk
      fallocate -l $IMG_size $IMG
      mkfs.ext4 -F $IMG
    fi
  fi
}

mount_img(){
  echo "mount => $TMPDIR"
  IMG="$WRKDIR/$IMG_name.$IMG_format"
  if [ ! -d "$TMPDIR" ]; then
    mkdir -p $TMPDIR
  fi

  if [ "vdi" == "$IMG_format" ]; then
    #- mount .vdi
    vdfuse -a -f $IMG /mnt/vdi
    mount -o loop /mnt/vdi/1 $TMPDIR
  else
    #- mount image to tmpdir
    mount $IMG $TMPDIR
  fi
}

clone_img(){
  echo "clone => $TMPDIR"
  #- copy files
  rsync -aAX --delete --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/home/*"} /* "$TMPDIR"

  #- install bootloader
  extlinux --install $TMPDIR/boot

  #- update bootloader
  #-- qemu default: root=/dev/sda
  cat > $TMPDIR/boot/syslinux/extlinux.conf <<- EOM
DEFAULT $IMG_name_$LNX_image
LABEL   $IMG_name_$LNX_image
SAY     Booting $IMG_name - $LNX_image
LINUX   /boot/$LNX_image
INITRD  /boot/$LNX_initrd
APPEND  root=$LNX_rootdev rw
EOM

  #-- remove invalid entries from $TMPDIR/etc/fstab
  echo "/dev/sda   /   ext4   defaults   0   1" > $TMPDIR/etc/fstab

  #- unmount image and boot
  umount $TMPDIR
  if [ "vdi" == "$IMG_format" ]; then
    umount /mnt/vdi  
  fi
}

start_vm(){
  IMG="$WRKDIR/$IMG_name.$IMG_format"
  echo "vm => $IMG"

  qemu-system-i386 \
    -display sdl \
    -soundhw ac97 \
    -vga cirrus \
    $IMG
}

case $1 in
  create_img)
    create_img
    ;;
  mount_img)
    mount_img
    ;;
  clone_img)
    clone_img
    ;;
  start_vm)
    start_vm
    ;;
esac