Я создал виртуализированный физический сервер LXC с Centos 6.8 в качестве хост-ОС.
Теперь, когда я создаю гостевую виртуальную машину с использованием шаблона Centos по умолчанию, она создает виртуальные машины с Centos 6.8 в качестве гостевой ОС.
Я хотел создать виртуальную машину с версией Centos 7.2 в качестве гостевой ОС. Это возможно?
Я выполнил следующие шаги для создания виртуальной машины и запуска.
pstree
command), виртуальной машине не назначен IP-адрес, и я не могу войти в гостевую виртуальную машину.В этой среде мне нужна была виртуальная машина с Centos 7.2. Пожалуйста, расскажите, как этого добиться.
Я настроил шаблон lxc CentOS для поддержки CentOS 7.
Копия созданного мной шаблона lxc находится по адресу https://github.com/nirmalraj17/lxc/blob/master/templates/lxc-centos.in
Это было сделано, потому что были некоторые шаги, которые были связаны с версией ОС 7, которая не упоминалась в текущем шаблоне lxc-centos, и была упомянута в шаблоне lxc-oracle. Я вынул соответствующие разделы из lxc-oracle, добавил их в текущий шаблон lxc-centos и создал новый шаблон с именем lxc-centos-7.
Затем создайте контейнер lxc, используя команду
lxc-create -n centos7 -t /usr/local/share/lxc/templates/lxc-centos-7 -- -R 7
Это загрузит необходимые файлы, необходимые для выпуска версии 7.
После этого, если вы попытаетесь запустить контейнер LXC, вы получите "[!!!!!!] Не удалось выделить объект диспетчера, зависание." когда пытаешься завести.
Теперь создайте каталог systemd под / cgroup
Смонтируйте с помощью приведенной ниже команды.
mount -t cgroup -o none,name=systemd cgroup /cgroup/systemd
Теперь, если вы запустите контейнер LXC и попытаетесь войти в систему, вы получите сообщение об ошибке "сервер отказался выделить pty"
Чтобы этого избежать, остановите контейнер и создайте сценарий оболочки, который выполнит необходимые действия.
[root@centos ~]# vi /usr/local/var/lib/{container_name}/rooftfs/usr/local/bin/device_initiation.sh
#!/bin/bash
mknod -m 600 /dev/console c 5 1 2>/dev/null
mknod -m 666 /dev/null c 1 3 2>/dev/null
mount -n -t tmpfs none /dev 2>/dev/null
mknod -m 622 /dev/console c 5 1 2>/dev/null
mknod -m 666 /dev/null c 1 3 2>/dev/null
mknod -m 666 /dev/zero c 1 5 2>/dev/null
mknod -m 666 /dev/ptmx c 5 2 2>/dev/null
mknod -m 666 /dev/tty c 5 0 2>/dev/null
mknod -m 444 /dev/random c 1 8 2>/dev/null
mknod -m 444 /dev/urandom c 1 9 2>/dev/null
chown root:tty /dev/{console,ptmx,tty} 2>/dev/null
ln -s /proc/self/fd /dev/fd 2>/dev/null
ln -s /proc/self/fd/0 /dev/stdin 2>/dev/null
ln -s /proc/self/fd/1 /dev/stdout 2>/dev/null
ln -s /proc/self/fd/2 /dev/stderr 2>/dev/null
ln -s /proc/kcore /dev/core 2>/dev/null
mkdir /dev/pts 2>/dev/null
mkdir /dev/shm 2>/dev/null
mount -t devpts -o gid=4,mode=620 none /dev/pts 2>/dev/null
mount -t tmpfs none /dev/shm 2>/dev/null
Поскольку мы помещаем этот файл в usr / local / bin, эта команда будет доступна из системы напрямую.
Теперь, чтобы запустить сервер и выполнить этот сценарий оболочки, я создал сценарий оболочки.
[root@centos ~]# vi startup_centos7.sh
#!/bin/bash
lxc-start -n centos7
lxc-attach -n centos7 device_initiation.sh
exit
Как только вы выполните сценарий, CentOS 7 запустится, и вы сможете без проблем войти в систему.
После выполнения вышеуказанных шагов я установил рабочую версию CentOS 7.3 на новый контейнер LXC.