Зеркало архива debian что выбрать

Обновлено: 02.07.2024

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

  • Нужно ли зеркало в моей местности? Возможно, недалеко уже есть зеркало.
  • Есть ли у меня ресурсы для содержания зеркала? Зеркала занимают значительное дисковое пространство и полосу пропускания, зеркало должно оправдывать свою цену.
  • Является ли зеркало правильным выбором? Если вы хотите поддерживать в первую очередь пользователей, использующих с вами одного и того же провайдера, либо одну и ту же сеть, то вероятно лучше выбрать кэширующий прокси, такой как apt-cacher-ng, squid или varnish.

Что зеркалировать

Главная страница зеркала перечисляет архивы, доступные для зеркалирования.

  • Пользователи будут искать архив debian/ для установки Debian через сеть, для создания дисков (с помощью jigdo), и для обновления уже установленных систем. Рекомендуется сделать зеркало этого репозитория.
  • debian-cd/ — это архив, который не одинаков для разных серверов зеркал. На некоторых сайтах он содержит шаблоны jigdo для создания образов дисков (используется совместно с файлами из debian/), на некоторых он содержит уже созданные образы дисков, а на некоторых сайтах содержится оба варианта.
    Подробную информацию о зеркалировании смотрите на странице зеркалирование образов дисков.
  • debian-archive/ содержит настоящий архив старых и вышедших из употребления версий Debian. Главным образом он будет интересен лишь малому числу пользователей. (Если вы не уверены, что хотите зеркалировать этот архив, то скорее всего вам это и не нужно.)

Более точную информацию о размерах зеркала смотрите на странице размер зеркала.

Откуда зеркалировать

Как зеркалировать

Рекомендуемым методом зеркалирования является набор сценариев ftpsync, который доступен в двух видах:

В качестве протокола зеркалирования мы настоятельно рекомендуем использовать rsync.

Не используйте собственные сценарии и не используйте rsync в режиме одного прохода. Использование ftpsync гарантирует, что обновления осуществляются так, что apt работает нормально. В частности, ftpsync обрабатывает переводы, содержимое и другие файлы метаданных, чтобы при работе apt не возникли ошибки при выполнении проверок в случае, когда пользователь обновляет список пакетов во время обновления зеркала. Более того, этот инструмент также создаёт trace-файлы, содержащие дополнительную информацию, которая полезна для определения того, работает зеркало или нет, какие архитектуры на нём доступны, а также откуда оно обновляется.

Частичное зеркалирование

Принимая во внимание большой размер архива Debian, можно посоветовать зеркалировать лишь часть архива. Открытые зеркала должны содержать все выпуски (тестируемый, нестабильный и т. д.), но можно ограничить набор архитектур. В файле настройки ftpsync имеются опции ARCH_EXCLUDE и ARCH_INCLUDE для этой цели.

Когда зеркалировать

Главный архив обновляется четыре раза в день. Зеркала обычно начинают обновляться около 3:00, 9:00, 15:00 и 21:00 (всё время по UTC), но это не фиксированное время, и вы не должны опираться на эти времена при зеркалировании.

Ваше зеркало должно обновляться спустя несколько часов после начала обновления главного зеркала. Вы должны проверить, оставил ли сайт, с которого вы зеркалируете, файл с отметкой времени в его поддиректории project/trace/ . Файл с отметкой времени будет назван как сайт, и он будет содержать полное время последнего обновления его зеркала. Добавьте пару часов к этому времени (для уверенности) и затем зеркалируйте.

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

Самый лёгкий путь автоматически ежедневно запускать зеркалирование, это использовать cron. Детали смотрите в man crontab .

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

Проталкивающее зеркалирование

Проталкивающее зеркалирование — это форма зеркалирования, которую мы разработали для уменьшения времени, требуемого для того, чтобы изменения в архиве достигли зеркал. Сервер зеркала использует триггер SSH, чтобы сказать клиентскому зеркалу обновить себя. Более подробное описание того, как это работает, почему оно безопасно, а также как настроить проталкивающее зеркалирование, смотрите в полном разъяснении.

Рекомендуемые добавочные установки

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

Как добавить зеркало в список зеркал

Если вы хотите, чтобы ваше зеркало было представлено в официальном списке зеркал, то

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

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

Списки рассылки

Замечания для закрытых (частичных) зеркал

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

Мировые серверы-зеркала Debian

