IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Скрипт для подготовки системы к сборке дистрибутивов
Поделиться
ИВК
сообщение 23.10.2016, 16:23
Сообщение #1


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9988
Регистрация: 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

И не исключено, что ещё какие-то странности возможны.

Евгений предлагает следующее:
Цитата(Koi.v2 @ 22.10.2016, 21:18) *
Код
#!/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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 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
Мне кажется действительно лучше в автозагрузку, постоянно вводить в ручную со временем начинает раздражать. biggrin.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ИВК
сообщение 23.10.2016, 17:51
Сообщение #3


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9988
Регистрация: 22.6.2009
Вставить ник
Цитата
Из: Онега
Пользователь №: 1352
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 30


Цитата(Koi.v2 @ 23.10.2016, 16:23) *
wlimit_time_elapsed=6000
allowed_mountpoints=/proc
Вводятся однократно, можно и без скрипта просто в навигаторе написать о проблеме с systemd.

Можно, конечно. Но, если поправки для systemd вносить автоматом при старте системы, то почему бы заодно не прописать туда и проверку-правку /etc/hasher-priv/system. А то многие на эти грабли наступают.


--------------------
Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
tema
сообщение 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 23.10.2016, 21:38
Сообщение #5


Мастер
******

Группа: Активный Пользователь
Сообщений: 620
Регистрация: 11.5.2015
Вставить ник
Цитата
Пользователь №: 2810
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 4


Если преинстал стоит, заодно он и sysfsutils подтягивает.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
ИВК
сообщение 25.10.2016, 18:04
Сообщение #6


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9988
Регистрация: 22.6.2009
Вставить ник
Цитата
Из: Онега
Пользователь №: 1352
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 30


Цитата(Koi.v2 @ 23.10.2016, 20:38) *
Если преинстал стоит, заодно он и sysfsutils подтягивает.

И это решает проблему? Как именно? Не очень в этом ориентируюсь.


--------------------
Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 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


Профессионал
*******

Группа: Глоб. Модератор
Сообщений: 9988
Регистрация: 22.6.2009
Вставить ник
Цитата
Из: Онега
Пользователь №: 1352
Страна: Россия
Город: Не указан
Пол: Муж.



Репутация: 30


Итак, если установлен mkimage-preinstall, то при каждой перезагрузке ничего вводить не надо? А проверяли? Мне прямо сейчас не проверить, потому что у меня
всё на SystemV.


--------------------
Не пью, не курю, не смотрю телевизор, не пользуюсь Windows
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 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
Приходится переопределять в ручную, ну или скриптом.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Koi.v2
сообщение 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
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
( Гостей: 1 )
Пользователей: 0

 



RSS Текстовая версия Сейчас: 29.3.2024, 3:59