LINUX.ORG.RU

Интервью с Леннартом Поттерингом на Linux Piter об изменениях в Linux, про systemd и о том, зачем посещать конференции

 , , , , леннарт поттеринг


1

1

Леннарт Поттеринг – одна из легенд Linux-сообщества. Начиная с 90-х годов он работает над ядром операционной системы Linux. Леннарт запустил такие проекты, как PulseAudio, Avahi, kdbus, systemd и стал их главной движущей силой. В настоящее время работает в компании Red Hat в Германии. В прошлом году Леннарт приезжал на конференцию Linux Piter 2017 с докладом и сегодня, в преддверии Linux Piter 2018, мы публикуем интервью с этим именитым open source-разработчиком, в котором он рассказывает, зачем понадобился systemd, как менялась и меняется архитектура Linux, как лично он реагирует на многочисленную критику в свой адрес, зачем нужно посещать конференции, и что лично ему дают такие мероприятия, как, например, Linux Piter.

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 3)

Ответ на: комментарий от mandala

В эти инструкции и порядок наверняка входит написание доков, чтобы единственный, выпиленный автобусом, разраб, который был ответсвенным за критически важный кусок, не вызвал долгосрочный фриз всего проекта.

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

без портянок на bash замечательный systemd не работает

опять таки, для примера, этот же chrony и его chronyd-starter.sh

#!/bin/sh
set -ue

CONF="/etc/default/chrony"
DOC="/usr/share/doc/chrony/README.container"
CAP="cap_sys_time"
CMD="/usr/sbin/chronyd"
# Take any args passed, use none if nothing was specified
EFFECTIVE_DAEMON_OPTS=${@:-""}

if [ -f "${CONF}" ]; then
    . "${CONF}"
else
    echo "<4>Warning: ${CONF} is missing"
fi
# take from conffile if available, default to no otherwise
EFFECTIVE_SYNC_IN_CONTAINER=${SYNC_IN_CONTAINER:-"no"}

if [ ! -x "${CMD}" ]; then
    echo "<3>Error: ${CMD} not executable"
    # ugly, but works around https://github.com/systemd/systemd/issues/2913
    sleep 0.1
    exit 1
fi

# Check if -x is already set manually, don't process further if that is the case
X_SET=0
while getopts ":x" opt; do
    case $opt in
        x)
            X_SET=1
            ;;
    esac
done

if [ ${X_SET} -ne 1 ]; then
  # Assume it is not in a container
  IS_CONTAINER=0
  if [ -x /usr/bin/systemd-detect-virt ]; then
      if /usr/bin/systemd-detect-virt --quiet --container; then
          IS_CONTAINER=1
      fi
  fi


  # Assume it has the cap
  HAS_CAP=1
  CAPSH="/sbin/capsh"
  if [ -x "${CAPSH}" ]; then
      ${CAPSH} --print | grep -q "^Current.*${CAP}" || HAS_CAP=0
  fi

  if [ ${HAS_CAP} -eq 0 ]; then
      echo "<4>Warning: Missing ${CAP}, syncing the system clock will fail"
  fi
  if [ ${IS_CONTAINER} -eq 1 ]; then
      echo "<4>Warning: Running in a container, likely impossible and unintended to sync system clock"
  fi

  if [ ${HAS_CAP} -eq 0 -o ${IS_CONTAINER} -eq 1 ]; then
      if [ "${EFFECTIVE_SYNC_IN_CONTAINER}" != "yes" ]; then
          echo "<5>Adding -x as fallback disabling control of the system clock, see ${DOC} to override this behavior"
          EFFECTIVE_DAEMON_OPTS="${EFFECTIVE_DAEMON_OPTS} -x"
      else
          echo "<5>Not falling back to disable control of the system clock, see ${DOC} to change this behavior"
      fi
  fi
fi