Debian распространяется (зеркалированием) сотнями серверов в Интернет. Используя ближайший к вам сервер, вы ускорите скачивание, а также сократите нагрузку на наши центральные серверы и Интернет в целом.

Зеркала Debian бывают первичными и вторичными:

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

Используйте ближайший к вам сайт для более быстрой загрузки, независимо от того, первичный он или вторичный. Для определения задержки доступа к сайту можно использовать программу netselect; для определения скорости скачивания можно использовать программу wget или rsync. Заметим, что географическая близость часто не является важным фактором при выборе зеркала.

Как организовать зеркало компакт-дисков Debian

Чтобы держать зеркало образов CD Debian, вам нужна машина под управлением Linux или другого клона Unix с постоянным надёжным подключением к Интернет. Зеркала образов CD Debian хранят образы CD и DVD .iso различного размера, файлы jigdo (.jigdo и .template), файлы BitTorrent (.torrent) и проверочные файлы для этих образов (SHA512SUMS* и SHA256SUMS*).

Главный сайт

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

Рекомендуется зеркалирование с помощью rsync

Программа rsync — удачное решение этих проблем. Она менее эффективна, чем другие способы зеркалирования, специфичные для Debian, но её проще настроить. Более того, она обеспечивает то, что все файлы будут переданы корректно, и что метаданные (например, отметки времени) будут сохранены так же, как и данные файла.

Зеркалирование с помощью jigdo-lite не рекомендуется

Последние версии программы jigdo-lite поддерживают пакетную загрузку нескольких образов. Однако, мы не рекомендуем использовать для создания зеркал дисков Debian jigdo-lite — лучше использовать jigdo-mirror .

Рекомендуется зеркалирование с помощью jigdo-mirror

На самом деле, это означает: зеркалировать файлы .iso с помощью jigdo-mirror , а затем (если вы хотите зеркалировать также другие файлы, например, .jigdo и .template) запустить rsync для синхронизации каталога. При этом будут загружены остальные файлы. В настройке могут помочь скрипты на этой странице.

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

/.jigdo-mirror для конфигурирования программы. Вот пример:

Переменные include и exclude содержат список архитектур, для которых вы хотите создать образы (регулярные выражения). Более подробную информацию см. на странице руководства jigdo-mirror или в исходном коде (это скрипт оболочки с обширными комментариями).

Как организовать автоматическое зеркало

Если вы хотите, чтобы ваше зеркало входило в систему обновления, посетите эту страницу.

Отказ от зеркалирования отдельны� файлов

Как называются образы .iso и каков их размер

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

  • *-netinst.iso: Один образ для каждой архитектуры, до 500 МБ
  • *-dvd.iso (однослойный DVD): Несколько образов, каждый размером до до 4482 МБ. Для buster имеются до 16 образов DVD для каждой архитектуры. Серверы Debian предоставляют лишь небольшую часть образов DVD в виде файлов .iso для прямой загрузки: 3 для amd64, 3 для i386 и 1 для каждой оставшейся архитектуры. Остальные образы предоставляются только с помощью jigdo.
  • *-bd.iso (однослойный Blu-Ray): Как и в случае с DVD, но отдельные образы имеют размер до 23 ГБ. Эти образы доступны только в виде jigdo-файлов для ограниченного набора архитектур (amd64 и i386) и для образов с исходным кодом.
  • *-dlbd.iso (двухслойный Blu-Ray): Как и в случае с DVD, но отдельные образы имеют размер до 48 ГБ. Эти образы доступны только в виде jigdo-файлов для ограниченного набора архитектур (amd64 и i386) и для образов с исходным кодом.
  • *-STICK16GB*.iso (16ГБ образы для USB): Как и в случае с DVD, но отдельные образы имеют размер до 16 ГБ. Эти образы доступны только в виде jigdo-файлов для ограниченного набора архитектур (amd64 и i386) и для образов с исходным кодом.

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

Мы будем рады появлению любых новых зеркал образов CD. Заранее благодарим вас!

Для любого сервера необходимо иметь возможность оперативно получить актуальное свежее программное обеспечение. Я расскажу, как настраивать список репозиториев в Debian - добавлять, удалять, редактировать разные repository в sources.list. Разберем внимательно эту тему, обратив внимание на различные нюансы, которые присутствуют, как и в любом другом деле.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья является частью единого цикла статьей про сервер Debian.

