LINUX.ORG.RU

Организация аппаратных профилей


0

0

Hi all!

Имеется переносной USB-винт с поставленной на него Слакой-12.1. Ядро + GRUB записано отдельно на CD. Эта комбинация позволяет удобно работать в "родной" системе почти на любом подвернувшемся под руку компьютере ("всё своё ношу с собой"). Только есть небольшая загвоздка: часть настроек для каждого компа должна быть своя. Где-то, скажем, выход в Инет через vpn pptp, где-то просто ppp по модему. xorg.conf везде разный. /etc/rc.d/rc.firewall разный и т.д. Поэтому хочется при загрузке иметь менюшку с выбором компьютера. Или даже автоопределение, но это уже потом. Сейчас стоит вопрос: как красиво организовать себе этот самый выбор аппаратных профилей?

Пока идея такая. Допустим, надо менять в зависимости от компьютера каталог /etc/ppp и файл xorg.conf. Заменяем их ссылками:
/etc/ppp -> /mnt/cprof/etc/ppp и /etc/X11/xorg.conf -> /mnt/cprof/etc/X11/xorg.conf.

Каталог /mnt/cprof - вроде как "current profile". Там файлы и каталоги соответствуют текущему профилю. Специальная маленькая программка (назовём astra) при загрузке монтирует в него маленький ramdisk. У неё в /etc/astra/profiles есть профили для разных машин. Пусть машины называются comp1 и comp2. Тогда имеем:
/etc/astra/profiles/comp1/etc/ppp
/etc/astra/profiles/comp1/etc/X11/xorg.conf

/etc/astra/profiles/comp2/etc/ppp
/etc/astra/profiles/comp2/etc/X11/xorg.conf

/etc/astra/profiles/default/etc/ppp
/etc/astra/profiles/default/etc/X11/xorg.conf

При загрузке astra выдаёт меню с предложением выбрать компьютер. Или определяет его автоматом - например, сравнивая вывод lspci с ранее записанным. И делает на электронном диске ссылочки на файлы в соответствующем профиле. Если чего-то в профиле не хватает - это берётся из профиля default.

Т.е. в /mnt/cprof будет для copm2:

/mnt/cprof/etc/ppp -> /etc/astra/profiles/comp2/etc/ppp
/mnt/cprof/etc/X11/xorg.conf -> /etc/astra/profiles/comp2/etc/X11/xorg.conf

А если бы отсутствовал /etc/astra/profiles/comp2/etc/ppp - было бы

/mnt/cprof/etc/ppp -> /etc/astra/profiles/default/etc/ppp
/mnt/cprof/etc/X11/xorg.conf -> /etc/astra/profiles/comp2/etc/X11/xorg.conf


Такое решение позволяет:
+ сделать зависимым от компьютера почти любой файл (кроме fstab, наверное);
+ если в профиле не хочется все файлы, использующиеся в других профилях, то можно не трудиться - будет подставлен файл из
профиля default.

И явно имеет недостатки:
- как-то всё это не очень соответствует принципу KISS;
- непонятно, как простым способом разрешить вносить в профили файлы из /home/...,
чтобы пользователи не смогли насолить друг другу.

Может, кто-нибудь сможет подсказать более простое и красивое решение вопроса?

Довольно все специфично, поэтому наверное ответа не будет.

Вообще молодец, идея интересная, но я тебе сочувствую: чужое железо - глючное железо.

paranormal ★★
()
Ответ на: комментарий от paranormal

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

sergey_feo
() автор топика

я использую quickswitch. Вообще нечто такое нарисовать и самому не сложно. Даже рам диск не нужен. Всего то привентить что то навроде quickswitch в скрипты загрузки на предмет парса строки загрузчика.

vasily_pupkin ★★★★★
()

Несколько разделов с /etc, где настройки под конкретное железо, возможно несколько вариантов initrd и ядра.

marsijanin ★★
()
Ответ на: комментарий от vasily_pupkin

А каким образом quickswitch меняет файлы настроек? Просто переписывает на винте туда-сюда? Я-то как раз ramdisk хочу сделать, чтобы лишний раз ничего не переписывать: все дела в оперативке.
Кстати, используя секцию [files], можно не только сетевые настройки, но и, похоже, xorg.conf заменять?

Про несколько /etc: тогда пропадает интересная возможность указывать в профилях разные и небольшие наборы файлов. Хочется, чтобы неуказанные файлы вставали со значениями по умолчанию.

sergey_feo
() автор топика
Ответ на: комментарий от sergey_feo

>Про несколько /etc: тогда пропадает интересная возможность указывать в профилях разные и небольшие наборы файлов. Хочется, чтобы неуказанные файлы вставали со значениями по умолчанию.

Быть может вам стоит взглянуть в сторону Live-CD типа Puppy. Он ведь может дописывать свои настройки отдельным файлом.

marsijanin ★★
()
Ответ на: комментарий от marsijanin

Хочется всё-таки не Live-CD, а полноценную Слаку :-)

sergey_feo
() автор топика

Сделал почти как планировал, только попроще.
Программа смотрит, что лежит в профиле по умолчанию. Причём без захода в каталоги, лежащие в профиле. Для каждого обнаруженного файла/каталога пытается найти вариант в том профиле, который надо установить (заданном). Если такого файла/каталога в заданном профиле нет - делает ссылку в /mnt/cprof на файл/каталог из профиля по умолчанию, если есть - из заданного. И всё.

Профили выглядят примерно так:

/etc/astra/profiles/comp1/ppp
/etc/astra/profiles/comp1/xorg.conf

/etc/astra/profiles/comp2/xorg.conf

/etc/astra/profiles/default/ppp
/etc/astra/profiles/default/xorg.conf

В /mnt/cprof будет для copm2:

/mnt/cprof/ppp -> /etc/astra/profiles/default/ppp
/mnt/cprof/xorg.conf -> /etc/astra/profiles/comp2/xorg.conf

Теперь буду пристраивать автоопределение профиля и меню, если не определится :-)

sergey_feo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.