${CMD} ${EFFECTIVE_DAEMON_OPTS}
просто добавляет -x если запущен в контейнере без привилегий.
офигенно полезная хибкасть. как без этого жить вообще, не понятно. и всё тестами покрыто, стабильно. можно запускать не читая. </s

system-root ★★★★★
()
Ответ на: комментарий от tailgunner

Т.е. люди из Microsoft даже не весь ntoskrnl считают ядром

Так что же это, у венды не монолитное ядро?!?!

Т.е. люди из Microsoft не считают,

Годы форумных срачей научили тебя уходить непобеждённым!

LamerOk ★★★★★
()

Не, ну в плане способности преодолевать давление общественности, он, безусловно крут. но немешало бы иногда отделять тупое давление от конструктивной критики, и вступать диалог.

Да, тот же системд решает массу наболевших проблем, но при этом и вносит новые, на которые Леннарту уже 100500 раз указывали, и которые он с упорством фанатика не признает.

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

Я возьму firejail, например

бери. показывай. это ведь добавит простоты? мы ведь о kiss говорим.

В системд есть опции для фильтрации опций сокета?

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

фильтрации ... Apparmor

чаво? оО

system-root ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Это херовый опенсорц, а хороший (который хоть кто-то юзает) худо-бедно да покрыт доками.

это обычный опенсорц. я с ним каждый день дело имею. «доки» обычно состоят из readme.md, где написано, как собрать. и то без углубления в детали. всё прочее - велкам ту чтение сорцов.

Iron_Bug ★★★★★
()
Ответ на: комментарий от system-root

бери. показывай

Написать правило firejail для chronyd? Под рукой нет. А писать - напишу как понадобится. Сорри если разочаровал)

можно прикрутить. одной строчкой в юнит файле.

Покеж если это одной строчкой. Впрочем, если ответишь моим же ответом - не страшно. Мы оба понимаем что к чему. 😁

фильтрации ... Apparmor

Да. Тебе фильтрация для чего нужна? А если нужна полноценная изоляция - нах тебе системд? 🙈

Deleted
()
Ответ на: комментарий от Iron_Bug

Если это больше чем наколеночное поделие и действительно что-то нужное, то доками оно всё равно обрастает. В том или ином виде. Кто-нибудь либо апи опишет, либо примеров накидает.

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

Это не так, какая-нибудь бизнес логика или аналитика может грузить сервера не хуже компиляции.

ты перепутал желаемое с возможным. ты можешь попытаться грузить «сервер» с маздаем. только вот он захлебнётся и сдохнет. или память у него утечёт и он зависнет.

Конечно, ведь кроме вебни, других задач нет.

при чём тут вебня? в вообще про неё не говорю. но абсолютно все задачи решаются на серьёзных серверах, а не на маздае.

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

ну, это необязательный фактор. разработчикам обычно некогда этим заниматься. конечно, совсем уж необходимое документируется. например, интерфейсы библиотек, особенности электроники. но по минимуму. потому что платят за результат, а не за писанину.

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

Интервью с Леннартом Поттерингом на Linux Piter об изменениях в Linux, про systemd и о том, зачем посещать конференции (комментарий)

The rest of the system kernel components are provided by the following libraries and executables [3]:

И что? «System kernel components» может относиться к компонентам операционной системы (в статье говорится об архитектуре Windows в целом ). [3] указывает на https://en.wikipedia.org/wiki/Windows_API. Где, внезапно, про состав ядра нет ровно ничего, но есть забавная фраза: «Advanced Services Provide access to functions beyond the kernel.»

Годы форумных срачей научили тебя уходить непобеждённым!

А то.

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

Не, ну в плане способности преодолевать давление общественности, он, безусловно крут

Если учесть, что от сообщества он не зависит почти никак - не так уж он и крут.

tailgunner ★★★★★
()
Ответ на: комментарий от system-root

321 строк баш-лапши которая выполняет что-то. что? почини тут мне блджат.