Цели статьи

  1. Рассмотреть различные ветки официальных репозиториев.
  2. Подробно рассказать, как настраивать репозитории в debian.
  3. Показать на примере, как настроить локальный репозиторий.
  4. Составить список актуальных репозиториев для старых версий Debian.

Введение

В первую очередь расскажу, что такое репозиторий (repository) своими словами. В общем случае это место, где хранятся и поддерживаются какие-то данные. Применительно к операционным системам и конкретно к Debian, репозиторий - это файловый сервер, который хранит у себя пакеты для установки на операционную систему . Это могут быть как пакеты программ, так и обновлений для сервера в виде новых ядер, системных утилит и т.д.

Существуют repository не только для операционных систем, но и для программ. Там могут быть как уже скомпилированные и готовые к установке пакеты, так и исходные коды программных продуктов. Большинство репозиториев содержат готовые пакеты. Это относится и к стандартным репозиториям Debian.

Помимо официальных списков реп (транскрипция от сокращения repo), есть сторонние, которые поддерживают производители программ либо энтузиасты. Нужно внимательно относиться к сторонним репозиториям, не добавлять их бездумно. Там может располагаться любое ПО, в том числе не то, что заявлено изначально. Либо они могут быть взломаны для размещения вредоносных программ.

Управлением пакетами и работой с repository lists в Debian занимаются отдельные утилиты:

  • apt
  • apt-get
  • synaptic
  • aptitude и др.

В данной статье мы не будем рассматривать их отличия, так как это тема отдельного повествования. Все они работают со стандартным списком источников, который в общем случае располагается в /etc/apt/sources.list.

Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:

Список репозиториев в sources.list

Изначально, содержимое sources.list будет зависеть от того, какой источник для пакетов вы выбрали во время установки debian. К примеру, в моем случае для системы Debian 10 он выглядит следующим образом.

Репозитории Debian в sources.list

Для Debian 11 bullseye немного изменился формат записи для репозитория security. Теперь он выглядит так:

Репозитории Debian 11 Bullseye

В общем случае файл sources.list имеет следующую структуру:

deb и deb-src тип архива, бинарные пакеты (deb) или пакеты с исходным кодом (deb-src)
http://site.example.com/debian url репозитория
distribution псевдоним релиза (bullseye, buster, stretch и т.д.), либо класс релиза (stable, oldstable и т.д.)
component main, contrib или non-free набор пакетов

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

Помимо основного файла sources.list, репозитории могут располагаться в отдельных файлах в директории /etc/apt/sources.list.d. Формат файлов такой же, как и у основного. Обычно туда добавляют отдельно в каждый файл набор источников для какой-то определенной программы. Например, proxmox размещает в отдельном файле свой платный репозиторий.

Типы официальных репозиториев в Debian

Как я уже показал выше, в sources.list используются псевдонимы, либо классы релиза, а так же разные ветки наборов пакетов. С псевдонимами релизов все понятно. Они названы в честь персонажей мультфильма История игрушек (Toy story) - Wheezy, Jessie, Stretch, Buster, Bullseye и т.д. А вот насчет классов релизов поговорим отдельно. Существуют следующие официальные классы релизов Debian.

Stable

Стабильная ветка официального текущего релиза Debian. То есть это самая свежая и актуальная версия, которую рекомендуется использовать. Официальный репозиторий стабильной ветки содержит проверенный набор программ, зачастую не очень свежих версий. Это плата за надежность. В production рекомендуется использовать пакеты именно из репозитория stable.

В этом репозитории регулярно публикуются все актуальные обновления текущего релиза. Он формируется из ветки Testing, которая в момент релиза новой версии превращается в Stable.

Oldstable

Oldstable - кодовое имя предыдущего stable repository. Для этого репозитория выпускаются обновления безопасности. Ветка Oldstable формируется из Stable предыдущего релиза на момент публикации нового.

Testing

Testing содержит в себе текущее состояние разработки нового стабильного релиза. После его выхода, testing становится stable. Пакеты в testing попадают из репы unstable. В общем случае использовать репозиторий testing следует только для тестовых целей, чтобы посмотреть на новый релиз.

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

Unstable (sid)

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

Даже если софт из unstable не повредит работе системы, он может нарушить зависимости пакетов, так что потом может быть затруднительно вернуться на stable repo.

