Microsoft USBDeviceShare USB Device Stub USB устройства Драйвера
Microsoft USBDeviceShare USB Device Stub Windows для устройств собирались с сайтов официальных производителей и доверенных источников. Это программное обеспечение позволит вам исправить ошибки Microsoft USBDeviceShare USB Device Stub или Microsoft USBDeviceShare USB Device Stub и заставить ваши устройства работать. Здесь вы можете скачать все последние версии Microsoft USBDeviceShare USB Device Stub драйверов для Windows-устройств с Windows 11, 10, 8.1, 8 и 7 (32-бит/64-бит). Все драйверы можно скачать бесплатно. Мы проверяем все файлы и тестируем их с помощью антивирусного программного обеспечения, так что скачать их можно на 100% безопасно. Получите последние WHQL сертифицированные драйверы, которые хорошо работают.
Microsoft USBDeviceShare USB Device Stub Драйверы: Полное руководство
Microsoft USBDeviceShare USB Device Stub драйверы — это программные программы, которые обеспечивают коммуникацию между операционной системой на вашем компьютере и устройствами. Эти драйверы играют решающую роль в обеспечении оптимальной производительности и стабильности вашего ПК.
Установка драйверов Microsoft USBDeviceShare USB Device Stub
Для установки драйверов Microsoft USBDeviceShare USB Device Stub следуйте этим шагам:
- Посетите официальный веб-сайт разработчика и перейдите в раздел Драйверы.
- Используйте строку поиска или выберите модель вашего устройства из списка.
- Выберите свою операционную систему и нажмите «Поиск.»
- Нажмите кнопку «Скачать» рядом с последней версией драйверов, совместимых с вашей системой.
- После загрузки дважды щелкните по файлу установщика и следуйте инструкциям на экране, чтобы завершить процесс установки.
Обновление драйверов Microsoft USBDeviceShare USB Device Stub
Чтобы обновить драйверы Microsoft USBDeviceShare USB Device Stub, вы можете выполнить следующие шаги:
- Откройте Диспетчер устройств на вашем компьютере.
- Разверните категорию и найдите ваш драйвер Microsoft USBDeviceShare USB Device Stub.
- Щелкните правой кнопкой мыши по драйверу и выберите «Обновить драйвер.»
- Выберите опцию для автоматического поиска обновленного программного обеспечения драйвера.
- Если обновление доступно, следуйте инструкциям для загрузки и установки.
Повторная установка драйверов Microsoft USBDeviceShare USB Device Stub
Если вам нужно повторно установить драйверы Microsoft USBDeviceShare USB Device Stub по какой-либо причине, вот что вы можете сделать:
- Откройте Диспетчер устройств на вашем компьютере.
- Разверните соответствующую категорию и найдите драйвер Microsoft USBDeviceShare USB Device Stub.
- Щелкните правой кнопкой мыши по драйверу и выберите «Удалить устройство.»
- Следуйте инструкциям, чтобы завершить процесс удаления.
- Посетите официальный веб-сайт разработчика и скачайте последнюю версию драйвера по вашим потребностям.
- Запустите установщик и следуйте инструкциям, чтобы завершить процесс установки.
Возврат или понижение версии драйверов Microsoft USBDeviceShare USB Device Stub
Если у вас возникли проблемы с последней версией драйверов Microsoft USBDeviceShare USB Device Stub, вы можете вернуться или понизиться до предыдущей версии, выполнив следующие шаги:
- Откройте Диспетчер устройств на вашем компьютере.
- Разверните соответствующую категорию и найдите драйвер Microsoft USBDeviceShare USB Device Stub.
- Щелкните правой кнопкой мыши по драйверу и выберите «Свойства.»
- Перейдите на вкладку «Драйвер» и нажмите «Откатить драйвер.»
- Следуйте инструкциям для завершения процесса.
Возврат или понижение версии драйверов Microsoft USBDeviceShare USB Device Stub
Если у вас возникли проблемы с последней версией драйверов Microsoft USBDeviceShare USB Device Stub, вы можете вернуться или понизиться до предыдущей версии, выполнив следующие шаги:
- Откройте Диспетчер устройств на вашем компьютере.
- Разверните соответствующую категорию и найдите драйвер Microsoft USBDeviceShare USB Device Stub.
- Щелкните правой кнопкой мыши по драйверу и выберите «Свойства.»
- Перейдите на вкладку «Драйвер» и нажмите «Откатить драйвер.»
- Следуйте инструкциям для завершения процесса.
Удаление драйверов Microsoft USBDeviceShare USB Device Stub
Если вам нужно полностью удалить драйверы Microsoft USBDeviceShare USB Device Stub, вот что вы можете сделать:
- Откройте Диспетчер устройств на вашем компьютере.
- Разверните соответствующую категорию и найдите драйвер Microsoft USBDeviceShare USB Device Stub.
- Щелкните правой кнопкой мыши по драйверу и выберите «Удалить устройство.»
- Следуйте инструкциям для завершения процесса удаления.
- Перезагрузите ваш компьютер.
Всегда важно иметь установленную последнюю версию драйверов Microsoft USBDeviceShare USB Device Stub для оптимальной производительности и стабильности.
© 2023 Driversol.com — Центр Загрузки Драйверов . Все права защищены.
USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру) (Страница 4 из 4)
Usb- мыш loginech увидел, и я успешно подключил в винде. А если файл usb.ids обновить?
Кстати прошивка 1.00(bw 4.5). Я думаю должно завестись на любой до 1.10, но в ней не хватает размера storage-1мб для 3 библиотек. Кстати а где можно найти прошивки с версией от 1.00 до 1.07. Во всех папках только с версии 1.08
(хотя в описании есть все версии)
77 Ответ от Zyxmon 2013-12-10 22:20:43
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
мыш наверняка был неизвестным устройством. Файл usb.ids ищется по фиксированному при сборке пути, которого нет. Возможно используется только для имен устройств. Значит не судьба с камерой. Найдите UVC камеру — с ней будет проще. У Вас что за камера?
78 Ответ от xatriх 2013-12-10 23:04:51
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
мыш наверняка был неизвестным устройством. Файл usb.ids ищется по фиксированному при сборке пути, которого нет. Возможно используется только для имен устройств. Значит не судьба с камерой. Найдите UVC камеру — с ней будет проще. У Вас что за камера?
Мышь определил точно по модели. Камера в журнале кинетика видится:
Manufacturer=Linux 2.6.23.17 dwc_otg_hcd
S Product=DWC OTG Controller
S SerialNumber=lm0
C * #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr= 0mA
I * If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E Ad=81(I) Atr=03(Int.) MxPS= 4 Ivl=256ms
T Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D Ver= 2.00 Cls=ef(unk. ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P Vendor=1e4e ProdID=0102 Rev= 0.02
S Manufacturer=Etron Technology, Inc.
S Product=USB2.0 Camera
C * #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
79 Ответ от xatriх 2013-12-11 03:10:28
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Читает он из storage. Обновил usb.ids и он увидел камеру. Подключаю к винде- все нормально, но при первом обращении программы для вэб-камеры вылетает ошибка.
D:\keenectik\usbip_windows_v0.2.0.0_signed>usbip -l 192.168.1.1
— 192.168.1.1
1-1: Cubeternet : GL-UPC822 UVC WebCam (1e4e:0102)
: /sys/devices/lm0/usb1/1-1
: Miscellaneous Device / ? / Interface Association (ef/02/01)
: 0 — Video / Video Control / unknown protocol (0e/01/00)
: 1 — Video / Video Streaming / unknown protocol (0e/02/00)
D:\keenectik\usbip_windows_v0.2.0.0_signed>usbip -a 192.168.1.1 1-1
new usb device attached to usbvbus port 1
usbip err: usbip_windows.c: 374 (write_to_dev) read from sock ret 0 not equal a
usbip_header
80 Ответ от Zyxmon 2013-12-11 07:16:44
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Камера в журнале кинетика видится:
Это UVC камера, попробуйте подключить стандартным способом. Но не факт, что заработает. Из обсуждения разработчико UVC дров для Linux
I just want to report 1e4e:0102 USB 2.0 camera by Etron Technologies does appear to work after updating my distribution with the media built git repository. It didn’t work at all before that. I’m using Linux Mint 10.
Сообщение относительно свежее, свежее дров в исходниках кинетика. Но все равно попробуйте.
Читает он из storage. Обновил usb.ids и он увидел камеру.
Он это кто? Мне лучше известно — как указан путь к файлу usb.ids. Скорее всего читает с usb носителя. Путь задается при сборке тут — http://zyxel-keenetic-packages.googleco … n_r99.diff относительно datadir задаваемого тут http://zyxel-keenetic-packages.googleco … p/Makefile
Несложно собрать с путем в /storage. Не думаю, что в коде идет поиск этого файла в разных директория, но проверю.
81 Ответ от xatriх 2013-12-11 11:53:00
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Zyxmon, Стандартным способом- это в теме http://forum.zyxmon.org/topic69-draiver … netik.html , если да то мне места на storage не хватит под motion и т.д. Хочу все сделать без usb-хаба.Хочу повесить роутер с камерой у тещи при входе, пока она в больнице (отдали тещи собаку, а она жалуется и соседи что собака сильно воет) хочу понаблюдать. Питание беру от входного звонка, а если навешать хабы, мигающие флэшки это вызовет подозрение. Вообще думал засунуть камеру в кинетик там места хватит. Извините за оффтоп, но уже зае..
82 Ответ от Zyxmon 2013-12-11 12:32:54
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Попробуйте другую, кто же запрещает.
Вот бинарник http://keenetic.zyxmon.org/files/usbipd в котором прописан правильный путь для /storage/system/usr/share/usbip/usb.ids при установке в /storage. Перед тем, как все ставить в /storage нужно все проверять с флешкой/hdd. Единственная проблема — некоторые камеры через usb хаб не работают, скорее всего и Ваша первая.
83 Ответ от xatriх 2013-12-11 13:00:26
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Спасибо. Заменил бинарник — опять перестала определятся (мистика) , но в винде также монтируется. При обращении к ней опять ошибка и камера отваливается.
D:\KEENETIC\usbip_windows_v0.2.0.0_signed>D:\KEENETIC\usbip_windows_v0.2.0.0_si
ned\usbip.exe -l 192.168.1.1
— 192.168.1.1
1-1: unknown vendor : unknown product (1e4e:0102)
: /sys/devices/lm0/usb1/1-1
: Miscellaneous Device / ? / Interface Association (ef/02/01)
: 0 — Video / Video Control / unknown protocol (0e/01/00)
: 1 — Video / Video Streaming / unknown protocol (0e/02/00)
D:\KEENETIC\usbip_windows_v0.2.0.0_signed>usbip.exe -a 192.168.1.1 1-1
new usb device attached to usbvbus port 1
usbip err: usbip_windows.c: 374 (write_to_dev) read from sock ret 0 not equal a
usbip_header
84 Ответ от xatriх 2013-12-11 13:04:40
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Да и еще теперь после выполнения usbipd -D ничего не пишет. Раньше какой-то ответ был.
Может так и надо.
Отредактировано xatriх (2013-12-11 13:05:25)
85 Ответ от Zyxmon 2013-12-11 13:10:33
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
xatriх, не забывайте смотреть в логах (журнале) кинетика, там может быть инфа.
PS Я бы затею с камерой через usbip оставил. Правда, не помню, что там работало через usbip с белыми.
86 Ответ от xatriх 2013-12-11 13:17:09
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Попробую найти другую камеру. Просто очень хочется. Народ на кривых *****-ах c openwrt все прикручивает, хочу дожать. Мыш то подцепилась и отлично работала.
87 Ответ от xatriх 2013-12-11 13:22:21
Re: USB/IP на кинетиках (Подключаем ЛЮБЫЕ usb устройства к роутеру)
Вот лог кинетика:
сначала все путем
июн 00:00:14 kernel /home/papa/keenetic.all/build_dir/linux-keenetic/usbip-1/usbip_common.c: usbip common driver$Id: usbip_common.c 66 2008-04-20 13:19:42Z hirofuchi $
21 июн 00:00:14 kernel usbip: this device 1-1 is not in match_busid table. skip!
21 июн 00:00:14 kernel usbip: this device 1-1 is not in match_busid table. skip!
21 июн 00:00:14 kernel usbcore: registered new interface driver usbip
21 июн 00:00:14 kernel /home/papa/keenetic.all/build_dir/linux-keenetic/usbip-1/stub_main.c: Stub Driver for USB/IP$Id: stub_main.c 66 2008-04-20 13:19:42Z hirofuchi $
21 июн 00:00:16 syslog listen at [0.0.0.0]:3240
21 июн 00:00:16 kernel usbip: USB/IP Stub: register a new interface (bus 1 dev 2 ifn 0)
21 июн 00:00:16 kernel usbip: USB/IP Stub: register a new interface (bus 1 dev 2 ifn 1)
21 июн 00:00:16 syslog usbipd start (usbip 0.1.7 ($Id: stub_server.c 42 2007-09-07 12:07:51Z hirofuchi $))
но после обращения проги к камере в винде:
11 дек 13:55:53 kernel usbip: set_interface done: inf 1 alt 11
11 дек 13:55:53 kernel stub_rx : ***ERROR*** (/home/papa/keenetic.all/build_dir/linux-keenetic/usbip-1/stub_rx.c,531) stub_recv_cmd_submit: malloc x_buff
11 дек 13:55:53 kernel usbip: stopped by a call of usb_kill_urb()because of cleaning up a virtual connection
11 дек 13:55:53 kernel usbip: stopped by a call of usb_kill_urb()because of cleaning up a virtual connection
11 дек 14:01:54 syslog usbip err: stub_server.c: 307 (listen_all_addrinfo) no socket to listen to
Отредактировано xatriх (2013-12-11 13:26:09)
Проброс видеокарты в виртуальную машину
Две разные системы (win + linux) на одной аппаратной базе — реальность. В этом нет ничего нового или инновационного (на данный момент времени), но если требуется максимальная производительность гостевой системы, то не обойтись без проброса реальных устройств в виртуальную машину. Проброс сетевых карт, usb-контроллеров (etc) экстраординарных особенностей не несёт, а вот попытка «шаринга» ресурсов видеокарты и процессора вполне может принести некоторое количество проблем.
Итак, а для чего, собственного говоря, городить системы с полнофункциональным использованием ресурсов GPU и CPU? Самый простой и очевидный ответ — игры (широко известный факт — если не большинство, то очень многие, написаны под ОС Windows). Другой вариант — полноценное рабочее место с возможностью запуска требовательных приложений (например, CAD-софта), быстрым бэкапом (скопировать файл ВМ куда проще, чем создавать полную копию HDD/SSD) и опцией полного контроля сетевого трафика гостевой системы.
2. Аппаратная часть
Процессор: Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz
Материнская плата: ASRock Z390 Phantom Gaming 4S
Видеокарта 0 (для проброса в ВМ): Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X]
Видеокарта 1 (для хост-системы): Park [Mobility Radeon HD 5430]
USB-контроллер (для проброса в ВМ и последующего подключения периферийных устройств, например, клавиатуры): VIA Technologies, Inc. VL805 USB 3.0 Host Controller
3. Настройки ОС
В качестве хост-системы выбрана ОС AlmaLinux 8 (вариант установки«Server with GUI»). Долгое время пользовался CentOS 7/8, поэтому, думаю, выбор тут очевиден.
Первое, что необходимо сделать, — это ограничить использование видеокарты, предназначенной для использования в ВМ, хост-системой. Для этого применяем ряд команд и настроек:
1) с помощью команды « lspci -nn | grep RX » получаем уникальные идентификаторы видеокарты. Т. к. видеокарта RX-серии, то, соответственно, ищем в выводе lspci (утилита устанавливается посредством команды « dnf install pciutils ») по этим двум символам. Вывод получим примерно такой (выделенные подстроки — это и есть искомые идентификаторы устройств) —
«02:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Lexa PRO [Radeon 540/540X/550/550X / RX 540X/550/550X] [1002:699f] (rev c7)
02:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Baffin HDMI/DP Audio [Radeon RX 550 640SP / RX 560/560X] [1002:aae0] », где 1002:699f — идентификатор VGA-контроллера, а 1002:aae0 — встроенной аудиокарты. Также запоминаем идентификаторы «02:00.0» и «02:00.1»;
2) добавив к команде « lspci -nn » ключ « k » (« lspci -nnk ») находим в выводе устройство «1002:699f» и запоминаем значение «Kernel driver in use» . В моём случае — это « amdgpu »;
3) в файле « /etc/default/grub » находим строку, начинающуюся с « GRUB_CMDLINE_LINUX », и добавляем после « quiet » значения «intel_iommu=on iommu=on rd.driver.pre=pci-stub pci-stub.ids=1002:699f,1002:aae0», где « intel_iommu / iommu » – параметры, отвечающие за поддержку технологии IOMMU (технология взаимодействия виртуальных машин с реальным оборудованием), «rd.driver.pre=pci-stub» — указание на принудительную первоочередную загрузку фиктивного драйвера pci-sub, «pci-stub.ids» — перечисление устройств, для которых при загрузке ядра необходимо использовать фиктивный драйвер (т.е. происходит изоляция устройств для дальнейшего использования в виртуальных машинах). Если на хост-машине используется CPU от AMD, то «intel_iommu» меняем на «amd_iommu»;
4) в файл « /etc/modprobe.d/local.conf » добавляем строки « blacklist amdgpu » и « options pci-stub ids=1002:699f,1002:aae0 », где « blacklist amdgpu » — явное указание на запрет использования драйвера AMD для графических устройств, а « options pci-stub ids=1002:67ff,1002:aae0 » — явное указание на использование фиктивного драйвера для соответствующих идентификаторов устройств;
5) выполняем команду « grub2-mkconfig -o /boot/efi/EFI/almalinux/grub.cfg » (т.е. пересоздаём конфигурационный файл загрузчика GRUB). Если речь не про EFI-загрузку, то команда выглядит так — « grub2-mkconfig -o /boot/grub2/grub.cfg »;
6) выполняем команду « dracut —regenerate-all —force » для пересоздания образа initramfs (initial RAM disk image, загружаемый в оперативную память файл с образом файловой системы), используемого при загрузке Linux в качестве первоначальной корневой файловой системы;
7) перезагружаем хост виртуализации.
Смысл этих настроек в том, чтобы ограничить использование определённых устройств при загрузке. Например, до прописания параметров в выводе команды «lspci -v» для VGA-контроллера будет присутствовать подстрока « Kernel driver in use: amdgpu », а после перезагрузки – « Kernel driver in use: pci-stub ». При старте же ВМ с Windows (и после проброса устройств) – “ Kernel driver in use: vfio-pci ” (в чём можно убедиться после запуска созданной ВМ). Важный момент — используемая для хост-системы видеокарта должна использовать драйвера, отличные от используемых для пробрасываемой видеокарты, например, в моём случае используется «Radeon HD 5430», драйвер для которой — это «radeon» (в выводе « lspci -v » – « Kernel driver in use: radeon »).
4. Установка софта для виртуализации
1) « dnf install epel-release ».
2) « dnf install qemu-kvm qemu-img libvirt virt-install libvirt-client virt-viewer virt-manager seabios numactl perf cockpit cockpit-machines xauth virt-top libguestfs-tools ».
3) « dnf install @virt ».
4) Optional. « dnf install perl » (Perl – one love).
5. Настройки ВМ QEMU-KVM via virt-manager
Предварительно скачиваем iso-образ Windows 10 и драйвера Virtio от RedHat (тоже в виде iso-образа).
При первоначальной установке всегда ставим галочку « Customize configuration before install ».
1) Указываем iso-образ устанавливаемой операционной системы (например, Windows 10). Также добавляем дополнительное устройство вида «CD-ROM» и монтируем в доп. устройство iso-образ с драйверами Virtio.
2) Для виртуального HDD (куда планируется установка ОС) выставляем: « Bus type = Virtio ». Тип виртуального диска — qcow2 или raw.
3) Для более эффективной работы размещаем основной виртуальный диск для ВМ на SSD.
4) Модель сетевой карты — virtio.
5) Overview: chipset = “Q35”, firmware = “UEFI x86_64: /usr/share/OVMF/OVMF_CODE.secboot.fd”.
6) OS Information: Operation System = “Microsoft Windows 10”.
7) CPU (соответствующие блоки в XML должны выглядеть именно так, если речь про аналогичную аппаратную конфигурацию):
Rescue/Deploy
Здесь описывается технология массового развёртывания дистрибутивов Альт в промышленных масштабах, а именно типовая процедура подготовки эталонного компьютера и образа загрузочного локально подключаемого носителя для клонирования. Такой носитель с эталонными образами мы называем «деплойной системой» (деплойным USB-стиком). Также здесь описан способ массового развёртывания ОС Альт по сети с использованием подготовленного деплойного USB-стика, включая настройку сервера.
| Данная страница находится в разработке. Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной. |
- 1 Создание деплойного USB-стика
- 1.1 Системные требования
- 1.2 Общий план действий
- 1.3 Предварительные условия
- 1.4 Черновая установка на целевой компьютер
- 1.5 Чистовая установка в виртуальной среде
- 1.6 Снятие образов файловых систем с эталонного компьютера
- 1.7 Подготовка деплойного скрипта
- 1.8 Создание финального образа деплойной системы
- 1.9 Запись финального образа на физический носитель
- 1.10 Заключительные шаги
- 2.1 Шаги настройки после запечатывания эталонного образа
- 2.2 Режим OEM-установки дистрибутива Альт Рабочая станция К 10
- 2.3 Возможный режим OEM-установки некоторых будущих дистрибутивов
- 2.4 Пример использования alterator-setup
- 3.1 Общая схема сетевой загрузки
- 3.2 Описание конфигурации
- 3.3 Подготовка к настройке
- 3.4 Установка пакетов для сервера сетевой загрузки
- 3.5 Настройка сети сервера
- 3.6 Настройка DHCP сервера
- 3.7 Настройка tftp и xinetd
- 3.8 Настройка nginx
- 3.9 Настройка nfs
- 4.1 Монтирование образа для сетевой загрузки
- 4.2 Подготовка iPXE
Создание деплойного USB-стика
Вкратце: любой пользователь ОС Альт может сделать резервную копию своей системы для последующего восстановления всего двумя командами: system-backup — для снятия бэкапов и iso2stick — для создания загрузочного носителя с этими образами. Описание утилиты iso2stick из пакета usermode-fs-tools находится в отдельной статье.
Системные требования
- Целевой компьютер «заказчика», для которого делается деплойная система.
- Мощный компьютер с достаточным местом на диске и аппаратной виртуализацией.
- Желательно иметь большой объём памяти, чтобы работать с образами на TMPFS.
- Бранч p8, но лучше p9, p10 или Сизиф на хостовой системе, на которой делаем USB-стик.
- Установленные пакеты usermode-fs-tools, qemu-system-x86-core или qemu-kvm, qemu-img.
- Для работы с UEFI-загрузкой сюда же надо заранее установить пакет edk2-ovmf.
- Заранее скаченный образ спасательной системы ALT Rescue / x86_64.
- Пакеты проприетарного ПО, которые мы собираемся включить в образ.
- Триальные лицензии к проприетарному ПО, если таковые требуются.
- «Боевые» лицензии к проприетарному ПО, если таковые требуются.
Общий план действий
- Произвести ручную установку ОС Альт и другого ПО на целевой компьютер «заказчика».
- Настроить в виртуальной среде эталонный компьютер с учётом выявленных на «железе» нюансов.
- Загрузиться с ALT Rescue и снять с виртуалки образы файловых систем.
- Переместить каталог с этими образами на свой компьютер, если это ещё не сделано.
- Подготовить деплойный скрипт — есть масса готовых примеров и ожидается альтернатива.
- Объединить спасательную систему ALT Rescue с образами эталонного компьютера и деплойным скриптом.
- Записать получившийся образ USB-стика на физический носитель (HDD или флэшку USB 3.0).
- Проверить контрольные суммы методом обратного считывания с внешнего HDD или флэшки.
- Проверить работу деплойной системы и целевого компьютера после процедуры развёртывания.
- При наличии ошибок в системе развёртывания вернуться к шагу подготовки деплойного скрипта.
Предварительные условия
Необходимо заранее определить, с какими параметрами должна устанавливаться ОС Альт: логины и пароли пользователей, пароль root, ключи ssh, пожелания по разметке диска, требуется ли автоматический вход в графическую систему, пароль на загрузчик grub (если нужен), выбор компонентов ПО, в т.ч. из репозитория после установки, возможно какие-то другие требования.
Важно заранее выяснить у производителя проприетарного ПО, как оно переносит «переезд» на другое «железо» в уже установленном состоянии, насколько оно привязывается к конкретной инсталляции, поскольку есть программы, требующие активации. Их либо нельзя поставлять в уже установленном виде, а надо инсталлировать после процедуры развёртывания на целевом «железе», либо нужно в процессе развёртывания привязывать к такому ПО новую «боевую» лицензию. Лучше заранее выяснить у производителя ПО все подобные рекомендации по массовому развёртыванию. Например:
- ОС Альт допускает массовое развёртывание, не требует активации, при переносе на другое «железо» можно привязать ОС к этому новому железу.
- Антивирус Касперского с агентом 10 и 11 версии допускает массовое развёртывание: в эталонном образе следует использовать файл ответов, триальную лицензию, подключение к Интернет, а на этапе развёртывания необходимо привязывать «боевую» лицензию к целевому «железу». Другая альтернатива: после установки пакетов вообще не выполнять донастройку, просто отключить службы Касперского и агента. В первом случае в целевую систему попадёт полностью готовый к работе антивирус, во втором случае в образ не попадёт база антивирусных сигнатур, требуется обратное включение служб, донастройка и активация (ручная либо централизованная с Kaspersky Security Center).
- ViPNet PKI Client версий 1.3, 1.4 и 1.6 допускает массовое развёртывание: в эталонном образе следует использовать триальную лицензию и подключение к Интернет, а на этапе развёртывания необходимо привязывать «боевую» лицензию к целевому «железу».
- Dallas Lock Linux версии 2.0 не допускает массовое развёртывание: в эталонный образ можно поместить инсталлятор со скриптом установки и лицензией, а устанавливать продукт следует после развёртывания на целевом «железе».
- TrueConf клиент для Linux версий 7.x допускает массовое развёртывание, не требует активации, в настройках эталонного компьютера следует учитывать веб-камеру целевого «железа».
- Настольные продукты МойОфис Стандартный допускают массовое развёртывание, не требуют активации, к «железу» не привязываются.
Черновая установка на целевой компьютер
Цель этой ручной установки: выяснить на «голом железе» все нюансы инсталляции и настройки ОС, прикладного ПО, определиться с более подходящими режимом загрузки (Legacy/UEFI) и видео-модулем xorg, работой «спящего» и «ждущего» режимов, проверить устанавливаемость и работу проприетарных программ с триальными лицензиями. При такой проверке можно дать себе волю порезвиться с домашним каталогом пользователя, запускать и тестировать тут можно любые приложения. Обратите внимание на название проводного сетевого интерфейса в /etc/net/ifaces — вероятно, в виртуалке название интерфейса будет иным, так что это придётся учитывать.
Чистовая установка в виртуальной среде
Чистовая инсталляция ОС Альт и другого ПО может быть как ручной, так и полностью автоматической, скриптами можно автоматизировать все или часть операций. При такой установке нужно минимизировать запуск программ, выход в Интернет, если что-то тестируем, то не здесь и не сейчас. Почему лучше делать это в виртуальной среде, а не на физическом хосте?
- Можно и на физическом хосте, но нужна гарантия, что образы эталонного компьютера не привязаны к нему.
- Значительная экономия времени, если образы из виртуалки сохраняются прямо в оперативку хоста оператора.
- Можно быстро создавать точки состояния системы (снэпшоты) и быстро к ним возвращаться, в случае необходимости.
- Так будет намного проще автоматизировать очень многие процессы создания эталонных образов, некоторые операции приходится выполнять неоднократно (нужна воспроизводимость), у оператора может быть своя библиотека готовых наработок, которые можно повторно использовать.
Если в качестве среды виртуализации выступает PVE или что-то подобное, снятые с виртуалки образы потом придётся «перегонять» на машину оператора по сети. Если же использовать qemu локально, образы можно сохранять сразу на диск или в TMPFS хостовой системы. Устанавливать ОС в виртуалку лучше в том режиме загрузки, который будет использоваться на целевом «железе» при развёртывании. Если деплойная система должна быть универсальной, предпочтение следует отдавать режиму загрузки UEFI. В процессе установки нужно будет указать имя компьютера — укажите тут «computername.нужный.вам.домен«.
Подготовка среды для локальной установки ОС в qemu, режим загрузки BIOS:
$ GUEST="WS91bios" $ MEDIA="$HOME/iso/alt-workstation-9.1-x86_64.iso" $ RESCUE="$HOME/iso/regualar-rescue-latest-x86_64.iso" $ cd ~/path/to/workdir/ $ qemu-img create -f qcow2 -o size=30G "$GUEST.img"
Разовый запуск инсталлятора ОС Альт в режиме загрузки BIOS:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -cpu kvm64 \ -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew \ -cdrom "$MEDIA" -boot d -no-reboot
Сразу после инсталляции виртуальная машина выключится. Не все указанные тут опции могут оказаться подходящими к вашей версии qemu, периодически интерфейс меняется, смотрите детали в документации.
Последующий запуск ОС в режиме загрузки BIOS:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -cpu kvm64 \ -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -fsdev local,security_model=none,id=fsdev1,path="$PWD" \ -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=host \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew
Подготовка среды для локальной установки ОС в qemu, режим загрузки UEFI:
$ GUEST="WS91uefi" $ MEDIA="$HOME/iso/alt-workstation-9.1-x86_64.iso" $ RESCUE="$HOME/iso/regualar-rescue-latest-x86_64.iso" $ cd ~/path/to/workdir/ $ cp -Lf /usr/share/OVMF/OVMF_CODE.fd bios.bin $ cp -Lf /usr/share/OVMF/OVMF_VARS.fd efivars.bin $ qemu-img create -f qcow2 -o size=30G "$GUEST.img"
Разовый запуск инсталлятора ОС Альт в режиме загрузки UEFI:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -smbios type=0,uefi=on \ -cpu kvm64 -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=pflash,format=raw,readonly,file="bios.bin" \ -drive if=pflash,format=raw,file="efivars.bin" \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew \ -cdrom "$MEDIA" -boot menu=on -no-reboot
В процессе установки на вопрос о том, куда ставить загрузчик, нужно выбрать либо «EFI (сначала очистить NVRAM)«, при наличии такого варианта, либо просто «EFI (рекомендуемый)«. Сразу после инсталляции виртуальная машина выключится. Не все указанные тут опции могут оказаться подходящими к вашей версии qemu, периодически интерфейс меняется, смотрите детали в документации.
Последующий запуск ОС в режиме загрузки UEFI:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -smbios type=0,uefi=on \ -cpu kvm64 -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=pflash,format=raw,readonly,file="bios.bin" \ -drive if=pflash,format=raw,file="efivars.bin" \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -fsdev local,security_model=none,id=fsdev1,path="$PWD" \ -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=host \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew
При запуске виртуалок с указанными опциями, текущий каталог хоста становится «точкой обмена данными» между хостом и гостевой системой, кроме того, с хостовой системы можно зайти в гостевую по ssh такой командой:
$ ssh -p 5555 -o NoHostAuthenticationForLocalhost=yes user@localhost
где user — логин обычного пользователя в гостевой системе. Это может оказаться полезным и для автоматизаци, и чтобы копировать в консоль через буфер обмена, а не набирать полностью команды в гостевой системе. Для монтирования общего каталога выполняем в консоли гостевой системы:
$ su- # mkdir /tmp/host # mount -t 9p host /tmp/host
Теперь в каталоге /tmp/host гостевой системы будет то же, что и в текущем каталоге хостовой системы.
Обычно сразу после установки систему и ядро обновляют до того, как ставить что-то ещё:
$ su- # apt-get update # apt-get dist-upgarde # update-kernel # reboot $ su- # remove-old-kernels # apt-get autoremove # apt-get clean
Теперь можно ставить другие пакеты, проприетарное ПО, настраивать систему и среду пользователя. При настройке системы уделите внимание двум файлам: /etc/fstab и /etc/sysconfig/grub2 — в виртуалке жёсткий диск называется /dev/sda, а в этих двух файлах прописаны UUID’ы. При развёртывании на целевое «железо» такая система не загрузится, если не восстановить те же UUID’ы, либо если сразу на этапе настройки не поменять эти UUID’ы на имена дисков и разделов, в чём может помочь команда lsblk -f.
Если уже известно, что на целевом «железе» не работает «ждущий» и/или «спящий» режим с имеющимся ядром, ядерным модулем drm и видео-модулем xorg, если это никак «не лечится», просто отключите кнопки в интерфейсе для соответствующих режимов сна:
# Отключаем "ждущий" режим systemctl mask suspend.target # Отключаем "спящий" режим systemctl mask hibernate.target
Когда машина окончательно настроена, убираем с неё явно лишние файлы и временно записанные дистрибутивы, в последнюю очередь меняем пароли root и пользователя на реальные, под конец выполняем:
$ su- # apt-get autoremove # apt-get clean # init 0
После этого можно сделать промежуточный снэпшот на случай необходимости в донастройке.
Снятие образов файловых систем с эталонного компьютера
Для этой операции потребуется заранее скаченный ISO-образ ALT Rescue с утилитой system-backup и поддержкой rescue-launcher. Он же будет использоваться для создания финального образа USB-стика (следующий раздел). Следует отметить, что не все установочные диски ОС Альт удовлетворяют этим требованиям, даже если содержат файл второй стадии загрузки rescue, но свежие регулярные сборки ALT Rescue данным требованиям удовлетворяют.
Загрузка с ALT Rescue на виртуалке qemu в режиме BIOS:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -cpu kvm64 \ -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -fsdev local,security_model=none,id=fsdev1,path="$PWD" \ -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=host \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew \ -cdrom "$RESCUE" -boot d
Загрузка с ALT Rescue на виртуалке qemu в режиме UEFI:
$ qemu-system-x86_64 -name "$GUEST" \ -machine type=q35,accel=kvm -enable-kvm -smbios type=0,uefi=on \ -cpu kvm64 -smp sockets=1,cores=2 -m 4G -device ahci,id=ahci \ -drive if=pflash,format=raw,readonly,file="bios.bin" \ -drive if=pflash,format=raw,file="efivars.bin" \ -drive if=none,id=drive0,format=qcow2,file="$GUEST.img" \ -device ide-drive,drive=drive0,bus=ahci.0 \ -netdev user,id=net0,restrict=no,hostfwd=tcp::5555-:22 \ -device virtio-net,netdev=net0,id=eth0 \ -vga virtio -show-cursor -sdl -ctrl-grab \ -fsdev local,security_model=none,id=fsdev1,path="$PWD" \ -device virtio-9p-pci,id=fs1,fsdev=fsdev1,mount_tag=host \ -usb -device qemu-xhci -device usb-ehci -no-fd-bootchk \ -rtc base=localtime,clock=host,driftfix=slew \ -cdrom "$RESCUE" -boot menu=on
В консоли загрузившейся виртуалки выполняем:
# mkdir /mnt/backup # mount -t 9p host /mnt/backup # system-backup -A sha256 -b /mnt/backup -Rc # init 0
В результате этой долгоиграющей операции в текущем каталоге хоста появится подкаталог с сегодняшней датой, в котором будут находиться образы эталонного компьютера, перед их снятием система будёт жёстко почищена так, что пользоваться ей уже будет невозможно, единственный сетевой интерфейс будет переименован в «eth0«. После этого можно смело удалить из текущего каталога другие файлы, связанные с этой виртуалкой (WS91bios.img либо WS91uefi.img + bios.img + efivars.img).
Если вы работаете с PVE или другой не локальной системой виртуализации, либо если образы снимаются с реального «железа», придётся поступить иначе. К эталонной машине подключается внешний жёсткий диск (в виртуальной среде — второй виртуальный диск), при необходимости, форматируется. Образы будут сниматься на этот второй диск, а затем копироваться на компьютер оператора. Загружаем эталонный компьютер с ALT Rescue, затем:
# Смотрим, какие диски подключены lsblk -f # Если нужно, создаём единственный раздел на втором диске и форматируем его fdisk /dev/sdb mkfs.ext4 -q -j -L BACKUP /dev/sdb1 # Куда будем сохранять образы mkdir /mnt/backup mount /dev/sdb1 /mnt/backup # Жёстко "чистим" и бэкапим систему system-backup -A sha256 -b /mnt/backup -Rc # Поднимаем сеть и ssh ip l dhcpcd -i eth0 echo "PermitRootLogin yes" >> /etc/openssh/sshd_config ssh-keygen -A service sshd start ip a # Подключаемся с хоста к этой машине и забираем с неё образы к себе # $ scp -r root@:/mnt/backup/$(date +%Y-%m-%d) ./ # Выключаем виртуалку init 0
Будьте внимательны с именами дисков и разделов, в случае отличий. Перегонять образы по сети можно и другими способами. Например, можно сначала поднять сеть в ALT Rescue, смонировать сетевой ресурс cifs, и бэкапить эталонный компьютер сразу на SAMBA-сервер.
Подготовка деплойного скрипта
Теперь в каталог с образами эталонного компьютера нужно сложить скрипт autorun, примеры можно найти здесь. Необязательно делать его исполняемым. В этом скрипте следует учесть, что на эталонном компьютере диск назывался /dev/sda, и если на целевом «железе» диск называется иначе, то сразу после восстановления из образов следует переименовать диск и разделы в соответствующих файлах (/etc/fstab и /etc/sysconfig/grub2). В скрипте необходимо восстанавливать UUID’ы при создании разделов, если это не было учтено в настройке эталонного компьютера. Также в скрипте нужно переименовать проводной интерфейс /etc/net/ifaces/eth0 в то название, что было определено на этапе ручной установки на «голое железо», если имя отличается от «eth0» и если этот каталог не был переименован в эталонном компьютере перед снятием с него образов.
Создание финального образа деплойной системы
# Переименуем каталог с образами и деплойным скриптом $ mv $(date +%Y-%m-%d) sys-part # Создадим ещё один каталог $ mkdir efi-part # Поместим в этот каталог файл HpSetup.txt, полученный путём сохранения настроек BIOS на флэшку с ФС FAT # Создадим образ USB-стика с универсальной загрузкой grub $ iso2stick -qsd -D . -- "$RESCUE" . # Если нужен USB-стик только с BIOS-загрузкой $ iso2stick -qb -D . -- "$RESCUE" . # Если нужен USB-стик только с 64-бит UEFI-загрузкой и Secure Boot $ iso2stick -qus -D . -- "$RESCUE" . # В простом случае все команды выше можно заменить одной (на примере BIOS-загрузки) $ iso2stick -qb -D ./$(date +%Y-%m-%d) -- "$RESCUE" .
Запись финального образа на физический носитель
Это единственная операция, для которой требуются полномочия root на хосте оператора. Нужно быть очень внимательным с именами дисков, чтобы случайно не остаться без рабочей системы. Вставляем USB-флэшку, на которой нет ценных данных, – её сейчас будем перезаписывать. Ещё лучше использовать для тех же целей внешний USB 3.0 HDD. Логинимся в рутовую консоль и отмонтируем флэшку, предварительно выяснив её название:
$ su- # mount | tail . /dev/sdb1 on /media/MYDATA type vfat (rw. )
Обычно последняя строка, самое первое поле (/dev/sdb1 в данном примере). Именно это устройство и нужно отмонтировать. Однако на флэшке может быть несколько разделов и отмонтировать нужно все, поэтому надёжнее сделать так:
# umount /dev/sdb[1-9]*
Здесь и далее по тексту наша флэшка называется /dev/sdb, у вас это может называться иначе, так что будьте внимательны! Записываем созданный образ на USB-флэшку или USB HDD:
# dd if=/path/to/usbstick.img of=/dev/sdb bs=1M iflag=fullblock oflag=direct status=progress; sync
Проверить контрольную сумму методом обратного считывания можно так:
# dd if=/dev/sdb bs=1M count= iflag=fullblock status=none |sha256sum # dd if=/dev/sdb bs=1M count= iflag=fullblock status=none |md5sum
где — число целых блоков, записанных предыдущей командой. Контрольные суммы должны совпасть с теми, что записаны в файлах checksum.256 и checksum.MD5, лежащих рядом с образом USB-стика.
Заключительные шаги
Входим в BIOS HP Setup и восстанавливаем настройки BIOS из файла HpSetup.txt, записанного на флэшку. Перезагружаемся с этой же флэшки или внешнего HDD на целевом компьютере, используя boot-меню BIOS. В загрузочном меню grub выбираем второй пункт «Rescue Deploy» и засекаем время. Через несколько минут или секунд компьютер будет восстановлен и выключен. Можно выдёргивать внешний USB-диск, включать компьютер и проверять, всё ли правильно.
OEM Setup
Если нужно, чтобы после развёртывания системы с деплойного носителя пользователя опрашивали при первом включении на предмет пароля root, логина и пароля обычного пользователя, даты, времени, выбора временной зоны, языка и раскладки клавиатуры, просили принять лицензию, то такую эталонную систему можно назвать OEM, а соответствующие шаги — экраном приветствия (OEM Setup или OOBE в известной терминологии). В дистрибутивах Альт поддержка такой установки может быть реализована несколькими способами.
Шаги настройки после запечатывания эталонного образа
Основной (рекомендуемый) способ — установить пакет alterator-setup непосредственно перед снятием бэкапа с эталонной машины. Некоторые дистрибутивы Альт, не имеющие инсталлятора, поставляемые в виде готовой к использованию корневой системы (rootfs) также часто содержат этот пакет. Обратите внимание: после установки данного пакета уже нельзя будет перезагружаться обычным образом и продолжать настройку эталонной системы! При первом запуске после включения будет выполнена первоначальная настройка по шагам, определённым в файле /etc/alterator-setup/steps:
- sysconfig: позволяет выбрать язык и раскладку клавиатуры, по умолчанию включен.
- setup-welcome: просто сообщает о начале процесса первоначальной настройки, по умолчанию выключен, поддерживается отдельным пакетом alterator-setup-welcome.
- notes-license: показывает текст лицензии и просит пользователя принять её, по умолчанию включен.
- net-eth: позволяет настроить локальную сеть при первом включении, по умолчанию выключен.
- net-wifi: позволяет настроить W-Fi при первом включении, по умолчанию выключен.
- datetime: позволяет определить временную зону, установить дату и время, по умолчанию включен.
- root: позволяет переопределить пароль суперпользователя, заданный в эталонном образе, по умолчанию включен.
- setup-kworkstation: позволяет выбрать обычных пользователей, определённых в эталонной системе, которых необходимо удалить вместе с принадлежащими им домашними каталогами. При этом флажками отмечается каждый пользователь с UID>=500 и устанавливается флажок подтверждения. Данный шаг поддерживается отдельным пакетом alterator-setup-kworkstation. По умолчанию такого шага не существует и он выключен.
- users: позволяет создать обычного пользователя и задать ему пароль, по умолчанию включен.
- setup-finish: сообщает о завершении первоначальной настройки и выполняет процедуру финальной очистки с переключением в обычный режим загрузки, так что должен быть включен всегда.
Достаточно внести изменения в файл /etc/alterator-setup/steps для определения шагов и их последовательности, это можно сделать как перед снятием бэкапа с эталонной машины, так и непосредственно в процессе развёртывания системы. Указанная стратегия с пакетом alterator-setup — единственная, позволяющая временно поработать с установленной системой для её тонкой настройки перед «запечатыванием». Другие описанные ниже способы подразумевают установку ОС на эталонную машину и снятие с неё бэкапа сразу, т.е. подготовка к OEM-шагам будет выполняться уже на стадии установки ОС.
Режим OEM-установки дистрибутива Альт Рабочая станция К 10
В дистрибутивах Альт Рабочая станция К, начиная с версии 10.0, появился режим OEM-установки, описанный в официальной документации: https://docs.altlinux.org/ru-RU/alt-kworkstation/10.2/html/alt-kworkstation/install-distro—install-oem—chapter.html . По сути это надстройка над alterator-setup, добавляющая пакеты alterator-setup-kworkstation, alterator-setup-welcome, вносящая изменения в набор шагов по умолчанию. Если не загружать дистрибутив сразу после его установки, не вносить никаких изменений, то при первом включении добавляется ряд шагов, перечисленных здесь: https://git.altlinux.org/gears/a/alterator-setup-kworkstation.git?p=alterator-setup-kworkstation.git;a=blob;f=alterator-setup-kworkstation/custom.steps, в том числе, весьма странный шаг с удалением раннее созданных пользователей.
Возможный режим OEM-установки некоторых будущих дистрибутивов
Если разработчики установочного ISO-образа дистрибутива версии 10.2 или выше предусмотрят возможность OEM-установки, подробно описанную здесь, то установить такую систему в режиме OEM можно с добавлением опции oem к параметрам загрузки. Другие возможности этого режима установки ОС описаны на соответствующей странице. Данный режим совсем не предназначен для работы на эталонном компьютере в промежутке между установкой ОС и запечатыванием образа.
Пример использования alterator-setup
Обратите внимание: пакет alterator-setup задействован во всех перечисленных вариантах. Далее приведён пример для первого варианта развётывания. В скрипт autorun вставим такие строки:
# Определяем шаги OEM Setup if [ -d "$destdir"/etc/alterator-setup ]; then cat >"$destdir"/etc/alterator-setup/steps notes-license root users setup-finish EOF fi
либо на эталонной системе перед снятием бэкапа создадим файл /etc/alterator-setup/steps с таким содержимым:
notes-license root users setup-finish
В чруте скрипта развёртывания также добавим команду:
# Удаление временного пользователя [ ! -d /home/oem ] || userdel -r -f oem
где oem — имя простого пользователя, созданного на эталонной системе, который мы хотим удалить при развёртывании.
Настройка сервера сетевой загрузки
Общая схема сетевой загрузки
ПК, на котором будет осуществляться установка ОС, должен поддерживать загрузку по сети.
Если ПК поддерживает только PXE (большинство сетевых карт старых ПК имеет именно прошивку PXE) и загрузка происходит в Legacy, то сначала загружается undionly.kpxe по tftp и ему передается управление:
. elsif option arch = 00:00 < # Legacy BIOSfilename "undionly.kpxe"; > .
undionly.kpxe необходим для того чтобы перейти (chainloading) от загрузчика PXE к загрузчику iPXE, который имеет гораздо больше возможностей по сетевой загрузке операционных систем (https://ipxe.org/howto/dhcpd#pxe_chainloading).
Когда осуществлен переход на iPXE, то он в свою очередь получает свои настройки от DHCP сервера. А именно то, что ему необходимо выполнить скрипт script.ipxe, который находится на HTTP сервере:
. if exists user-class and option user-class = "iPXE" filename "http://192.168.15.1/boot/script.ipxe"; > .
Содержимое скрипта script.ipxe:
#!ipxe kernel http://192.168.15.1/boot/vmlinuz initrd http://192.168.15.1/boot/full.cz imgargs vmlinuz initrd=full.cz fastboot live ramdisk_size=439569 stagename=rescue splash=0 showopts automatic=method:nfs,network:dhcp,server:192.168.15.1,directory:/srv/img tz=Europe/Moscow lang=ru_RU autorun=method:nfs,server:192.168.15.1,directory:/srv/img boot
Выполняя скрипт script.ipxe сетевой загрузчик получает ядро, initrd и передает им опции загрузки ОС:
automatic=method:nfs,network:dhcp,server:192.168.15.1,directory:/srv/img — директива указывает как будет загружаться ОС: по сетевому протоколу NFS, ресурс — /srv/img; ip адрес будет получен автоматически (dhcp). Подробнее Installer/common/propagator.
autorun=method:nfs,server:192.168.15.1,directory:/srv/img — директива указывает откуда rescue-launcher запускает скрипт развертывания autorun. Подробнее Rescue/Launcher.
Описание конфигурации
В качестве сервера сетевой загрузки используется Альт Сервер 10. При установке ОС необходимо выбрать профиль: Минимальная установка.
IP адрес сервера: 192.168.15.1/24
- /var/lib/tftpboot — в этом каталоге лежат загрузочные файлы для первоначальной загрузки по PXE и дальнейшего перехода на iPXE;
- /img — в этом каталоге располагаются образы;
- /srv/img — в этот каталог монтируется образ как loop устройство.
Подготовка к настройке
Обновление до актуального состояния:
$ su - # apt-get update # apt-get dist-upgrade # update-kernel # apt-get clean # reboot
Отключаем и останавливаем следующие службы:
# systemctl disable --now smartd nscd nslcdСоздадим необходимые каталоги:
# mkdir /img # mkdir /srv/img
Установка пакетов для сервера сетевой загрузки
# apt-get install ipxe-bootimgs # apt-get install dhcp-server nginx tftp tftp-server-xinetd nfs-utils nfs-server usermode-image-tools
Настройка сети сервера
enp6s19 — сетевой интерфейс для сетевой загрузки
Создаем каталог для настройки сетевого интерфейса (если его еще нет):
# mkdir /etc/net/ifaces/enp6s19Создаем конфигурационный файл интерфейса enp6s19:
# cat /etc/net/ifaces/enp6s19/options TYPE=eth CONFIG_WIRELESS=no BOOTPROTO=static SYSTEMD_BOOTPROTO=static CONFIG_IPV4=yes DISABLED=no NM_CONTROLLED=no SYSTEMD_CONTROLLED=no
# cat /etc/net/ifaces/enp6s19/ipv4address 192.168.15.1/24
«Поднимаем» интерфейс, если он в состоянии down:
# ifup enp6s19Итоговые настройки сети:
# ip addr show enp6s19 3: enp6s19: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 6e:f6:17:c7:21:a6 brd ff:ff:ff:ff:ff:ff inet 192.168.15.1/24 brd 192.168.15.255 scope global enp6s19 valid_lft forever preferred_lft forever inet6 fe80::6cf6:17ff:fec7:21a6/64 scope link valid_lft forever preferred_lft forever
Настройка DHCP сервера
# cat /etc/dhcp/dhcpd.conf authoritative; ddns-update-style none; ddns-domainname "test.alt"; option space altlinux; option altlinux.keydata code 2 = string; vendor-option-space altlinux; option arch code 93 = unsigned integer 16; option space ipxe; option ipxe.no-pxedhcp code 176 = unsigned integer 8; subnet 192.168.15.0 netmask 255.255.255.0 option nis-domain "test.alt"; option domain-name "test.alt"; option broadcast-address 192.168.15.255; option subnet-mask 255.255.255.0; default-lease-time 1800; max-lease-time 3600; option ipxe.no-pxedhcp 1; if exists user-class and option user-class = "iPXE" filename "http://192.168.15.1/boot/script.ipxe"; > elsif option arch = encode-int(16, 16) option vendor-class-identifier "HTTPClient"; filename "http://192.168.15.1/boot/ipxe-x86_64.efi"; > elsif substring (option vendor-class-identifier, 0, 9) = "PXEClient" next-server 192.168.15.1; # https://www.rfc-editor.org/rfc/rfc4578#section-2.1 # if option arch = 00:06 # EFI IA32 filename "ipxe-i386.efi"; > elsif option arch = 00:07 # EFI Byte Code filename "ipxe-x86_64.efi"; > elsif option arch = 00:09 # EFI x86-64 filename "ipxe-x86_64.efi"; # > elsif option arch = 00:10 < # EFI ARM32# filename "ipxe-arm32.efi"; # > elsif option arch = 00:11 < # EFI ARM64# filename "ipxe-arm64.efi"; > elsif option arch = 00:00 # Legacy BIOS filename "undionly.kpxe"; > > pool range 192.168.15.50 192.168.15.250; > >
Определяем для службы dhcpd интерфейс, на котором она будет работать:
# cat /etc/sysconfig/dhcpd # The following variables are recognized: DHCPDARGS=enp6s19
# systemctl enable --now dhcpdУбедимся что служба dhcpd запущена без ошибок:
# systemctl status dhcpd ● dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/lib/systemd/system/dhcpd.service; enabled; vendor preset: disabled) Active: active (running) since Mon 2022-11-07 13:26:12 UTC; 6s ago Docs: man:dhcpd(8) man:dhcpd.conf(5) Process: 4730 ExecStartPre=/etc/chroot.d/dhcpd.all (code=exited, status=0/SUCCESS) Main PID: 4830 (dhcpd) Tasks: 1 (limit: 4658) Memory: 7.3M CPU: 166ms CGroup: /system.slice/dhcpd.service └─ 4830 /usr/sbin/dhcpd -4 -f --no-pid enp6s19 ноя 07 13:26:12 host-215 dhcpd[4830]: All rights reserved. ноя 07 13:26:12 host-215 dhcpd[4830]: For info, please visit https://www.isc.org/software/dhcp/ ноя 07 13:26:12 host-215 dhcpd[4830]: Config file: /etc/dhcp/dhcpd.conf ноя 07 13:26:12 host-215 dhcpd[4830]: Database file: /state/dhcpd.leases ноя 07 13:26:12 host-215 dhcpd[4830]: PID file: /var/run/dhcpd.pid ноя 07 13:26:12 host-215 dhcpd[4830]: Listening on LPF/enp6s19/a2:8c:4e:5a:c4:8e/192.168.15.0/24 ноя 07 13:26:12 host-215 dhcpd[4830]: Sending on LPF/enp6s19/a2:8c:4e:5a:c4:8e/192.168.15.0/24 ноя 07 13:26:12 host-215 dhcpd[4830]: Sending on Socket/fallback/fallback-net ноя 07 13:26:12 host-215 dhcpd[4830]: Wrote 0 leases to leases file. ноя 07 13:26:12 host-215 dhcpd[4830]: Server starting service.
Настройка tftp и xinetd
/var/lib/tftpboot — корневой каталог tftp. Здесь будет распологаться загрузчик iPXE, которому PXE передаст управление.
Копируем необходимые файлы (iPXE) для первоначальной загрузки по TFTP:
# cp -v /usr/share/ipxe/ /var/lib/tftpboot/ '/usr/share/ipxe/ipxe-i386.efi' -> '/var/lib/tftpboot/ipxe-i386.efi' '/usr/share/ipxe/ipxe-x86_64.efi' -> '/var/lib/tftpboot/ipxe-x86_64.efi' '/usr/share/ipxe/undionly.kpxe' -> '/var/lib/tftpboot/undionly.kpxe'
Сконфигурируем xinetd.
# cat /etc/xinetd.d/tftp service tftp disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -4 -a 192.168.15.1 -u tftp -s /var/lib/tftpboot -m /etc/tftpd.map >
# cat /etc/tftpd.map # Convert backslashes to slashes rg \\ /
# cat /etc/xinetd.conf defaults log_type = SYSLOG authpriv info log_on_success = PID HOST DURATION log_on_failure = HOST instances = 100 per_source = 5 # only_from = 127.0.0.1 > includedir /etc/xinetd.d
# cat /etc/sysconfig/xinetd EXTRAOPTIONS='-remlock'
# systemctl enable --now xinetd.serviceНастройка nginx
Создадим файл конфигурации nginx следующего содержания:
# cat /etc/nginx/sites-available.d/boot.conf server listen 192.168.15.1:80; server_name 192.168.15.1; location / root /var/www/html; autoindex on; > access_log /var/log/nginx/access.log; >
Создадим каталог, доступ к которому будет предоставлять nginx:
# mkdir -p /var/www/htmlЗапустим службу nginx с созданным сайтом:
# ln -sv /etc/nginx/sites-available.d/boot.conf /etc/nginx/sites-enabled.d/boot.conf '/etc/nginx/sites-enabled.d/boot.conf' -> '/etc/nginx/sites-available.d/boot.conf'
# systemctl enable --now nginx.serviceСоздадим линки, чтобы nginx смог предоставить доступ к загрузчику iPXE и смонтированному образу:
# ln -sv /var/lib/tftpboot /var/www/html/boot '/var/www/html/boot' -> '/var/lib/tftpboot'
# ln -sv /srv/img/ /var/www/html '/var/www/html/img' -> '/srv/img/'
Настройка nfs
Добавляем каталог, в котором будет смонтирован образ, в /etc/exports:
# echo "/srv/img 192.168.15.0/24(ro,insecure,no_subtree_check,no_root_squash,crossmnt)" >> /etc/exportsОпция crossmnt обязательна. Иначе NFS не сможет работать с loop устройством.
# systemctl enable --now nfsМассовое развёртывание по сети с готового USB-стика
К этому моменту должен быть настроен сервер сетевой загрузки — Rescue/Deploy#Настройка_сервера_сетевой_загрузки.
Также есть готовый USB-стик (usbstick.img).
Монтирование образа для сетевой загрузки
Размещаем образ в /img.
Монтируем образ как loop устройство:
# losetup -P -r -f --show /img/usbstick.img /dev/loop0# ls -l /dev/loop0* brw-rw---- 1 root disk 7, 0 ноя 7 14:09 /dev/loop0 brw-rw---- 1 root disk 259, 0 ноя 7 14:09 /dev/loop0p1 brw-rw---- 1 root disk 259, 1 ноя 7 14:09 /dev/loop0p2
В образе 2 раздела. Необходим раздел с данными. Определить нужный раздел можно следующей командой:
# img2parts --list /img/usbstick.img part1 3M EFI part2 7.5G EXTFS
Монтируем loop0p2 устройство с данными:
# mount -o ro /dev/loop0p2 /srv/img/Содержимое смонтированного раздела:
# ls /srv/img/ AMDZ autorun boot chroot.sh esp.tgz files home.tgz lost+found META.tgz rescue root.tgzПодготовка iPXE
Создаем скрипт запуска загрузки iPXE следующего содержания:
# cat /var/lib/tftpboot/script.ipxe #!ipxe kernel http://192.168.15.1/img/boot/vmlinuz initrd http://192.168.15.1/img/boot/full.cz imgargs vmlinuz initrd=full.cz root=bootchain bootchain=fg,altboot fastboot live \ ramdisk_size=430785 stagename=rescue splash=0 showopts tz=Europe/Moscow lang=ru_RU \ automatic=method:nfs,network:dhcp,server:192.168.15.1,directory:/srv/img \ autorun=method:nfs,server:192.168.15.1,directory:/srv/img boot
imgargs . — параметры загрузки ОС;
automatic=method:nfs,network:dhcp,server:192.168.15.1,directory:/srv/img — указано как iPXE должен загружать ОС по сети;
autorun=method:nfs,server:192.168.15.1,directory:/srv/img — указано откуда rescue-launcher запускает скрипт развертывания — autorun.
ramdisk_size=439569 — размер файла второй стадии загрузки (в данном случае rescue) в килобайтах. Можно определить следующим образом:
# ramdisk_size=$((4 * $(du -lsB4k /srv/img/rescue |cut -f1) + 1)) # echo $ramdisk_size 430785
После этого подключаем ПК, на котором должна развертываться ОС, к сети. Отключаем secureboot. Выбираем режим загрузки по сети — PXE.
Полезные ссылки
- Полное описание утилиты iso2stick
- Полное описание Rescue Launcher
- Технологии клонирования изнутри
- Автоматическая установка
- Сервер сетевой установки
- Установка в режиме OEM (предустановка)