321 строк кода! Прописью триста двадцать одна строка ! В варианте захаркоденного *d сколько строк?

а вот юнит файл 46 строк

Который является не более чем конфигом, верно же? «Завтра» мы получаем обновление и этот конфиг вдруг перестанет работать. Вопрос: Шо делать будем если срочно надо починить?

И еще раз, клевое у вас сравнение: 321-на строка исполняемого скрипта на баше vs 46 строк только одного конфига. Офигеть...

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

что такое фильтрация apparmor? профиль для apparmor? это не фильтрация, это профиль для apparmor.

Покеж если это одной строчкой

IPAddressAllow= например.
ну, т.е. тебе нужно взять, написать правило для firejail, чтобы сделать фильтрацию системных вызовов? и это просто и легко? без strace, платформонезависимо, а главное — упрощает архитектуру твоего даемона?
и всё это kiss, а вот написать SystemCallFilter — не kiss.
так?

system-root ★★★★★
()
Ответ на: комментарий от WitcherGeralt

который был ответсвенным за критически важный кусок

Он не будет один единственный компетентный, если это не шарашкина контора, всегда есть дублер, а если это ключевая должность — то приказом под роспись.

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

Да я не спорю, просто когда тыкают что линаксы популярны только как лампы — мимо я пройти спокойно не могу :).

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

«Завтра» мы получаем обновление и этот конфиг вдруг перестанет работать

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

mandala ★★★★★
()
Ответ на: комментарий от system-root

чтобы сделать фильтрацию системных вызовов

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

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Не, я про опенсорс. Кстати, три последних опенсорсных проекта, с которыми имел дело:

  • Aravis — частично как ты сказала, нормальных доков нет, есть инструкция как собрать. Но там есть явно автогернерённая дока. Что-то нормально откомментировано, что-то нет, не сильно лучше исходников, разве что так удобней ориентироваться.
  • Lark — доки есть, но они говно.
  • gollum — здесь ок.

А в продуктовой разработке всё от компании зависит, чем колхозней, тем меньше доков, чем дальше от колхоза, тем доков больше.

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

ты перепутал желаемое с возможным.

Уж кот бы говорил.

только вот он захлебнётся и сдохнет. или память у него утечёт и он зависнет.

Только в твоих фантазиях. Никсовые сервера точно также могут загибаться под нагрузкой.

но абсолютно все задачи решаются на серьёзных серверах, а не на маздае.

Это не так.

Deleted
()
Ответ на: комментарий от system-root

что такое фильтрация apparmor? профиль для apparmor? это не фильтрация, это профиль для apparmor.

К чему эта софистика? Правила для apparmor из systemd можешь задавать?

IPAddressAllow

Не, я хочу фильтровать аргументы создаваемого сокета, family, type, protocol.

т.е. тебе нужно взять, написать правило для firejail, чтобы сделать фильтрацию системных вызовов? и это просто и легко?

Чтобы сделать изоляцию приложения. Фильтровать вызовы через seccomp недостаточно.

без strace, платформонезависимо

Системд прибит к определённым версиям ядра. Справляется с задачей изоляции плохо. Какая уж тут платформонезависимость, да и к чему она?)

и всё это kiss, а вот написать SystemCallFilter — не kiss.

Разумеется взять программу нацеленную на задачу лучше, чем взять комбайн, где capabilities filter тока служит для успокоения а не решает реальной задачи. Это не тока кисс, но и здравый смысл.

Deleted
()
Ответ на: комментарий от WitcherGeralt

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

мы как-то вдвоём с человеком, с которым разрабатывали большую и сложную плату, решили для себя составить схему потоков данных внутри платы и наружу. так вот распечатка этой схемы на листках А4 не влезла на стену. это всё равно никто бы не стал читать. это невозможно прочитать и понять. и этим мы уже занимались после того, как проект был сдан. тем более, что в процессе разработки схема и сама плата многократно переделывалась.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от anc