Experimental

Experimental repository содержит пакеты и утилиты, которые в данный момент только разрабатываются и находятся в состоянии alpha версии. Этот репозиторий предназначен только для разработчиков и тестировщиков. Если будете его использовать в рабочей системе, с большой долей вероятности, сломаете ее.

Backports

Backports repository выступает как некий компромисс между стабильностью основной ветки и свежим набором программ из ветки testing. Репозиторий backports содержит пакеты преимущественно из testing и немного из unstable (только для обновлений безопасности).

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

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

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

Важное замечание. Я не рекомендую в качестве репозиториев указывать классы релизов - stable, oldstable и т.д. Всегда явно указывайте название релиза - bullseye, buster, stretch и т.д. Иначе в случае выхода нового релиза, вы при обычном обновлении получите обновление релиза, даже если не собирались его обновлять.

Security updates

Существует отдельный репозиторий только для security updates. Добавить его можно следующим образом:

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

Stable-updates

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

Через этот repository вы будете по мере выпуска получать обновления, которые готовятся к публикации в очередном обновлении релиза. Так называемые Point Releases - 10.1, 10.2 и т.д. Случаются они не часто, примерно раз в 2-3 месяца, но проверенные для них обновления можно получить ранее как раз с помощью stable-updates.

Ветки main, contrib, non-free

Каждый официальный репозиторий Debian имеет по 3 ветки:

  1. main состоит из DFSG-compliant пакетов, которым не требуется другое ПО из других источников. Эти пакеты считаются частью дистрибутива Debian. Они полностью свободны для любого использования.
  2. contrib пакеты так же содержат DFSG-compliant ПО, но их зависимости могут требовать дополнительное ПО, которое может быть в других источниках, например ветке non-free.
  3. non-free содержит все остальное ПО, которое не соответствует DFSG.

DFSG - Debian Free Software Guidelines, критерии Debian по определению свободного ПО. В любом случае, пакеты из всех трех веток main, contrib и non-free полностью протестированы и подготовлены для работы с дистрибутивом Debian.

Теперь, зная всю теорию по репозиториям в Debian, мы можем проанализировать файл sources.list, который мы получили после установки. В нем подключены 3 репозитория с ветками main.

Это stable repo текущего релиза. Далее идет security repository для установки свежих обновлений безопасности.

И в завершении stable-updates для получения стабильных обновлений до очередного Point Release текущего дистрибутива.

Признаюсь честно, я много лет администрировал сервера с Debian, а до конца не понимал, что у меня записано в sources.list. Разобрался полностью только сейчас, когда писал статью. До этого просто копировал по привычке конфиги с репами. Догадывался о чем там речь, но точно не знал. Теперь восполнил пробел и поделился с вами информацией.

Добавить новый repository в debian

Теперь от теории перейдем к практике. Давайте вручную добавим новый репозиторий в Debian. К примеру, нам нужно установить на сервер стабильную версию MariaDB. Для этого добавим ее репозиторий. Это можно сделать либо в файле sources.list, но лучше создать отдельный в sources.list.d. Назовем его MariaDB.list.

После подключения репозитория, надо добавить его gpg ключ.

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

Добавление репозитория в Debian

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

Новый репозиторий

Как я уже говорил, для настройки нового репозитория, вы могли просто добавить эти же 2 строки с параметрами в sources.list напрямую. Разницы никакой нет.

Зеркало официального репозитория yandex mirror

Repository yandex mirror можно так же использовать для сетевой установки систем.

Sources List Generator (генератор списка репозиториев)

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

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

К примеру, я указал в List Generator, что мне надо подготовить список репозиториев со следующими параметрами:

  1. Репозиторий Stable
  2. Ветка main (просто отключил ветки contrib и non-free)
  3. Mirror - Russia
  4. Включить репозитории Security и Updates
  5. Добавить repo для софта - Docker, MariaDB, Nginx, NodeJS, Php, Webmin

В итоге получил вот такой sources.list

К нему еще список gpg ключей для импорта. В принципе, к списку у меня претензий нет. Все по делу. Нужно только проверить php и mariadb repository. Мне предложенные не знакомы.

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

Локальный репозиторий

Есть несколько способов создать локальный репозиторий Debian. Из того, что я пробовал, самым простым и удобным мне показался apt-mirror, но у него есть один баг, если его использовать как зеркало официальных репозиториев. Он не качает переводы в формате .gz и.xz, только .bz2. В итоге, когда будете использовать локальный репозиторий в качестве зеркала официального, получите ошибку:

Дальше создаем каталог для локального репозитория и конфиг.

Конфиг делаем примерно следующего содержания.

Выполняем инициализацию репозитория.

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

Для того, чтобы подключить локально новый репозиторий, его нужно добавить в sources.list.

После этого выполняете обновление кэша пакетов и увидите в списке репозиториев свой локальный.

Локальный репозиторий Debian

Архив репозиториев для старых версий

Ниже представляю готовые настройки репозиториев для прошлых версий.

Debian 9 stretch

Репозитории Debian 9 stretch пока еще находятся в основных репозиториях:

В скором времени они тоже переедут в архив. Случится это в июне 2022 года, когда кончится период длительной поддержки. Тогда их можно будет подключить по следующим адресам:

Debian 8 jessie

Репозитории Debian 8 jessie:

Debian 7 wheezy

Репозитории Debian 7 wheezy:

Debian 6 squeeze

Репозитории Debian 6 squeeze:

Возможные ошибки

Рассмотрим наиболее популярные ошибки, которые возникают при добавлении и обновлении репозиториев.

Репозиторий не содержит файла Release

Текст ошибки, по идее, дает готовый ответ. В репозитории нет обязательного файла Release. Но суть в том, что он скорее всего есть. Дело тут чаще всего в том, что вы добавили к себе репозиторий, который не содержит указанной вами ветки. К примеру, вы добавили репозиторий в дистрибутив Buster, а в репозитории нет поддержки этого дистрибутива. Предыдущие есть, а этого нет.

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

Заключение

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

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Доброго времени суток. Решил установить себе Debian 7 Через VMware 12 Pro. При выборе зеркала архива-выдает ошибку…Может кто знает что за херня то такая…. По видео в ютубе все легко и быстро… Никто не знает что там происходит во время паузы… Кто может через тайм вивер помочь? Заранее спасибо!)


Оно вообще хотя бы old old stable? Приложи лог ошибки, может знающие подскажут.


Оно вообще хотя бы old old stable?


Что за ошибка-то?
И прекрати ставить по видео, включи голову и читай, что тебе инсталлер пишет.


А ленни oldoldoldoldold stable?

читать инсталлятор. У меня большая часть все равно не как на видео. Дебилизм вообщем.


Потому что реп деба 7 больше нет?


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


Может, он с диска ставит.


Зачем такой анахронизм использовать?

При выборе зеркала архива-выдает ошибку.

Используйте полную установку с диска, без подключения к интернету.

После установки меняйте адрес репозитория на существующий.


Если коротко, то не надо в 2019 году устанавливать Debian 7, так как даже долгосрочная составляющая его поддержки закончилась в середине 2018 года.

А если чуть подробнее, то при установке

Возникнет проблема с выбором зеркала, так как Debian 7 уже удалили со всех зеркал, кроме архивного.

Будут сложности из-за того, что срок действия электронной подписи, которой заверен репозиторий, давно истек, так что при попытке что-нибудь скачать оттуда apt-get будет сопротивляться.

Зачем тебе Debian 7? Может установишь Debian 10? Он этим летом вышел. Еще поддерживается.

Да да. Я тоже про семерку косо подумал. Ставлю десятую. Прям эпоху винды вспомнил. Спасибо большое что так быстро отозвались помочь. Нигде не видел еще такую скорость ответа!)

Напиши словами что ты делал и что получил в итоге.

хотел как по видео сделать себе на пк игровой хостинг.. Помогаю в настройках, компиляции т.д. плагинов. Легче было мне делать это на своем сервере, проблем было бы меньше. Так вот все по видео делаю, и когда дело доходит до менеджера apt, то не могу выбрать зеркало.. Ошибка и все. Везде там, и Россию выбирал, и что только не было. Без Облачного хранилище можно дальше идти, но в фаил зилла нужна мне папка не создается. ДЛя настройки панели.. Ошибка только тут, все остальное,вроде как работает..

image

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

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

Изучив, какие сейчас имеются ОС для решения данной задачи, я пришёл к выводу, что изо всего многообразия, наиболее развиты, широко используемы и, следовательно, проработаны, FreeNAS на основе FreeBSD и OpenMediaVault на основе Debian, созданный одним из разработчиков FreeNAS.

