англійськафранцузькаіспанська

Ad


Значок OnWorks

bbvirt - Інтернет у хмарі

Запустіть bbvirt у постачальника безкоштовного хостингу OnWorks через Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

Це команда bbvirt, яку можна запустити в постачальнику безкоштовного хостингу OnWorks за допомогою однієї з наших численних безкоштовних робочих станцій, таких як Ubuntu Online, Fedora Online, онлайн-емулятор Windows або онлайн-емулятор MAC OS

ПРОГРАМА:

ІМ'Я


bbvirt – гаряче підключення пристроїв BitBabbler до керованих доменів libvirt

СИНТАКСИС


bbvirt дію [опції]

bbvirt приєднувати|від'єднати пристрій [опції]

bbvirt приєднати все|від'єднати-всі [домен] [опції]

ОПИС


Команда bbvirt Програма - це спроба зняти частину болю з того, що є зараз
необхідний для розподілу кількох USB-пристроїв між хостовою та гостьовою віртуальними машинами.
Хоча є кілька способів, за допомогою яких це можна налаштувати та керувати, наразі жодного
з них фактично надають повне та узгоджене рішення самі по собі, усі вони падають
значним і дратівливим чином. Мета тут — зібратися
достатньо цих хаків, щоб фактично отримати всю функціональність, яку ми хочемо зараз, доки
Вбудована підтримка libvirt для цього покращується настільки, що вона більше не потрібна.

Наразі це стосується віртуальних машин QEMU/KVM, керованих libvirt.

Що do we хочеш?
Ідеальна поведінка тут досить проста. Задано деяке довільне число BitBabbler
пристроїв, ми повинні мати можливість призначити їх або хост-машині, або гостьовій віртуальній машині
працювати на ньому, і як тільки ми це зробимо, вони повинні вести себе так, як очікується від будь-кого
USB-пристрій.

- Якщо вони підключені під час запуску гостьової машини, це повинно бути видно
машина, як вони були б у господаря.

- Якщо вони підключені після запуску машини, їх слід підключити до нього
машини, як вони були б на хості.

- Якщо вони відключені від електромережі під час роботи машини, їх слід чисто видалити
це, як вони були б на хості.

Чому не можу we мати це?
Наразі libvirt дає нам два способи призначити USB-пристрої з хоста на a
гостьовий домен.

- Ми можемо призначити їх за постачальником USB та ідентифікатором продукту. Але це працює лише тоді, коли є
це лише один пристрій такого типу на хості. Що в більшості випадків є марним
справи, які нас тут цікавлять, де, швидше за все, господар і кожен із гостей
мають один або кілька власних пристроїв BitBabbler, призначених для них.

- Ми можемо призначити їх за логічною адресою на шині USB. Але це не константа
які ми можемо статично налаштувати для домену. Кожен раз, коли пристрій підключається до мережі, або
повторно підключено, або скинуто, або хост-комп’ютер перезавантажено, ця адреса, ймовірно, зміниться
оскільки він динамічно виділяється, коли пристрій перераховується на шині.

Існує третій спосіб, але він покладається на обхід звичайної конфігурації libvirt для створення
безпосереднє використання можливості QEMU для призначення пристрою за його фізичною адресою на шині.
Що краще, але все ж не чарівна куля, оскільки вона покладається на підключення точно так само
пристроїв у точно ті самі порти щоразу (і якщо ці порти перераховані в
так само хостом під час кожного перезавантаження, що також не гарантується). Це також змушує
нам стрибати через інші обручі, оскільки тоді нам потрібно додаткове ускладнення для управління
дозволи на доступ до пристрою вручну за межами libvirt, але все ще узгоджено
з ним.

Ще більший недолік, який об’єднує всі ці методи, полягає в тому, що вони всі залежать
пристрій, який уже підключено до запуску гостя. Якщо він вставлений після
Гість запускається або видаляється та підключається повторно, коли гість працює, або якщо хост
шина або концентратор відскакує, викликаючи повторне з’єднання, тоді пристрій не буде (повторно) під’єднано до
гість. Єдиний спосіб виправити це, якщо це станеться, - це вручну підключити пристрій за допомогою
таємні заклинання в XML (які покладаються на те, що ви знаєте нову адресу пристрою), або
щоб повністю вимкнути та перезапустити гостя. Не вершина зручності користувача
операція, яку ми тут шукаємо.