мы уже выяснили, что ты в *d разбираешься, примерно, никак, для тебя 46 строк — это замена 321-й строке.
на деле, нет. там в примере два разных юнита. первый дефолтный и использует баш, просто потому что может. не спрашивая меня о такой необходимости.
запускатор на 70 строк уже приводил. добавляет -x в параметры, это дерьмо мне не нужно.
и причём здесь «Завтра»? я тут не системд проповедую, а устраиваю гонения на толкователей KISS, которые его отличить от юниксвея не могут.
только вы сразу уходите от прямых вопросов.

у вас есть сферические инит системы, которые kiss и non-kiss systemd. а на деле у вас есть баш-лапша в которой нет нихера, потому она kiss vs systemd, и если чё, можно прогнать strace и написать конфигчек для firejail, склеить это всё изолентой и наречь KISS подходом.
хер пройдёт такой фокус.

system-root ★★★★★
()
Ответ на: комментарий от Iron_Bug

Это может понадобиться для изоляции. Тока системд с этим справляется херово. Потому что бай дезигн. Невозможно делать все вещи хорошо. Либо все херово (системд), либо отдельные утилиты для отдельных задач (которые уже можно выбирать по степени киссовости и тому, насколько хорошо они решают задачу). Системд - ниочем. «Мы поддерживаем seccomp.» - а нахера? Чтоб спалось лучше.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от system-root

у вас есть сферические инит системы

Инит это малая часть сустемд-комбайна, не забывай. Был бы один инит — ни кто бы тут не бурлил годами.

mandala ★★★★★
()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Ну, в общем, да.

Пожалуй, соглашусь с тобой, Яна.

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

Признаю свою неправоту.

Саахрикту безвреден.

Леннарта хочется убить.

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

изоляцию при обращении к ядру обеспечивает само ядро. там смешения данных не произойдёт в любом случае. я не понимаю, что там собрались «фильтровать», да ещё и на уровне админских настроек.

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

Не преувеличивай, знаю как минимум одну контору с сотнями разрабов и серьёзными оборотами, где шальной автобус обеспечит панику и возгорание огромного количества жоп. И да, доков там вообще нет. У меня в конторе (которая шарашкина с точки зрения самой разработки, но не с точки зрения жирных контрактов) bus factor лишь немного выше единицы, но ЧСХ, он ниже всего именно там, где доков нет, а где он выше, там и с доками порядок.

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

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

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

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

Формулировку «в нормальных дистрах» «моя не понимает» от слова совсем. Повторюсь: что есть «нормальных дистрах» по вашему мнению?

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

«Офигеть, дайте две» (с)
Безусловно, количество криков «после обновления системд у меня все поломалось» сократилось в разы. Однако они все еще присутствуют.
ЗЫ

Надо перестать использовать арч

Вот ни разу не видел его. Может в этом моя проблема?

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

Не, я хочу фильтровать аргументы создаваемого сокета

ну так и создавай сокет. https://www.freedesktop.org/software/systemd/man/systemd.socket.html

Разумеется взять программу нацеленную на задачу лучше, чем взять комбайн

я чёт не пойму, ты думаешь firejail тебе виртуалку запускает, да ещё и на другом компе? там точно такие же фиговины используются.
капабилитис, неймспейсы, оверлеи, сискол фильтры, блаблабла, bpf. это всё делается в одном файлике. что тут хуже чем и не решает? рассказывай.
профиль для apparmor — это вообще проблема apparmor. всё.
где тут лучшесть firejail в справлении нужд изоляции? рассказывай. раз про кисс тоже свалил от ответа.

system-root ★★★★★
()
Ответ на: комментарий от WitcherGeralt

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от system-root

ну так и создавай сокет.

Демон создаёт сокет. Как через системд фильтровать аргументы вызова?

ты думаешь firejail тебе виртуалку запускает, да ещё и на другом компе?

Нет, я так не думаю.

там точно такие же фиговины используются.