FreeNAS стабилен, удобен, гибок и вообще хорош, но попытавшись его поставить, вместо FreeBSD bsdinstall, я увидел совершенно урезанный инсталлятор, в котором я могу только выбрать диски и ввести пароль root: даже разметить диски нельзя.
GELI мне понравился больше cryptsetup на Linux, как и BSD-шный parted.
Попытавшись сделать root на шифрованном разделе, я понял, что эта задача нетривиальна, несмотря на то, что они уже используют root на ZFS.
Затем, пообщавшись, с сообществом FreeNAS, которые стали доказывать, что FreeNAS — не ОС, а приложение, я решил установить OMV.

К тому же, Debian — моя основная ОС и с Linux дела обещали быть проще.

Выяснилось, что не совсем. Задача создания такой конфигурации, как у меня, совсем не тривиальна. Потому, я решил написать данную статью.

Существующие ресурсы

Руководство проекта ZFS for Linux — основной документ, без которого мне пришлось бы разбираться гораздо дольше.
Его необходимо хотя бы кратко посмотреть.

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

Ну и, всё же упомяну здесь man по cryptsetup, руководство Debian по шифрованию, статьи и документацию по ZFS (там есть ссылки на оригинальную документацию).

Много данных по ZFS есть на форуме FreeNAS.

И уже в процессе написания данной статьи, выяснилось, что ничто не ново под Луной.

Однако, моя несколько схема другая, и она имеет, как свои недостатки, так и преимущества.

Схема организации диска

Система установлена на двух SSD: Micron и Samsung PRO (в дальнейшем, я буду к ним обращаться).

На каждой SSD такая схема разбиения:

  • part_boot — раздел с загрузчиком. Размер = 1 GB.
  • part_system — раздел с системой. Размер = 32 GB (Рекомендованный размер: 16 GB * 2).
  • part_slog — раздел с SLOG. Размер = 5 GB.

part_system и part_slog зашифрованы в XTS режиме.

В целом, выглядит это так:

ZIL и корень системы дублируются на вторую SSD средствами ZFS.

Подготовка

Установка

Дальнейшие действия во много заимствованы из руководства и даны с некоторыми моими пояснениями.
Предполагается, что все команды выполняются от root.

Добавить contrib в sources.list, что требуется для установки ZFS

echo "deb http://ftp.debian.org/debian stretch main contrib" > /etc/apt/sources.list && apt-get update

Установить debootstrap и zfs-dkms

apt-get install debootstrap linux-headers-$(uname -r) zfs-dkms

Установить cryptsetup

apt-get install cryptsetup

Забить SSD случайными данными

dd if=/dev/urandom bs=4M oflag=direct of=/dev/disk/by-id/ata-Samsung_SSD_850_PRO && blkdiscard /dev/disk/by-id/ata-Samsung_SSD_850_PRO
dd if=/dev/urandom bs=4M oflag=direct of=/dev/disk/by-id/ata-Micron_1100 && blkdiscard /dev/disk/by-id/ata-Micron_1100

Это займёт порядка 30 минут для SSD размером 250 ГБ.
Вызов blkdiscard пометит все блоки на SSD, как неиспользуемые.

Создать разделы для загрузки

sgdisk -a1 -n1:34:2047 -t1:EF02 -n2:0:+1G -t2:8300 /dev/disk/by-id/ata-Samsung_SSD_850_PRO
sgdisk -a1 -n1:34:2047 -t1:EF02 -n2:0:+1G -t2:8300 /dev/disk/by-id/ata-Micron_1100

Сюда, впоследствии будет установлен GRUB.
Создание первого маленького раздела обязательно: без него не загрузится.

Создать системные разделы

sgdisk -n3::+32G -t3:8300 -c3:part_system1 /dev/disk/by-id/ata-Samsung_SSD_850_PRO
sgdisk -n3::+32G -t3:8300 -c3:part_system2 /dev/disk/by-id/ata-Micron_1100

Создать разделы SLOG

sgdisk -n4::+5G -t4:8300 -c4:part_slog1 /dev/disk/by-id/ata-Samsung_SSD_850_PRO && sgdisk -n4::+5G -t4:8300 -c4:part_slog2 /dev/disk/by-id/ata-Micron_1100

В этой статье, они никак не используются.

Создать шифрованные корневые разделы