Що може we do про це?
Кілька років тому в libvirt був поданий патч, який дозволив би пристрій
вказується як ідентифікатором продукту USB, так і його серійним номером, але це змусило
назад, і досі не застосовувався вище за течією. Це було б далеко
щоб зробити це одночасно простим і чистим, залишаючи нам вирішення лише аспекту гарячої підключення
з. Ми залишимо сварливу жартівливість про це як вправу для читача...

Інша альтернатива — ми можемо делегувати пошук логічної адреси пристрою гарячому підключенню
менеджер подобається удев(7). Це привабливо в тому сенсі, що ми можемо знати, коли адреса
зміни пристрою та те, на що він змінюється, але удев сам по собі не дуже дружній до
ідея налаштування локального адміністратора (хоча це можливо зробити, здається, отримує
все більше не рекомендується) і для його використання все ще потрібен зовнішній клей
перевести його події у те, на що libvirt може діяти, щоб налаштувати гостя
машина

Команда bbvirt Програма забезпечує цей клей і зручний метод призначення якого
До яких гостьових доменів мають належати пристрої та інтерфейс, який можна викликати вручну
або іншими контрольованими адміністратором завданнями, щоб швидко та легко додавати або видаляти пристрої BitBabbler
з будь-якої з запущених гостьових машин.

Але обмеження цього підходу полягає в тому, що він не може легко дізнатися, коли є гостьова машина
запущено, до якого мають бути додані пристрої, які вже підключені. Теоретично ми
може додати їх до свого постійного визначення домену, але це має свої проблеми, оскільки
ми можемо додавати пристрої лише за їхніми ефемерними логічними адресами, і ми не можемо гарантувати, що ми
буде викликано, щоб видалити їх із домену знову, коли ця адреса стане недійсною
(наприклад, якщо хост раптово вимкнеться або він не повністю вимикається), тому ми
може призвести до накопичення багатьох застарілих записів у постійній конфігурації домену,
який пізніше міг би відповідати якомусь зовсім іншому пристрою до того, до якого ми хотіли приєднатися
це. Це означає, що доки це не буде виправлено, їх можна безпечно додати лише до живого гостя
домену, так що вони завжди будуть видалятися знову, коли він буде зупинений, незалежно від того, як це відбувається
закінчився зупинкою.

Зрозуміло, що нам ще потрібно пройти, щоб досягти нашого ідеалу.

Що if we удар it з *два* молотки?
Здається, є лише два способи отримати сповіщення про гостьову машину
розпочато в даний час. Один включає в себе запуск ще одного процесу демона, який підійде
трохи більше, ніж просто сидіти, чекаючи, поки хтось приведе гостя, щоб він міг нам розповісти
про те, що. Але тоді нам доведеться налаштувати ще одну річ, ще інший процес
біг, і ще більше проблем із з'ясуванням, як гарантувати, що ми не програємо гонку, коли
хост завантажується між отриманням початкового набору подій пристрою, що відбувається
готовий і активний, а також будь-які гості, які будуть автоматично запущені під час фактичного запуску.

Інший спосіб - використовувати хук libvirt. Що, у свою чергу, має проблему насправді
що дозволяє нам запускати з нього будь-які функції libvirt, які нам потрібно зробити, щоб приєднати
пристрій на хост. І ми не можемо гарантувати, що зможемо просто встановити за замовчуванням,
тому що в системі може бути тільки один такий хук, який локальний адміністратор може вже
використовувати...

Є третій спосіб, але він включатиме вимогу, щоб локальний адміністратор запускав усіх гостей
машин через нашу власну обгортку, а не через будь-який механізм, який вони вже знають
і використовувати. Що не масштабується для підтримки інших USB-пристроїв у такій же ситуації, серед
багато способів, які було б жахливим рішенням для людей.

Але є лазівка, якою ми можемо скористатися. Ми можемо використовувати хук libvirt qemu для запуску a
змінити подію для удев, який, у свою чергу, може викликати bbvirt приблизно так само, як це було б
трапляється, якщо пристрій дійсно було підключено до гарячого підключення, що дає нам додатковий шар опосередкованості
ми повинні мати можливість безпечно зробити це з гачка. Руб Голдберг був би гордий, і
деякі частини можуть вимагати ручної збірки, але якщо все це на місці, ми можемо мати
щось схоже на звичайну функціональність USB на гостьових машинах.

