СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Ноябрь 10, 2009

Фишки пятой платформы: FreeNX

Дистрибутивы, Методические материалы
Автор: Владимир Черный

В каждый школьный дистрибутив (Юниор, Мастер и Легкий), а также в комплект Ковчег входит по умолчанию FreeNX сервер и клиент. Что это и что это нам дает?

FreeNX, по-простому, — «удалённый терминал». Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания NoMachine создала свой коммерческий (но в основной массе открытый) продукт. FreeNX является полностью свободным продуктом.
NX протокол обеспечивает быструю реакцию программ, даже на плохих каналах (dial-up и adsl), что позволяет комфортно работать с (графическими!) приложениями удаленного компьютера.
Таким образом, мы можем запускать удаленно графические программы, т.е. работать или управлять удаленным компьютером. Очень похоже на работу терминального сервера.

Использование FreeNX
Способ I

  1. Устанавливаем какой-то из дистрибутивов на сетевой компьютер.
  2. Запускаем с другого компьютера класса (даже с Windows) nx-client (Скачать клиента для Windows можно отсюда: http://www.nomachine.com/download-client-windows.php)
    Окошко запущенного клиента:
    nx-client
    Нажимаем на кнопочку [Configure…] и настраиваем подключение к NX-серверу на удаленной машине:
    nx-client2
    Здесь надо указать имя компьютера или его IP адрес и порт.
    Если у вас компьютер скажем имеет адрес 192.168.1.20, то это и надо написать, а в окошечке порт 22 (порт ssh протокола, которым NX пользуется для авторизации).
    При первом обращении к компьютеру выскочит окошко:
    nx-client3
    Достаточно просто согласиться.
    Примечание. Я использовал сервер «снаружи» сети, поэтому у меня порт и адреса такие как на рисунке — использовался проброс портов через внешний интерфейс сервера. Это не нужно, если работать в классе внутри сети.
  3. Пользуемся Linux в полном объеме :)

Способ II
Вкратце, это вариант I, но Десктоп с Linux работает, как виртуальная машина на сервере.
Тут возможны два варианта: через KVM или через OpenVZ

Вариант I KVM
Будем рассматривать вариант создания kvm-ной виртуальной машины.
Что нам для этого нужно?

  • установленный Школьный сервер, на котором уже заведен пароль root (а еще лучше лежат ваши ssh-ключики). Назовем ее ham1
  • Образ десктопа с Linux на сервере (или в сетевой доступности), для определенности, пусть это будет Юниор
  • Свой (рабочий) компьютер (с Linux) с доступом по сети к серверу

Схема наших действий такова: устанавливаем в qemu (на сервере) дистрибутив, как будто мы его устанавливаем на реальном железе, делаем из него бандл (bundle) для виртуальной машины, устанавливаем эту виртуальную машину на сервер, узнаем IP и пользуемся по Способу I

Часть I. Создание в qemu образа рабочего десктопа.
1. Идем на сервер по ssh, но так, чтобы графика, выдаваемая qemu пробрасывалась к нам (ключик -Y), на рабочий компьютер.

ssh -Y root@ham1

Надеюсь, вы не забыли положить через веб-интерфейс свои ssh-ключики на сервер?
2. Идем в самый большой каталог на сервере (если ставили сервер на свободное место по умолчанию, то это /var)

cd /var

3. Убеждаемся, что места там «навалом»

df .

В ответ система выдаст что-то типа:

>>>>Filesystem Size Used Avail Use% Mounted on
>>>>/dev/md2 225G 174G 40G 82% /var

4. Создаем динамический образ жесткого диска будущего Юниора:

qemu-img create -f qcow2 junior-desktop.img 16G

>>>>Formatting 'junior-desktop.img', fmt=qcow2 size=17179869184 encryption=off cluster_size=0

Диск будет занимать ровно столько места, сколько нужно, а не все 16 гигабайт.

5. Мы хотим «общаться» со своей виртуальной машинкой, поэтому нам нужен сетевой интерфейс (бридж), через который и будет происходить общение. Скрипт для его создания придется сделать самим и положить в /etc/kvm

cat >/etc/kvm/breth0
#!/bin/sh

switch=breth0
/sbin/ip link set up $1
/sbin/brctl addif ${switch} $1
^D

Пояснения к коду. После того, как вы ввели первую строчку и нажали на [Enter] консоль продолжает ожидать ввод текста. Вводим все строчки текста, нажимаем комбинацию клавиш [CTRL]+[D] (отображено как ^D) и все, файл с нужным текстом создан.

6. Сделаем этот скрипт исполнимым:

chmod +x /etc/kvm/breth0

7. А теперь самый длительный процесс — установка Юниора в qemu:

kvm -cdrom /path_to_iso/ALT_Linux_5.0_School/altlinux-5.0.0-school-junior-i586-ru-install-dvd5.iso -drive "file=/var/junior-desktop.img,if=scsi,boot=on" -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0

Пояснения
-cdrom /path_to_iso/ALT_Linux_5.0_School/altlinux-5.0.0-school-junior-i586-ru-install-dvd5.iso -это «привод» DVD с образом установочного диска. Не забудьте заменить /path_to_iso на реальный путь к вашему образу на сервере.
-drive «file=/var/junior-desktop.img,if=scsi,boot=on» — жесткий диск нашего «компьютера» созданный на шаге 4
-m 512 — память выделяемая под Юниор (в Мб)
-net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0 — тот самый сетевой интерфейс, через который мы будем управлять этим «компьютером»

Процесс установки ничем не отличается от установки на реальную машину, единственный совет — не ставьте ничего дополнительного, пусть образ будет как можно меньше. Все, что будет нужно, можно доставить в уже готовую виртуальную машину.

Часть II Создаем бандл.
1. Нам необходим файл манифеста: info

[main]
hypervisor=kvm
version=0.0.1
vendor=ALT Linux
os=Linux
arch=i686
memory=512
ip=DHCP
[image]
image_path=junior-desktop.img
image_size=16G
image_bus=scsi

2. теперь пакуем

tar -cf kvm-junior.bun info junior-desktop.img

По поводу его содержания и подробности создания бандла см http://www.altlinux.org/Создание_профиля_KVM

3. Полученный бандл отправляем в место, где мы его сможем найти через веб-интерфейс

mv kvm-junior.bun /srv/share/bundles/

4. Идем в консоль управления сервером https://ham1:8080/ в раздел виртуальные машины
bundle2
И жмем «Создать новую виртуальную машину». В ответ получим запрос на поиск виртуальных машин:
bundle8
И в результате поиска получим список (хотя бы одну запись) бандлов.
bundle9
Выбираем наш бандл и устанавливаем виртуальную машину.
После установки нам будет доступен IP адрес нашей виртуальной машины.
Процесс подсоединения описан выше. Запускаем nxclient, настраиваем, пользуемся :)

Вариант II OVZ

1. Для создания ovz бандла воспользуемся готовой kvm-ной машинкой, созданной в Варианте I п.7
Что такое ovz контейнер? Это, грубо говоря файловая система с установленным Linux, вот и сделаем tarbol из нее.
Запустим машину, — можно использовать ту же команду, что и при создании (см п.7), просто теперь, вместо установки загрузимся с «жесткого» диска.
Запустим консоль внутри qemu, и станем рутом (su -). убедимся, что из этой машины виден родительский сервер ham1 (просто пропингуйте его).
Далее скопируем все дерево каталогов от корня в какой-нибудь каталог сервера (например, /var/tmp/desktop/ — сделайте его заранее). Способов тому масса, предлагаю rsync

rsync / ham1:/var/tmp/desktop/

Скорее всего, с вас потребуют пароль root на сервере. Эта проблема решается или разрешением руту ходить по ssh по паролю (временно!) или положите ключики рута из виртуальной машинки на сервер.
Итак, у нас на сервере есть копия дерева файловой системы юниора.

2. Создаем бандл.
a) Сначала избавимся от «балласта». Виртуальной машине не нужно содержимое каталогов, динамически создаваемое при запуске: /proc и /sys, а также частично не нужно все содержимое каталога устройств /dev.
Удаляем все файлы из указанных каталогов, и копируем в /dev содержимое пакета dev-minimal (можно просто его распаковать и скопировать)
Вообще говоря, нам не нужны и скопированные сокеты, но их tar выкинет сам.
Пакуем файлы в тарбол.

cd /var/tmp/desktop
tar -cf /var/tmp/files.tar .

б) Создаем файл конфигурации ovz-машины по имени config
Такого содержания:

ONBOOT="no"
AVNUMPROC="8:8"
NUMPROC="650:650"
NUMTCPSOCK="800:800"
NUMOTHERSOCK="1600:1760"
VMGUARPAGES="6144:unlimited"
KMEMSIZE="67108864:83886080"
TCPSNDBUF="327680:532480"
TCPRCVBUF="6389760:10485760"
OTHERSOCKBUF="2641920:3368960"
DGRAMRCVBUF="132096:132096"
OOMGUARPAGES="6144:unlimited"
LOCKEDPAGES="32:32"
SHMPAGES="8192:8192"
PRIVVMPAGES="500000:520000"
NUMFILE="20480:20480"
NUMFLOCK="100:110"
NUMPTY="16:16"
NUMSIGINFO="256:256"
DCACHESIZE="7864320:8650750"
PHYSPAGES="0:unlimited"
NUMIPTENT="128:128"
DISKSPACE="16777216:18454944"
DISKINODES="20000000:22000000"
QUOTATIME="0"
CPUUNITS="1000"
OFFLINE_MANAGEMENT="yes"
MEMINFO="privvmpages:1"
CPUS="1"

Не все параметры здесь одинаково полезны, более того их можно «подкрутить» уже потом, например ONBOOT=»no» означает, что контейнер не будет стартовать при перезапуске сервера — это можно изменить из веб-интерфейса управления.
Что действительно важно, так это

DISKSPACE="16777216:18454944"
DISKINODES="20000000:22000000"

Первый параметр означает сколько места вы отводите на контейнер (16 гб), а второй сколько файлов в нем может быть. Если эти параметры будут меньше того, что вы пытаетесь установить — контейнер просто не развернется на сервере.
Запаковываем этот файл в тарбол

tar -xf conf.tar config

в) Создаем файл манифеста info

[image]
image_path=files.tar
[main]
hypervisor=openvz
vendor=ALT Linux
arch=i686
[openvz]
config=conf.tar

г) Упаковываем все в бандл

tar -xf junior-desktop.bun info conf.tar files.tar

Внимание: Порядок упаковки должен соответствовать размерам файлов — маленькие вперед!

г) копируем бандл в нужное место на сервере как в Варианте I

3. Идем на сервер и устанавливаем вирт. машину.
bundle3
В отличие от KVM, от нас попросят указать адрес этой машины — укажем его из внутренней подсети класса. (у меня 192.168.0.90)
bundle4
Машина установлена.
Тонкая настройка параметров машины делается из веб-интерфейса. Жмем «Дополнительные настройки»
bundle6
И далее «Настройки ограничений системных ресурсов»
bundle7
Все.
Заряжаем nx-client и идем на машинку. Параллельно неплохо зайти на машину рутом по неграфическому ssh и отслеживать лимиты:

cat /proc/user_beancounters

если каких-то ресурсов не хватило мы это увидим в колонке failcnt:

uid resource held maxheld barrier limit failcnt
101: kmemsize 8632240 8704619 67108864 83886080 0
  tcprcvbuf 0 646008 638976 1048576 5
  othersockbuf 264096 264096 264192 336896 535
  dgramrcvbuf 0 8720 132096 132096 0
  numothersock 183 184 1600 1760 78

Комментарии (25) к “Фишки пятой платформы: FreeNX”

  1. «…запускать удаленно графические программы, т.е. работать или управлять удаленным компьютером. Очень похоже на работу терминального сервера…»

    Это похоже на ssh -X ? Если да, то в чём разница и чем это лучше ssh -X?

  2. Владимир Черный говорит:
    Ноябрь 10, 2009, 6:41 пп

    derugu, вы ведь ничего не прочитали! В коротком комментарии аж две ошибки!
    Во первых не ssh -X, а ssh -Y (и уже давно!)
    А, во вторых, перечитайте описание FreeNX — там четко написано, что NX сжимает трафик от Х-ов.
    Кроме того, NX умеет пробрасывать звук и печать.

  3. …Во первых не ssh -X, а ssh -Y (и уже давно!)…
    Да? А у меня работает опция -Х… и трафик сжимал с помощью ещё какой-то опции, помню. На вики нашёл:»ssh…можно использовать…для удаленного запуска клиентов X Window System.» и ещё «… Чтобы уменьшить риск, возникающий при X11 forwarding, ssh -X теперь по умолчанию «намекает» X-серверу, что клиенты, приходящие поверх SSH, небезопасны. Если вы уверены в удаленном хосте, то можете явно запросить высокую степень доверия к X-клиентам с помощью опции ssh -Y вместо -X…»

    Вот я и пишу, что удалённо запускал окна через ssh -X.
    И Вы пишете: «…мы можем запускать удаленно графические программы…», перечитал ещё раз всё и…не понял разницы, тем более, что на альтвики указано, что ЭТО запускается поверх ssh. Кроме абалденного сжатия «…Обеспечивает реакцию запускаемых программ, сравнимую со временем их выполнения на локальной системе….», не понял разницы — и там удалённые окна, и в FreeNX окна.

    Извините, если туплю, но хотелось бы понять, может ОНО мне нужно, т.к. давно хочу работать с удалёнными окошками, но дома только 3G, а это дорого через ssh -X и скорости у нас унылые…

  4. «…В коротком комментарии аж две ошибки!…»
    Я бы это назвал точкой зрения или индивидуальной приязнью к некоторым опциям… :)

  5. Владимир Черный говорит:
    Ноябрь 10, 2009, 8:26 пп

    Вот что за манера не дочитав, писать комменты….
    Ну почитайте внимательно man ssh на предмет опций -X и -Y, Если вам так безразлична безопасность — вперед и с песней (ССЗБ, как говорится)…
    Что касается ваших опасений слабого канала — они не обоснованы — пробуйте! NX протокол отлично работает на совсем дохлых и загруженных соединениях, именно благодаря умению сжимать трафик и посылать не весь, а только изменения.

  6. Попробую… Доложу об испытаниях. А локальный диск к удалённой системе смогу примонтировать через FreeNX?

  7. Владимир Черный говорит:
    Ноябрь 11, 2009, 12:28 пп

    А локальный диск к удалённой системе смогу примонтировать через FreeNX?
    В настройке клиента есть вкладочка сервисы, и там можно отметить печать и расшаривание файлов по SMB, а также печать через cups.
    Если речь идет о nfs и есть сетевой доступ от удаленной машине к локальной (где шара), то монтируйте без NX.
    Пробуйте :)

  8. По поводу freeNX.
    Опробовали в реальной ситуации в начале года.
    Удалённо работали с рабочими столами в 91-й школе г Перми,
    школой в Соликамске и на компьютере Александра Поносова (с не очень шустрым каналом).
    Правда механизм запуска был еще хитрее — так как в большинстве случаев у клиентов провайдер блокирует входящие соединения, то использовали проброс соединения через наш открытый порт…

  9. Пробую ставить контейнер. На пункте создания из iso выдаёт многочисленные ошибки

    # kvm /etc/kvm/alt41.iso -drive \file=/var/alt-desktop41.img,if=scsi,boot=on\ -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0

    open /dev/kvm: No such file or directory
    Could not initialize KVM, will disable KVM support
    bridge breth0 does not exist!
    /etc/kvm/breth0: could not launch network script
    Could not initialize device ‘tap’

    Ставил в Alt 5.0.1 Школьный Сервер. В Веб-интерфейсе Система->Системные службы->kvm остановлена почему-то и не желает запускаться. Что делать, куда копать?

  10. Владимир Черный говорит:
    Август 12, 2010, 2:32 пп

    derugu, kvm не служба и запускается только тогда, когда нужно. Попробуйте просто запустить kvm без параметров — должно выскочить окно загрузки «компьютера» с руганью на отсутствие загрузочного устройства…
    Что касается устройства…
    [root@ham1 ~]# ll /dev/kvm
    crw-rw—- 1 root vmusers 10, 232 Jul 16 12:23 /dev/kvm
    Теперь посмотрим на вашу строчку:

    # kvm /etc/kvm/alt41.iso -drive \file=/var/alt-desktop41.img,if=scsi,boot=on\ -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0

    видимо пропущен параметр -cdrom перед /etc/kvm/alt41.iso

  11. kvm -cdrom /etc/kvm/alt41.iso -drive «file=/var/alt-desktop41.img,if=scsi,boot=on» -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0
    open /dev/kvm: No such file or directory
    Could not initialize KVM, will disable KVM support
    bridge breth0 does not exist!
    /etc/kvm/breth0: could not launch network script
    Could not initialize device ‘tap’

    Всё равно ругается, может, дело в том, что у меня проц. E4500, который не поддерживает аппаратную виртуализацию?

  12. Владимир Черный говорит:
    Август 12, 2010, 3:30 пп

    Отсутствие аппаратной виртуализации скажется на скорости…
    Проверьте, что у вас загружен модуль ядра kernel-modules-kvm-бла-бла…. Не просто наличие установленного модуля ядра, но и успешной его загрузки! (lsmod |grep kvm — что говорит?)

  13. >lsmod |grep kvm – что говорит?

    Ничего не говорит

  14. Владимир Черный говорит:
    Август 13, 2010, 10:19 дп

    Угу, я так и думал — у вас модуль, если и есть, то не загрузился.
    Должно быть что-то вроде:
    # lsmod |grep kvm
    kvm_amd 48952 0
    kvm 198224 1 kvm_amd

    Посмотрите еще вывод dmesg — в рабочем случае так:
    [root@ham1 ~]# dmesg |grep kvm
    [49436.194130] kvm: emulating preempt notifiers; do not benchmark on this machine
    [49436.194142] loaded kvm module (v2.6.27)
    [327862.273175] kvm: 23749: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [327863.446370] kvm: emulating exchange as write
    [420009.140596] kvm: 12342: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [564588.274105] kvm: 8813: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [677719.681761] kvm: 31870: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [1171434.312455] kvm: 32512: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [1272742.839920] kvm: 21012: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop
    [2291955.099523] kvm: 19897: cpu0 kvm_set_msr_common: MSR_IA32_MC0_STATUS 0x0, nop

    Думаю, в вашем случае «loaded kvm module» не будет.

    Можете также попробовать modprobe kvm и увидите ругань :)
    Короче, ваша машина не приспособлена для этих целей.

  15. >Короче, ваша машина не приспособлена для этих целей.

    Буду пробовать на другой машине запускать kvm

  16. Владимир Черный говорит:
    Август 13, 2010, 10:30 дп

    Успехов!

  17. На другой машинке есть прогресс:

    [root@comp-Athlon-64-be4178 ~]# lsmod |grep kvm
    kvm_amd 37536 0
    kvm 169856 1 kvm_amd
    [root@comp-Athlon-64-be4178 ~]# dmesg |grep kvm
    [ 34.097395] kvm: emulating preempt notifiers; do not benchmark on this machine
    [ 34.097404] loaded kvm module (v2.6.27)

    Но при запуске скрипта выдаёт ошибку
    [root@comp-Athlon-64-be4178 ~]# kvm -cdrom /var/al41.iso -drive «file=/var/alt41.img,if=scsi,boot=on» -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/breth0

    bridge breth0 does not exist!
    /etc/kvm/breth0: could not launch network script
    Could not initialize device ‘tap’

  18. Владимир Черный говорит:
    Август 16, 2010, 11:42 дп

    А что на вашей машине говорит ip a? И что там установлено? «bridge breth0 does not exist!» — очень странно. На сервере они должны автоматом создаваться.

  19. [root@comp-Athlon-64-be4178 kvm]# ip a
    1: lo: mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    2: eth0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    link/ether 00:1f:c6:be:41:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.1/24 brd 192.168.0.255 scope global eth0
    3: venet0: mtu 1500 qdisc noqueue state UNKNOWN
    link/void

    И сообщение bridge breth0 does not exist! пропало. Теперь так:
    [root@comp-Athlon-64-be4178 kvm]# kvm -cdrom /var/alt41.iso -drive «file=/var/alt41.img,if=scsi,boot=on» -m 512 -net nic,vlan=0 -net tap, vlan=0,script=/etc/kvm/breth0
    /etc/qemu-ifup: could not launch network script
    Could not initialize device ‘tap’

  20. Да. установлена ШС 5.0.1, с одной сетевушкой.

  21. Владимир Черный говорит:
    Август 16, 2010, 12:50 пп

    Попробуйте создать бридж самостоятельно. Примерное описание процесса тут: http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=35

  22. Всё заработало благодаря помощи Black! Спасибо! Инструкция установки ВМ абсолютно пошаговая, но могут случится недоразумения с командами по причине битого образа, как в моём случае. Внешне благополучно скачал iso ШС5.0.1, установил, и тут пошли косяки. Не организовался мост для виртуальных машин breth0 и дальше всё пошло вкось.
    Поэтому советы:
    1. Проверьте md5sum скачанных образов
    # md5sum -c /путь/файл.iso
    Будет напечатана сумма, которую сравните с суммой MD5SUM, она лежит в файле рядом с образом ОС(если нет файла суммы,, значит, вы не с http://ftp.altlinux.ru качаете)
    (в моём случае оказались битыми оба образа — и сервер и виртуальная м. — бывает же такое везение! Второй раз перезакачал и проверил.)
    2. Проверьте, поддерживается ли аппаратная виртуализация на вашем компе.
    цитата
    … Пользователи Linux могут проверить наличие аппаратной поддержки виртуализации с помощью команды

    egrep -q ‘^flags.*(vmx|svm)’ /proc/cpuinfo && echo yes

    Если команда в ответ сказала yes, то это значит, что виртуализация KVM поддерживается. Помните также, что поддержка виртуализации может быть выключена в BIOS….
    http://docs.altlinux.org/archive/p5/school-server/#__33

    3. Установка вирт. машины происходит в каталог рядом с файлом myimage.img, поэтому проверьте, есть ли место в этом каталоге. У меня при инсталляции ШС5.0.1 разбил диск 80 ГБ на 2+4+32+32 и каталог c img оказался на 4ГБ.
    cd /var
    df .
    и если команда покажет больше 16 гигов свободного места — продолжайте. А я вручную разбивал диск на 2ГБ своп и 70 на корневой каталог.
    4. Проверьте, существуют ли созданные автоматом при установке главной OC мосты
    brctl show
    или
    ip a

    если увидите интерфейс breth0 — хорошо, если нет, то не все потеряно, можно вручную создать мост.

    Удачи! У меня получилось и у вас получится!

  23. Владимир Черный говорит:
    Август 18, 2010, 11:45 дп

    Приятно помогать такому «упертому перцу» :)
    Не зря же пословица гласит: «Уменье и труд все перетрут».

  24. Михаил говорит:
    Ноябрь 7, 2011, 8:37 пп

    все-таки странно себя ведет система:

    localhost kvm]# kvm -cdrom /home/mikhail/xp/win-xp-sp2.iso -drive «file=/var/metrodisk.img,if-scsi,boot=on» -m 512 -net nic,vlan=0 -net tap,vlan=0,script=/etc/kvm/brext
    Incorrect number of arguments for command
    Usage: brctl addif add interface to bridge
    /etc/kvm/brext: could not launch network script
    Could not initialize device ‘tap’

    наличие бриджа — гарантировано (ручками поднимал) все остальное тоже сделано вроде корректно.. БЛИН, НЕ РАБОТАЕТ. Где я ошибся?

  25. Владимир Черный говорит:
    Ноябрь 8, 2011, 10:31 дп

    1. «Incorrect number of arguments for command» неправильное количество аргументов в команде… или где-то пробели или…
    Да, вот: if=scsi а не «-»
    2. «/etc/kvm/brext: could not launch network script» скрипт отсутствует или содержит ошибку
    3. «Could not initialize device ‘tap’» Скорее всего не хватает прав на устройство.
    Михаил, с этим вопросом на forum.altlinux.org пожалуйста! или в списки рассылки…

Оставьте комментарий