Стоит это делать руководствуясь документом от Debian, если вы не очень хорошо знаете cryptsetup.
Здесь используется LUKS, что несколько упрощает работу с шифрованием.

cryptsetup --cipher aes-xts-plain64 --key-size 512 --verify-passphrase --hash sha512 --use-random -v luksFormat /dev/disk/by-id/ata-Samsung_SSD_850_PRO-part3
cryptsetup --cipher aes-xts-plain64 --key-size 512 --verify-passphrase --hash sha512 --use-random -v luksFormat /dev/disk/by-id/ata-Micron_1100-part3

Теперь надо открыть разделы:

cryptsetup luksOpen /dev/disk/by-id/ata-Samsung_SSD_850_PRO-part3 root_crypt1
cryptsetup luksOpen /dev/disk/by-id/ata-Micron_1100-part3 root_crypt2

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

Создать корневой ZFS pool

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

ashift — степень, в которую надо возвести двойку, чтобы получить указанный размер блока.
12 — это блок 4K.
Получить размер блока возможно командой blockdev --getbsz /dev/<disk> , либо из технической спецификации на устройство.
Если размер блока не соответствует размеру сектора диска, будет просадка производительности.
Современные жёсткие диски имеют размер сектора в 4K и эмуляцию сектора 512 байт.
За исключением высокооборотистых SAS дисков низкого объёма (порядка сотен ГБ), размер сектора которых остаётся 512 байт.

Создать наборы данных для корневой ФС

zfs create -o canmount=off -o mountpoint=none rpool/ROOT
zfs create -o canmount=noauto -o mountpoint=/ rpool/ROOT/debian

Сделать корень загрузочным

zfs mount rpool/ROOT/debian
zpool set bootfs=rpool/ROOT/debian rpool

Создать прочие наборы данных

zfs create -o setuid=off rpool/home
zfs create -o mountpoint=/root rpool/home/root
zfs create -o canmount=off -o setuid=off -o exec=off rpool/var
zfs create -o com.sun:auto-snapshot=false rpool/var/cache
zfs create rpool/var/log
zfs create rpool/var/spool
zfs create -o com.sun:auto-snapshot=false -o exec=on rpool/var/tmp

На данном этапе, структура ФС готова.

Установить минимальную систему

chmod 1777 /mnt/var/tmp
debootstrap stretch /mnt && zfs set devices=off rpool

Сконфигурировать систему

echo nas > /mnt/etc/hostname .
echo "rpool/ROOT/debian / zfs defaults,noatime 0 0" > /mnt/etc/fstab
echo "tmpfs /tmp tmpfs nosuid,nodev 0 0" >> /mnt/etc/fstab

  • iface_name — имя активного интерфейса в ip addr show .
  • echo "auto $iface_name" > /mnt/etc/network/interfaces.d/$iface_name
  • echo "iface $iface_name inet dhcp" >> /mnt/etc/network/interfaces.d/$iface_name

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

Переключиться в установленную систему

mount --rbind /dev /mnt/dev && mount --rbind /proc /mnt/proc && mount --rbind /sys /mnt/sys
chroot /mnt /bin/bash --login
mount /tmp

Далее, вся работа идёт в установленной системе.

Настроить APT и установить нужные пакеты

Сборка модуля ZFS займёт ощутимое время.

Настроить cryptsetup

  • Он не работает с ZFS.
  • При загрузке, он не кэширует вводимый пароль.

Баг на ZFS уже давно заведён, туда отправлены и мои доработки.
На кэширование пароля я завёл баг и отправил фикс, так что, возможно он уже будет исправлен.

Тем не менее, я привожу полные скрипты и диффы:

diff /usr/share/initramfs-tools/hooks/cryptroot cryptroot diff /usr/share/initramfs-tools/scripts/local-top/cryptroot cryptroot

echo "root_crypt1 /dev/disk/by-id/ata-Samsung_SSD_850_PRO-part3 none luks,discard" >> /mnt/etc/crypttab
echo "root_crypt2 /dev/disk/by-id/ata-Micron_1100-part3 none luks,discard" >> /mnt/etc/crypttab

Здесь диски указываются не по UUID, это сделано специально.
Хук cryptroot, либо поправленный мною скрипт (о чём ниже) почему-то некорректно отработали с UUID-ами и не увидели разделы.

Установить загрузчик и убедиться, что он распознаёт корневую ФС

