OpenVZ Forum


Home » International » Russian » current tty as console in CT (нужна консультация)
current tty as console in CT [message #51757] Sat, 08 November 2014 06:06 Go to next message
seyko2 is currently offline  seyko2
Messages: 184
Registered: February 2007
Location: Moscow
Senior Member

From: 83.220.237*
Привет!
Обычно контейнер описывают как chroot на стероидах. Но chroot получает в качестве stdin и stdout текущий терминал. И поэтому в нём работают даже графические программы (framebuffer). Вот и для контейнера хочется такой же режим.

Для checkpoint/restore эта фича не совсем подходит и лучше сделать виртуальный framebuffer в CT, но для DESKTOP будет вполне хороша и должна быть проще в реализации.

Но вот как этого добиться? Как избавиться от namespace для устройств tty, console, vcs, vcsa, fb? Может разработчики подскажут?

Для чего фича нужна? Например, для запуска в контейнере android Smile
В Paralles (http://habrahabr.ru/company/parallels/blog/174211/) под руководством master1981 (kir?) в 2012-2013 году два студента из кафедры МиИТ Академического университета Санкт-Петербург повторили работу http://systems.cs.columbia.edu/projects/cells/build/ Но там используется ядро 3.1 с доработткой device namespace так, что для всех контейнеров доступен framebuffer. Но только для foreground CT вывод реально осуществляется на экран, а для остальных CT вывод идёт просто в память.

Реализация довольно сложная и не подходит для checkpoit/restore. Поэтому для начала хочется subj -- иметь возможность избавиться в некоторых контейнерах от виртуализации tty и научиться запускать в CT графические программы (framebuffer).

Любая подсказка будет принята с благодарностью.

PS: правильный и длинный путь -- это реализация в CT spice-устройств. Тогда и checkpoint/restore будет с этим работать. И будут звук, принтер...
Re: current tty as console in CT [message #51759 is a reply to message #51757] Sat, 08 November 2014 12:05 Go to previous messageGo to next message
seyko2 is currently offline  seyko2
Messages: 184
Registered: February 2007
Location: Moscow
Senior Member

From: 83.220.237*
Оставил запрос о помощи в bugzilla (https://bugzilla.openvz.org/show_bug.cgi?id=3115). Может разработчики что подскажут.

А для начала решил виртуализировать /proc/cmdline для CT. Сейчас там только quiet. А хочется указать патаметры в NNN.conf. Типа PROC_CMDLINE="бла-бла-бла". Ибо у меня TZ, LANG, CODEPAGE, UNICODE и другие параметры системы указываются именно в параметрах загрузки. Можно конечно исправить и в другом месте, но это уже разная логика в основной системе и CT.

Показ /proc/cmdline осуществляется в функции cmdline_proc_show(). Соответственно надо понять, как выделить память для cmdline в CT и установить это значение из vzctl Smile
Re: current tty as console in CT [message #51761 is a reply to message #51759] Thu, 13 November 2014 02:06 Go to previous messageGo to next message
seyko2 is currently offline  seyko2
Messages: 184
Registered: February 2007
Location: Moscow
Senior Member

From: 83.220.237*
Реализовал эту фичу, только в vzctl назвал как --boot-cmdline. Можно сконфигурировать с помощью vzctl как
vzctl set XXX --boot-cmdline "string" --save

Сохраняется и восстанавливается при suspend/resume. Фича может и так себе, но для разгона -- самый раз. Патчи для ядра и vzctl 4.8 выложил в google drive ( https://drive.google.com/file/d/0B35PjbLHNzyqdUI1OFNURGZiQjg /view?usp=sharing).

Далее хочу реализовать для vzctl параметр --boot-initprog, чтобы указать программу, которую запускать как init. Сейчас vzctl перебором пытается запустить /sbin/init, /etc/init, /bin/init и это никак не конфигурируется. Кроме того, в других местах проверяются свойства только /sbin/init. При загрузке реального ядра можно указать в загрузчике параметр init=/bin/bash
Re: current tty as console in CT [message #51766 is a reply to message #51761] Thu, 13 November 2014 21:48 Go to previous message
seyko2 is currently offline  seyko2
Messages: 184
Registered: February 2007
Location: Moscow
Senior Member

From: 83.220.239*
А относительно fbconsole для контейнера наверно придётся попробовать собрать cells (http://systems.cs.columbia.edu/projects/cells/build/). Посмотреть как фреймбуфер для контейнеров работает там. Дальше будет видно.
Previous Topic: constant script name which executes when CT mounted
Next Topic: path of the opened fd
Goto Forum:
  


Current Time: Mon Dec 18 14:44:59 GMT 2017