Це не дуже красиво, але буде працювати з тим, з чим нам доведеться працювати.

Добре, просто сказати me де до удар його.
Щоб об’єднати це разом, вам потрібно переконатися в наступному:

- удев(7) встановлені правила з пакета bit-babbler. Якщо ви встановили це
з пакетів Debian, які вже слід зробити. Якщо ви цього не зробили, вам доведеться
встановити правила, які знаходяться в debian/bit-babbler.udev з вихідного пакета до a
відповідне місце у вашій системі (ймовірно /etc/udev/rules.d).

- bbvirt(1) скрипт встановлюється в місці, де удев правила знайдуть. Якщо ви
не встановлював це з пакетів Debian, і його немає в / usr / bin, то вам знадобиться
налаштувати удев відповідні правила.

- Пристрої, які ви хочете використовувати в гостьових машинах, і машини, на яких ви хочете їх використовувати,
зазначені в bbvirt файл конфігурації. Розташування за замовчуванням для цього
/etc/bit-babbler/vm.conf. Якщо ви хочете використовувати інший файл, вам потрібно буде передати його
розташування з --config опція в удев правила та оновіть сценарій хука, використовуючи це
файл теж. Докладніше про те, що ви можете помістити в цей файл, описано в
КОНФІГУРАЦІЯ ВАРІАНТИ нижче.

- Файл hook libvirt встановлено. Якщо все вище зроблено, то прилади будуть
додається до запущених гостьових машин, якщо вони підключаються під час роботи гостя.
Цей останній крок гарантує, що пристрої, які вже підключені, будуть додані до нових
також запущені гості (що включає гостей, які запускаються автоматично, коли хост
машинні чоботи).

Поки не буде безпечного способу, ми зможемо встановити це без конфлікту або перезапису
наявний гачок, кожен повинен буде виконати цей крок вручну. Якщо ви встановили
пакунки Debian, то може бути приклад сценарію hook, який ми надали для цього
знайдено в /usr/share/doc/bit-babbler/examples/qemu-hook. Якщо ви цього не зробили, його можна знайти
in libvirt/qemu-hook вихідного пакета.

Вам потрібно буде встановити цей файл як /etc/libvirt/hooks/qemu, або об’єднати його вміст з
існуючі qemu файл там, якщо у вас уже є цей хук. Якщо цього файлу немає
раніше існував, вам потрібно буде перезапустити libvirtd(8), щоб змусити його почати ним користуватися.

Це повинно охоплювати всю необхідну автоматизацію, але ви також можете підключати та від’єднувати пристрої
також вручну в будь-який час. Деталі цього будуть описані далі
розділ. В іншому випадку, з урахуванням всього вищезгаданого, немає інших причин для використання
bbvirt безпосередньо.

ВАРІАНТИ


Існує два основних режими роботи для bbvirt які вибираються початковими
варіант дії. Якщо дія для виконання є приєднувати or від'єднати тоді лише один пристрій
буде діяти, і який пристрій має бути, має бути вказано явно, навіть якщо
на хості в даний момент присутній лише один пристрій. При виклику bbvirt вручну,
пристрій може бути вказано його серійним номером, його логічною адресою на шині (в
форма busnum:devnum, заданий у вигляді десяткових цілих чисел), або його фізична адреса на шині (в
форма busnum-порт[порт ...]).

Якщо дія для виконання є приєднати все or від'єднати-всі, то пристрій(и) для дії
вибрано домен натомість асоціація. Якщо домен явно вказано, то все
будуть діяти пристрої, які призначені для цього гостьового домену у файлі конфігурації
на так само, як ніби bbvirt був викликаний для кожного з них окремо за допомогою
приєднувати or від'єднати дії. Якщо ні домен надається, то всі налаштовані гості
таким чином будуть діяти домени.

Доступні такі додаткові опції:

-C, --config
Вкажіть альтернативний файл конфігурації для імпорту призначень пристрою.
Якщо шлях до файлу не вказано явно, його буде шукати в
/etc/bit-babbler каталог (з a .conf суфікс).

-c, --connect=URI
вкажіть вірш(1) з'єднання URI використовувати. Це перевизначить a DOMAIN_URI комплект
для домену у файлі конфігурації. Якщо це не встановлено за допомогою жодного з цих
методи потім вірш за замовчуванням для запущеного користувача bbvirt буде використовуватися.

-Д, --домен=ім'я
Вкажіть домен libvirt, з яким потрібно діяти. Це може бути використано для заміни пристрою
виділення з файлу конфігурації, коли bbvirt викликається вручну або діяти
на пристрої чи домені, які наразі не вказані у файлі конфігурації.

-б, --busnum=Num
Вкажіть номер шини USB, до якої підключено пристрій. Цей варіант переважно
використовували для уникнення bbvirt потрібно шукати це, коли це вже відомо (наприклад, коли
воно називається від а удев правило). Зазвичай немає особливих причин передавати це, якщо
виклик bbvirt вручну, оскільки ви можете просто вказати пристрій за його логічним або
фізичну адресу.

-d, --devnum=Num
Вкажіть номер USB-пристрою, який зараз призначений пристрою. Разом з
номер шини, це формує логічну адресу пристрою. Цей варіант є
в основному використовується для уникнення bbvirt потрібно шукати це, коли це вже відомо (наприклад
як коли воно викликається з a удев правило). Зазвичай немає багато причин для проходження
це якщо закликати bbvirt вручну, оскільки ви можете просто вказати пристрій за його
логічна адреса.

-n, --сушить
Не приєднуйте та не від’єднуйте жодних пристроїв, просто покажіть, що б спробували зробити, якби це було a
живий біг. Цей варіант передбачає мінімальний рівень -багатослівний, але багатослівність може
буде додатково збільшено, також передаючи цю опцію явно.

-v, -багатослівний
Зробіть більше шуму про те, що насправді відбувається. Його можна передавати кілька разів
ще більше збільшуйте багатослівність.

-?, --допомога
Покажіть короткий опис доступних варіантів.

КОНФІГУРАЦІЯ ВАРІАНТИ


Команда bbvirt файл конфігурації містить призначення змінних за допомогою бити(1) оболонка
синтаксису. Він створений у вигляді фрагмента оболонки, тому ви в принципі можете створити
конфігурація для кожного домену динамічно, але найчастіше це просте статичне призначення
пристроїв до доменів буде достатньо. Якщо ви вирішили запустити в ньому код, ви повинні бути дуже
захищайтеся від простору імен будь-яких інших змінних, які ви використовуєте, або будь-яких інших побічних ефектів
може стати причиною. У ньому можна налаштувати будь-яку кількість гостьових доменів.

Для кожного гостьового домену дві змінні контролюють поведінку bbvirt:

DOMAIN_URI_домен=URI
Ця змінна є необов’язковою та встановлює параметр вірш(1) з'єднання URI використовувати коли
приєднання або від’єднання пристроїв від даного домен, Якщо -- підключити опція
явно передано до bbvirt він перевизначить те, що тут налаштовано. Якщо підключення
URI не встановлюється за допомогою жодного з цих методів, тоді вірш за замовчуванням для користувача
біг bbvirt буде використовуватися (який зазвичай буде root, якщо запускати з удев).

DOMAIN_RNG_домен=( пристрій послідовний номера ... )
Ця змінна потрібна, якщо автоматичний перехід пристроїв до домену
бажаний. Це масив bash, заповнений списком усіх елементів, розділених пробілами
серійні номери пристроїв, яким потрібно призначити домен. Це не помилка для
пристроїв, які в даний момент не підключені. Важливо
переконайтеся, що пристрої призначені лише одному домен хоча й те пристрої
призначені для гостьових доменів, не будуть використовуватися a насіння(1) екземпляр, що працює на
хост (що означає насіння конфігурації потрібно передати явний список
пристрої, які він також може використовувати).

Тут завжди слід використовувати серійний номер пристрою. Ви не можете вказати пристрій за
його логічну або фізичну адресу в шині (як і в більшості інших місць, де
беремо ідентифікатор пристрою).

Використовуйте bbvirt онлайн за допомогою служб onworks.net


Безкоштовні сервери та робочі станції

Завантажте програми для Windows і Linux

Команди Linux

Ad