Skip to content

Instantly share code, notes, and snippets.

@mocurin
Last active August 30, 2019 20:06
Show Gist options
  • Save mocurin/4dbaf86b9993e9e264bd926b317d9bb2 to your computer and use it in GitHub Desktop.
Save mocurin/4dbaf86b9993e9e264bd926b317d9bb2 to your computer and use it in GitHub Desktop.
Домашнее задание

Выполнение

1. Установить на своём ноутбуке любой дистрибутив GNU/Linux (можно второй системой)

Ubuntu 18.04 стоит второй системой

2. Настроить qemu-kvm для запуска виртуальных машин

Установка зависимостей

apt install qemu-kvm libvirt-bin

3. Создать виртуальную машину с GNU/Linux

Добавление rootfs

IMG=qemu-image.img
DIR=mount-point.dir
qemu-img create $IMG 1g
mkfs.ext2 $IMG
mkdir $DIR
sudo mount -o loop $IMG $DIR
sudo debootstrap --arch amd64 jessie $DIR
sudo umount $DIR
rmdir $DIR

Делал в соответствии с [1]

4. Собрать ванильное ядро Linux с конфигурацией по умолчанию (defconfig)

Зависимости, получение архива, его распаковка.

sudo apt install gcc make dpkg-dev libncurses5-dev libssl-dev flex bison libelf-dev
wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.2.11.tar.xz
tar --xz -xvf linux-5.2.11.tar.xz
cd linux-5.2.11

Сборка файла конфигурации, kvmify, сборка самого ядра

make defconfig
make kvmconfig
make -j8

Сборка заняла около 7 минут.

5. Запустить виртуальную машину с этим ядром.

qemu-system-x86_64 \
-s \
-m 2048 \
-net nic \
-net user,host=10.0.2.10,hostfwd=tcp::1569-:22 \
-display none \
-serial stdio \
-no-reboot \
-numa node,nodeid=0,cpus=0 \
-smp sockets=1,cores=1,threads=1 \
-enable-kvm \
-hda vm/qemu-image.img \
-snapshot \
-kernel linux-5.2.11/arch/x86/boot/bzImage \
-append "console=ttyS0 earlyprintk=serial net.ifnames=0 biosdevname=0 root=/dev/sda nokaslr"

Результат:

Imgur

Так же создал пользователя. Вошел в режиме восстановления (понадобилось убрать -snapshot, с ним изменения пользователей не сохранялись):

qemu-system-x86_64 \
-s \
-m 2048 \
-net nic \
-net user,host=10.0.2.10,hostfwd=tcp::1569-:22 \
-display none \
-serial stdio \
-no-reboot \
-numa node,nodeid=0,cpus=0 \
-smp sockets=1,cores=1,threads=1 \
-enable-kvm \
-hda vm/qemu-image.img \
-kernel linux-5.2.11/arch/x86/boot/bzImage \
-append "console=ttyS0 earlyprintk=serial net.ifnames=0 biosdevname=0 root=/dev/sda nokaslr single"

Cделал ремаунт в rw и добавил пользователя.

mount -o remount rw /
adduser user

Использованные материалы

  1. https://www.collabora.com/news-and-blog/blog/2017/01/16/setting-up-qemu-kvm-for-kernel-development/
  2. https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment