Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Выполнить скрипт до проверки/монтирования устройств  (Прочитано 3083 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Sly_tom_cat, в случае с корнем всё понятно:
*до* каких либо проверок дисковых устройств (исключая системный том)
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
На сколько я помню (по крайней мере как это было реализовано у нас)
- boot спокойно монтировался и /
- ценные данные уже находились в криптоконтейнере, что был зашифрован RSA ключем 2048 бит
- ключик же хранился удаленно
- система же просила нажать... что бы попасть в консоль и примонтировать руками или продолжить без монтирования
- соответственно загрузка прерывалась, вытягивался ключик, скармливался криптоконтейнеру и удалялся
- продолжали загрузку.

Вы же создали вариант, который просто невозможен в нормальном исполнении.
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
EvangelionDeath,
(Нажмите, чтобы показать/скрыть)
Что ж, если у ТС именно это и было "военной тайной" - это классическая XY Problem
« Последнее редактирование: 31 Января 2018, 22:53:34 от ALiEN175 »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Военнатайна, дружище, уж простите.

Тебя не просят выдавать секреты, тебя просят объяснить на техническом уровне, что ты хочешь.
Да ладно! Я тебе и ему обьяснил что надо. Стоит почитать первый пост. Привнесение слов инициализация, драйвер - сути не меняют.


Пока из тебя клещами вытянули следующее:


Нужно до монтирования дисков инициировать драйвер девайса данными вытянутыми из сети.
Это написано в первом посте.


Так вот уже объяснил - что не реально из сети что-то получить до того как монтируются диски. Просто потому, что сеть позже инициализируется, уже после монтирования. И это также видно из ваших листингов по network-online.target и local-fs-pre.target (время старта).

Так что нужно выработать двухступенчатую модель инициализации - до local-fs-pre.target - часть которую можно сделать без данных из сети, после network-online.target - финальная инициализация. Иного решения - нет.
О! Переходим на "вы"?! Ну что же ... коли не знаете как сделать - не вопрос. Никаких претензий. Будем искать дальше.

Что же до инициализации сети "позже" монтировки дисков, коли костыльный systemd не позволяет сделать иначе, тогда может быть существует иной способ?


Пользователь добавил сообщение 01 Февраля 2018, 11:53:50:
Право же не ловко, но Вам таки пальчиком сложно поправить, привести пример правильной секции ?

без проблем: https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Вах! Cпасибо дорогой! Я теперь тоже знаю как быть экспердом: надо на вопрос - отправлять на гуглю. :-)



Пользователь добавил сообщение 31 Января 2018, 20:39:58:
Ну а исходя из того, что у вас "воентайна", возможно вам подойдет следующее:
1. Убираете всё, что зависит от "воентайны" из fstab или из системы.
2. После поднятия сети скриптом подгружаете драйвера, данные и прочую "воентайну" из сети
3. Тем же скриптом монтируете диски и прочую "воентайну" ну либо что там надо...

Консенсус, друже! Стопудово! Так у меня сейчас это и сделано для тестов, есть dudriver_startup.sh в нём :

insmod dudriver
/opt/starlet/tv/dudrivercp initialize /dev/sdb ...
/opt/starlet/tv/dudrivercp enable  /dev/sdb ...
mount -a

Так разумеется всё работает на "ура". Однако, было желание  избавить "красноглазика"-потребителя от излишних манипуляций типа "выкинуть из fstab" монтировку разделов, ну сделать продукт "ваеннутайна" что ли более дружелюбной для установки. И вот, я обратился к истым джедаям ... :-)


Пользователь добавил сообщение 01 Февраля 2018, 11:58:51:
...пока домой с работы ехал вот что надумалось.

Если из облака данные быстро не протухают, то ведь их можно при дауне (пока сеть не протухла) скачать и локально положить (можно в крипто-контейнер), при старте системы в сеть лезть не надо и можно сделать все свои секретные дела до монтирования, проверки дисков.

Другой вариант (ALiEN175 уже озвучил вариант моей идеи №2) - пока сеть не появилась - ждем, как появилась - инициируем драйвер и перемонтируем диски (не уверен что корень удастся перемонтировать, но все остальное наверняка получится).

Возможно еще есть варианты извернуться.
Спасибо! МыслЬ разумна, без всяких яких! Я не шучу!
 Однако требования прикладной задачи намертво исключают всякое хранение "секретов" локально. В ЛУКСЕ кошерный тыщамегабитный ключ закрывается парольной фразой в 10 символов, что приемлимо для студентов, но не шарашек на регулируемом базаре. :-)

 Тогда бы я прикрутил бы какую-нибудь шнягу в качестве crypt-о модуля, и прогой бы действительно клал бы нечто в LUKS-контейнер.  Не поверите, но впервой версии "продухта" такой подход и был реализован. Невруейбога!
« Последнее редактирование: 01 Февраля 2018, 12:10:34 от dr.SysMan »
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
надо на вопрос - отправлять на гуглю
какой гугл? ссылка на конкретный ман по юнитам systemd. Если вы ожидали, что за вас всё-всё делать будут и с ложечки кормить - увы, вы ошиблись.
излишних манипуляций типа "выкинуть из fstab"
опять же всё это делается банальным скриптом. Вы же вместо простого скрипта хотите полностью изменить порядок загрузки юнитов, раскурочив всю ОС.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
надо на вопрос - отправлять на гуглю
какой гугл? ссылка на конкретный ман по юнитам systemd. Если вы ожидали, что за вас всё-всё делать будут и с ложечки кормить - увы, вы ошиблись.
Ой, уж прастите пожалуйста, вам ведь и так пришлось джоули потратить выискивая ссылку. Да я вас и от важных делишков небось отвлёк ...

Я ведь старый дурак думал, что если проблема решается перемещеним строк - то и дал бы правильный порядок строк. Ошибался. Правельно напускать пару из ушёй и кидаться ссылками на маны. :-)

излишних манипуляций типа "выкинуть из fstab"
опять же всё это делается банальным скриптом. Вы же вместо простого скрипта хотите полностью изменить порядок загрузки юнитов, раскурочив всю ОС.
За "просто скрипт" см. выше.

Насрать 1000 раз на ОС - это всего лишь средство реализации тех или иных задач. Существования 1000-комплектов изделия линуса лишний раз демонстрирует что если есть задача, которая решается перетрахиванием ОС - то ОС перетрахивается без всяких угрызений, тем или иным набором хоть студентов, хоть седых инжинеров.

 За "раскурочив" - вы опять таки передёргиваете - вопрос был как раз за то, как воспользоваться штатным механизмом, понимаете? Речь ни разу не шла об модификации существующих скриптов или бинарников, и уж о тем более об изменении порядка загрузки системы.


Если systemd при всей ея кошерности не позволит реализовать задачу - то будем искать другой путь, разумеется минимизируя вмешательство в систему потребителя.

Пользователь добавил сообщение 01 Февраля 2018, 12:31:58:
На сколько я помню (по крайней мере как это было реализовано у нас)
- boot спокойно монтировался и /
- ценные данные уже находились в криптоконтейнере, что был зашифрован RSA ключем 2048 бит
- ключик же хранился удаленно
- система же просила нажать... что бы попасть в консоль и примонтировать руками или продолжить без монтирования
- соответственно загрузка прерывалась, вытягивался ключик, скармливался криптоконтейнеру и удалялся
- продолжали загрузку.
Спасибо. Этот путь понятен, уже проверен.

Вы же создали вариант, который просто невозможен в нормальном исполнении.
Да ладно ?! Он исполняется 3-х строчным скриптом. И вся загвоздка вкорячить этот скрипт в процедуру загрузки системы. Гуру утверждают, что сеть стартует раньше монтировки дисков, полагаю что ошибочно утверждают, но ... подожду пока передумают-с.
« Последнее редактирование: 01 Февраля 2018, 12:31:58 от dr.SysMan »
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3487
  • Ubuntu 22.04 х64
    • Просмотр профиля
Гуру утверждают, что сеть стартует раньше монтировки дисков, полагаю что ошибочно утверждают, но
Эм. Давайте таки котлеты отдельно, а мухи отдельно
1) Разделяются локальные FS и сетевые
2) Сеть реально ранее стартует, чем Remote FS, но позже чем Local. Ибо пока не запущен менеджер сети - мы не имеем доступа к сети, как таковой, а для этого как минимум должен быть доступ к исполнимым файлам ПО, что отвечает за сеть... Ну вы поняли - корень уже должен быть смонтирован, хотя бы в РО

Да, честно, я у Вас не спрашиваю, как у вас прописан этот /dev/sdb, но если он таки прописан в fstab как вариант попробуйте таки в опции монтирования добавить _netdev, это скажет systemD, что раздел надо монтировать уже после инициализации сети. Но это так, мысли вслух
HP Pro 840 G3: Intel i5-6300U, 32GB DDR4 2133MHz, Intel 520, Intel Pro 2500 180GB/Ubuntu 22.04
Dell Latitude 5590: Intel i5-8350U, 16GB DDR4 2400MHz, Intel 620, Samsung 1TB/Ubuntu 22.04

Оффлайн scsiman

  • Активист
  • *
  • Сообщений: 344
    • Просмотр профиля
Что же до инициализации сети "позже" монтировки дисков, коли костыльный systemd не позволяет сделать иначе, тогда может быть существует иной способ?
Существует, если не ошибаюсь. Называется BSD-style init. Как гвоздями прибьёте, так и будет грузиться. Если память не изменяет, оный есть в Slackware (если ещё не выпилили) или делайте LFS (Linux from Scratch).

Речь ни разу не шла об модификации существующих скриптов или бинарников, и уж о тем более об изменении порядка загрузки системы.
Вот только порядок загрузки системы таков: сначала монтируются ЛОКАЛЬНЫЕ ФС, а сеть поднимается после. Вы же хотите наоборот.

Кстати говоря, про _netdev вам хорошо посоветовали, это вариант: монтирование гарантированно будет после подъёма сети.

Про задачу и военную тайну. Несколько раз перечитал первое сообщение, ЗАДАЧУ не увидел. Увидел какой-то модуль, облако и так далее. Это не задача, это путь (верный или тупиковый -- не суть важно сейчас) решения некоей задачи. Попробуем сформулировать саму ЗАДАЧУ (чтогдекогда прям)? Итак, попытка угадать изначальную формулировку:
На машине есть криптоконтейнер, ключ к которому хранится вне машины, получить ключ можно только через сеть. Требуется при загрузке получить ключ и расшифровать криптоконтейнер.
(Нажмите, чтобы показать/скрыть)
Если так, то задачу уже несколько раз решили по ходу срача обсуждения. Если не так, то что я не угадал (только не надо про модуль и прочее, это не постановка задачи, а путь решения)?

К размышлению: вот здесь говорится, кроме прочего, о том, как заиметь сеть аж во время initrd (т.е. ещё не смонтирован даже корень). Ещё направления размышлений есть там и тут. Там же и говорится о том, что автоматическая расшифровка без участия человека есть security hole.

Вкратце: полноценную сеть можно заиметь ещё ДО systemd и прочего.
Dell Studio XPS 16, Ubuntu 16.04 LTS (Home).
HP nx6110, Ubuntu 8.04 LTS => 10.04 LTS (Home).

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Гуру утверждают, что сеть стартует раньше монтировки дисков, полагаю что ошибочно утверждают, но
Эм. Давайте таки котлеты отдельно, а мухи отдельно
1) Разделяются локальные FS и сетевые
2) Сеть реально ранее стартует, чем Remote FS, но позже чем Local. Ибо пока не запущен менеджер сети - мы не имеем доступа к сети, как таковой, а для этого как минимум должен быть доступ к исполнимым файлам ПО, что отвечает за сеть... Ну вы поняли - корень уже должен быть смонтирован, хотя бы в РО
Да, сие очевидно.

Да, честно, я у Вас не спрашиваю, как у вас прописан этот /dev/sdb, но если он таки прописан в fstab как вариант попробуйте таки в опции монтирования добавить _netdev, это скажет systemD, что раздел надо монтировать уже после инициализации сети. Но это так, мысли вслух

Спасибо. Поковыряю в этом направлении ... Пожалуйста, мой мой fstab

root@sysman:/etc/systemd/system# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda1 during installation
UUID=c9e11c4a-36cb-4a53-bea5-cd430429ca1e /               ext4    errors=remount-ro 0       1

# swap was on /dev/sda5 during installation
#UUID=614198e5-236e-41fc-baa1-31b9f2230c02 none            swap    sw              0       0

/dev/sdb2 /mnt/luks ext4 defaults 0 0

Пользователь добавил сообщение 01 Февраля 2018, 17:34:12:
Кстати говоря, про _netdev вам хорошо посоветовали, это вариант: монтирование гарантированно будет после подъёма сети.
Отлично! Спасибо, принято.


Цитировать
К размышлению: вот здесь говорится, кроме прочего, о том, как заиметь сеть аж во время initrd (т.е. ещё не смонтирован даже корень). Ещё направления размышлений есть там и тут. Там же и говорится о том, что автоматическая расшифровка без участия человека есть security hole.
И ещё раз спсб.
Мда, а я только почти созрел стартануть тред за initramfs ...
Чуечка сработала верно, но оченка холей и бричей и прочего - забота специально обученных ответственных за военнутайну.



PS:Парни, всем разумеется большая благодарность за время и попытку дать дельный совет. Но, всё же прошу - не забивайте себе голову поиском смысла Задачи (The) и всего вокруг, во всяком случае в рамках обсуждения топика. Текстовой мишуры уходит много, что не способствует.
« Последнее редактирование: 01 Февраля 2018, 17:40:07 от dr.SysMan »
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн ⓓ ⓔ ⓡ SysMan

  • Автор темы
  • Новичок
  • *
  • Сообщений: 37
  • S|T|A|R|L|E|T
    • Просмотр профиля
    • OpenVMS forever!
Во информирование. Задачка решилась посредством использования initramfs, не без мороки , разумеется, но таки успешно. Если кого-то заинтерисует, я распишу степ-бай-степ, но видимо -  будет малоинтересным для сведущих.
OpenVMS bigot, C progger, sys/net BMF.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
dr.SysMan, ну почему малоинтересно? Любое решение нестандартной задачи - всегда интересно. Иначе тот же Habrahabr можно было бы закрывать....

Распишите: мало-ли кому-то пригодится - вам спасибо скажут...
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.021 секунд. Запросов: 19.