капабилитис, неймспейсы, оверлеи, сискол фильтры, блаблабла, bpf. это всё делается в одном файлике.

Нет, это интерфейс к seccomp ядра. А разработчики ядра предупредили: System call filtering isn't a sandbox. ... It is meant to be a tool for sandbox developers to use.

А systemd никакущий sandbox. А ты кичишься опцией фильтрацией в конфиге. А я тебе говорю что это херня, потому что если реально нужна изоляция, то нужны другие инструменты. И результат достигается проще. Ну или покажи уже наконец опции apparmor и фильтрацию опций сокета в системд, не томи.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от anc

Повторюсь: что есть «нормальных дистрах» по вашему мнению?

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

Однако они все еще присутствуют.

Если про такие дистры, которые я описал выше — то только при изменении мажорной версии, а это раз в 5 лет, не чаще. И тут надо не истерить, а голову пеплом посыпать — не оттестировал переезд.

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

есть ведущие разработчики и от них зависит вс

Но не один же, я там выше про это писал, тут фактор автобуса не страшен. Некоторых боятся фактора самолета — вполне серьезно предписывают разными рейсами летать членам одной команды.

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

Некоторых боятся фактора самолета — вполне серьезно предписывают разными рейсами летать членам одной команды

Угу или вариант «поезд и самолет, самолет упал на тот самый поезд» (c) Плакса

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

Демон создаёт сокет. Как через системд фильтровать аргументы вызова?

что ты несёшь?

Нет, это интерфейс к seccomp ядра

что ты несёшь? я тебе ещё чёрт знает когда написал, что это не единственный механизм.
http://man7.org/linux/man-pages/man2/personality.2.html тоже seccomp?
http://man7.org/linux/man-pages/man2/chroot.2.html тоже seccomp?
http://man7.org/linux/man-pages/man7/path_resolution.7.html тоже seccomp?
http://man7.org/linux/man-pages/man2/mmap.2.html и это?
нафига ты начинаешь рассказывать о чём-то, даже ман не открыв? в чём прикол такой сложной шутки?

Ну или покажи уже наконец опции apparmor

что ты несёшь?

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

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

Та крупная контора, про которую я сказал, мб работает и не так, как то, что описываешь ты, но на выходе то же самое.

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

То есть, у них это не квалификация разработчика, а порог входа в конкретный проект, который как раз был бы сильно ниже за счёт хорошей доки.

Мб дело в том, что ты хорошей доки никогда не встречала. Иногда она срезает порог входа ниже плинтуса.

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

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

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

Они сильно опираются на лидов и нанимают им в рабство всякую вчерашнюю студентоту и прочую бестолочь.

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

Мб дело в том, что ты хорошей доки никогда не встречала. Иногда она срезает порог входа ниже плинтуса.

нет. это зависит только от проекта. потому что если проект «ниже плинтуса», то и не надо доки - прочитал код и поехал его править с ходу. а если проект сложный, то и дока не поможет - надо много лет потратить на вникание в суть работы. да и никто не подпустит нуба к писанию ответственного кода.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от system-root

пара картинок из википедии, чтоб далеко не ходить

https://en.wikipedia.org/wiki/File:Systemd_components.svg
https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Systemd_components....

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

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

Да довольно прилично для того чтобы её добавили в актуальные уже несколько лет системы с длительной поддержкой: шапка и производные, суся, дебин/убунту.

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

каждом отделе всегда есть ведущий специалист

Есть такой прикольный чувак — Максим Дорофеев, он называет его «Бородач», мне запало в память, очень меткое определение.

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

На самом деле вы правы. Общая документация она обычно есть, но вот, конечная и точная скорее отсутствует, тут уже по «коду разбираемся». Ведь проблема в том, что проекты «живые» и код меняется постоянно, а заказчики на готовы платить «денюшки» еще и на «описание».
Криво описал, но думаю вы меня поняли.

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