Скрипт для подготовки системы к сборке дистрибутивов |
Поделиться |
Здравствуйте, гость ( Вход | Регистрация )
Скрипт для подготовки системы к сборке дистрибутивов |
Поделиться |
23.10.2016, 16:23
Сообщение
#1
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10033 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Этот вопрос в последние дни всплывал в разных темах, но лучше отвести ему отдельный топик.
Итак, сборка дистрибутива (обычно - в ещё толком не настроенной для таких целей системе) нередко обваливается по одним и тем же причинам, устранение которых требует прав рута. Что наводит на мысль о запуске при старте системы скрипта, который будет выявлять и ликвидировать такие проблемы. Конкретно речь вот о чём: 1. В файле /etc/hasher-priv/system могут отсутствовать необходимые (или требующиеся в некоторых случаях) строки, как то: Код allowed_mountpoints=/proc wlimit_time_elapsed=6000 2. В системе на systemd необходимо при запуске выполнять команды Код echo 0 > /proc/sys/fs/protected_hardlinks sysctl -w fs.protected_hardlinks=0 sysctl -w fs.protected_symlinks=0 И не исключено, что ещё какие-то странности возможны. Евгений предлагает следующее: Код #!/bin/bash # Настройка сборки дистрибутива на systemd echo 0 > /proc/sys/fs/protected_hardlinks sysctl -w fs.protected_hardlinks=0 sysctl -w fs.protected_symlinks=0 if [ "$(grep "allowed_mountpoints=/proc" /etc/hasher-priv/system)" != "allowed_mountpoints=/proc" ] then echo allowed_mountpoints=/proc >> /etc/hasher-priv/system echo "Добавлено allowed_mountpoints=/proc в /etc/hasher-priv/system" elif [ "$(grep "wlimit_time_elapsed=6000" /etc/hasher-priv/system)" != "wlimit_time_elapsed=6000" ] then echo wlimit_time_elapsed=6000 >> /etc/hasher-priv/system echo "Добавлено wlimit_time_elapsed=6000 в /etc/hasher-priv/system" fi И из rc.local пускать, чтоб не париться. У кого какие соображения? По-моему, такой скрипт надо в отдельный пакет, так удобнее всего, и положить его в клубые репы. Не знаю, как насчёт других инструментов сборки, а в Навигаторе я просто впишу этот пакет в зависимости. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
23.10.2016, 17:23
Сообщение
#2
|
|
Мастер Группа: Активный Пользователь Сообщений: 620 Регистрация: 11.5.2015 Вставить ник Цитата Пользователь №: 2810 Страна: Россия Город: Не указан Пол: Муж. Репутация: 4 |
wlimit_time_elapsed=6000
allowed_mountpoints=/proc Вводятся однократно, можно и без скрипта просто в навигаторе написать о проблеме с systemd. sysctl -w fs.protected_hardlinks=0 sysctl -w fs.protected_symlinks=0 Мне кажется действительно лучше в автозагрузку, постоянно вводить в ручную со временем начинает раздражать. |
|
|
23.10.2016, 17:51
Сообщение
#3
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10033 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
wlimit_time_elapsed=6000 allowed_mountpoints=/proc Вводятся однократно, можно и без скрипта просто в навигаторе написать о проблеме с systemd. Можно, конечно. Но, если поправки для systemd вносить автоматом при старте системы, то почему бы заодно не прописать туда и проверку-правку /etc/hasher-priv/system. А то многие на эти грабли наступают. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
23.10.2016, 18:05
Сообщение
#4
|
|
Мастер Группа: Активный Пользователь Сообщений: 542 Регистрация: 4.2.2016 Вставить ник Цитата Пользователь №: 2850 Страна: Россия Город: Не указан Пол: Муж. Репутация: 2 |
Код echo 0 > /proc/sys/fs/protected_hardlinks Это необязательно. Достаточно этого: Код sysctl -w fs.protected_hardlinks=0
sysctl -w fs.protected_symlinks=0 Сообщение отредактировал tema - 23.10.2016, 18:06 |
|
|
23.10.2016, 21:38
Сообщение
#5
|
|
Мастер Группа: Активный Пользователь Сообщений: 620 Регистрация: 11.5.2015 Вставить ник Цитата Пользователь №: 2810 Страна: Россия Город: Не указан Пол: Муж. Репутация: 4 |
Если преинстал стоит, заодно он и sysfsutils подтягивает.
|
|
|
25.10.2016, 18:04
Сообщение
#6
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10033 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Если преинстал стоит, заодно он и sysfsutils подтягивает. И это решает проблему? Как именно? Не очень в этом ориентируюсь. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.10.2016, 17:10
Сообщение
#7
|
|
Мастер Группа: Активный Пользователь Сообщений: 620 Регистрация: 11.5.2015 Вставить ник Цитата Пользователь №: 2810 Страна: Россия Город: Не указан Пол: Муж. Репутация: 4 |
Это из баг рапорта.
https://bugzilla.altlinux.org/show_bug.cgi?id=30351#c22 Цитата система на systemd - те же грабли можно еще и так ( изобретение не мое а sb ): [root<>host-2 ~]# apt-get install --reinstall mkimage-preinstall или так на скорую руку: [root<>host-2 ~]# sysctl -w fs.protected_symlinks=0 [root<>host-2 ~]# sysctl -w fs.protected_hardlinks=0 Цитата И да, пакет sysfsutils нужен, потому что кроме него никто не пишет в /sys при запуске (AFAIK). mkimage-preinstall должен избавлять нас от постоянной правки параметров ядра echo "fs.protected_hardlinks = 0" > %buildroot%sysctldir/%name.conf и делает это внося изменения с помощью управления параметрами ядра sysctl редактируя конфиг. Поправьте если не так понимаю процесс. |
|
|
26.10.2016, 20:09
Сообщение
#8
|
|
Профессионал Группа: Глоб. Модератор Сообщений: 10033 Регистрация: 22.6.2009 Вставить ник Цитата Из: Онега Пользователь №: 1352 Страна: Россия Город: Не указан Пол: Муж. Репутация: 30 |
Итак, если установлен mkimage-preinstall, то при каждой перезагрузке ничего вводить не надо? А проверяли? Мне прямо сейчас не проверить, потому что у меня
всё на SystemV. -------------------- Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
|
|
|
26.10.2016, 22:37
Сообщение
#9
|
|
Мастер Группа: Активный Пользователь Сообщений: 620 Регистрация: 11.5.2015 Вставить ник Цитата Пользователь №: 2810 Страна: Россия Город: Не указан Пол: Муж. Репутация: 4 |
echo 0 > /proc/sys/fs/protected_hardlinks
Не надо. А значения sysctl -w fs.protected_symlinks=0 sysctl -w fs.protected_hardlinks=0 Приходится переопределять в ручную, ну или скриптом. |
|
|
22.12.2016, 20:38
Сообщение
#10
|
|
Мастер Группа: Активный Пользователь Сообщений: 620 Регистрация: 11.5.2015 Вставить ник Цитата Пользователь №: 2810 Страна: Россия Город: Не указан Пол: Муж. Репутация: 4 |
Ошибка связанная с нехваткой памяти при сборке.
Код rpmdb: Page 1: offpage item 171 has bad pgno 1777 rpmdb: Page 2: offpage item 169 has bad pgno 1774 rpmdb: /var/lib/rpm/Packages: DB_VERIFY_BAD: Database verification failed error: db4 error(-30972) from db->verify: DB_VERIFY_BAD: Database verification failed fakeroot daemon: /.fakedata: No space left on device hsh-install: Packages installation failed. make[3]: *** [build-image] Error 1 make[2]: *** [install2/] Error 2 Command exited with non-zero status 2 1:38.96 63%CPU 150552k Решение: В файл /etc/fstab нужно прописать размер раздела tmp. Код tmpfs /tmp tmpfs nosuid,size=15G 0 0 size=15G соответственно "G" - гигабайты, "m" - мегабайты. Сообщение отредактировал Koi.v2 - 22.12.2016, 20:39 |
|
|
Текстовая версия | Сейчас: 24.4.2024, 1:08 | |