apt-get install grub-pc
grub-probe / — должен вывести "zfs"

Предпочтительный вариант установки загрузчика на зеркало ZFS, возможно посмотреть в этой статье

Настроить загрузчик и установить в загрузочную запись

echo GRUB_PRELOAD_MODULES=\"part_gpt zfs\" >> /etc/default/grub
echo GRUB_DISABLE_OS_PROBER=true >> /etc/default/grub
echo "export ZPOOL_VDEV_NAME_PATH=YES" > /etc/profile.d/grub2_zpool_fix.sh
ZPOOL_VDEV_NAME_PATH=YES update-grub
update-initramfs -u -k all

Проинициализировать загрузочные разделы

cd && tar -C / -cf boot.tar /boot
mkfs.ext4 -L boot1 -m0 /dev/disk/by-id/ata-Samsung_SSD_850_PRO-part2
mkfs.ext4 -L boot2 -m0 /dev/disk/by-id/ata-Micron_1100-part2

Установить загрузчик

mount /dev/disk/by-id/ata-Samsung_SSD_850_PRO-part2 /boot && tar -C / -xf boot.tar
update-initramfs -k all -u -t && update-grub
grub-install --bootloader-id=debian1 --recheck --no-floppy /dev/disk/by-id/ata-Samsung_SSD_850_PRO
umount /boot
mount /dev/disk/by-id/ata-Micron_1100-part2 /boot && tar -C / -xf boot.tar
update-initramfs -k all -u -t && update-grub
grub-install --bootloader-id=debian2 --recheck --no-floppy /dev/disk/by-id/ata-Micron_1100
umount /boot

Установить пароль root

Создать снимок

zfs snapshot rpool/ROOT/debian@install

Выполнить отмонтирование и перезагрузку

umount /tmp
exit
mount | grep -v zfs | tac | awk '/\/mnt/ ' | xargs -i<> umount -lf <>
zpool export rpool
reboot

Загрузиться в установленную систему и выполнить её донастройку

Проверить работоспособность пула (пул и оба диска в нём должны быть ONLINE):
zpool status -v

Установить SSH сервер.
Создать нового пользователя:
zfs create rpool/home/user
adduser user
cp -a /etc/skel/.[!.]* /home/user
chown -R user:user /home/user
usermod -a -G audio,cdrom,dip,floppy,netdev,plugdev,sudo,video user

Обновить систему

apt dist-upgrade --yes

После этого шага у вас есть Debian с корнем на шифрованном зеркале ZFS.

Предполагаемые FAQ

Не снизит ли шифрование производительность?

Снизит.
Но это не имеет большого значение по следующим причинам:

  • В большинстве новых CPU (в особенности серверных) поддерживается AES-NI.
  • Это диск с ОС, от которого не требуется сверх-быстродействия.
  • Всегда возможно использовать кэширование (preload, например).

В целом, снижение быстродействия не то что, невозможно будет заметить, а даже сложно будет измерить.

Почему используется не EFI загрузчик?

На это есть две причины:

  • Плата, которую я использую, плохо загружается с EFI.
  • Обычный /boot c grub внутри легко потом включить в зеркало ZFS, что не так просто сделать с EFI разделами.

Почему не используется ZFS шифрование?

Потому что, на данный момент оно ещё сырое и оно шифрует не всё, оставляя метаданные.

Почему /boot не на ZFS?

Потому что, пока я этого ещё не сделал. Но grub поддерживает это.

Почему загрузка идёт не с шифрованного раздела?

Grub поддерживает эту возможность, но пароль придётся вводить трижды (сначала, на каждый корневой раздел, затем для cryptroot).
И есть у этого способа ещё недостатки, о которых я не буду здесь говорить.

Почему не используется FreeBSD, ведь там же даже шифрование с корнем на ZFS "из коробки"?

Потому что, я хочу сделать NAS с WEB-интерфейсом. FreeBSD — это ОС, которую придётся допиливать, чтобы работало приложение FreeNAS.
OpenMediaVault — это пакет, который я могу поставить в Debian.

Благодарности

Хочу выразить свою благодарность, прежде всего, русскому сообществу Debian: они сильно помогли, отвечая на мои вопросы.
Сообществу FreeNAS, которое имеет огромную базу знаний по ZFS.
Людям, которые портировали ZFS на Linux.

Читайте также: