linux и linux с приставкой generic: в чём разница?
Подскажите, пожалуйста: в чём разница между ядром и его компонентами в репозитории Ubuntu и такими же точно, но с приставкой generic?
То есть: image, headers и так далее — всё тоже, версия таже, только прибавлено generic.
Jeffrey
05.01.13 19:40:58 MSK
generic это ядро без наложения убунтовских patch'(ев).
hope13 ★★★
( 05.01.13 19:46:52 MSK )
Ответ на: комментарий от hope13 05.01.13 19:46:52 MSK

linux-image — еще один метапакет, который в свою очередь зависит от linux-image-generic (так же и с headers). Разницы практически нет.
Скорее всего пакеты без приставки *generic оставили для выбора дефолтного ядра убунты (для неких будущих целей). Сейчас ядро по-умолчанию — это linux-image-generic (и там дальше по зависимостям).
KennyMinigun ★★★★★
( 05.01.13 19:51:15 MSK )
Последнее исправление: KennyMinigun 05.01.13 19:53:17 MSK (всего исправлений: 2)
Ответ на: комментарий от hope13 05.01.13 19:46:52 MSK
Простите, не могли бы вы помочь разобраться?
Я установил систему Ubuntu 12.10, ничего не ставил и не обновлял. И что я вижу?
uname -r 3.5.0-17-generic
Почему грузится ядро без патчей? И как грузить с патчами?
Jeffrey
( 05.01.13 19:56:20 MSK ) автор топика
Ответ на: комментарий от KennyMinigun 05.01.13 19:51:15 MSK
Скорее всего пакеты без приставки *generic оставили для выбора дефолтного ядра убунты (для неких будущих целей)
Ядерная защита в Astra Linux SE 1.6 и как ее включить. Ядро Hardened
Как защититься от ядерных эксплоитов эксплуатирующих уязвимости ядра Linux? Рассмотрим как это реализовано в отечественной ОС Astra Linux SE 1.6.

Многие из Вас слышали, а кто-то давно уже использует ОС Astra Linux SE 1.6 — отечественную операционную систему, сертифицированную по ФСБ, Минобороны и ФСТЭК России. На платформе Astra Linux развернуты и функционируют десятки информационных систем — как в государственных, так и в коммерческих структурах. На фоне определенного ажиотажа вокруг отечественных ОС и темы импортозамещения становится особенно актуально применение Astra Linux SE. Много слов сказано о безопасности этой операционной системы и большинство пользователей считают, что достаточно просто установить ОС Astra Linux и они получат безопасную среду для работы автоматически, ничего не настраивая. Конечно это не так. И в этой статье я расскажу об одном из основных компонентов комплекса средств защиты (КСЗ) — ядре hardened и покажу как нужно его использовать.
Ядро hardened в Astra Linux SE 1.6
Ядро hardened — это несколько изменений в компиляторе и ядре, которые увеличивают общую защищенность системы от взлома. Ядро hardened умеет блокировать массу потенциально опасных операций. В ОС Astra Linux SE 1.6 поставляется две версии ядра — это hardened и generic. Ядро hardened более компактное по размеру. Из него убраны многие компоненты, которые не используются для обычной работы, но могут использоваться для отладки. Так же в этом ядре присутствуют технологии, которые обеспечивают очистку информации стека ядра после системных вызовов. Это позволяет защититься от некоторых эксплоитов, которые нацелены на считывание неочищенной информации после системных вызовов.
На практике hardened ядро на несколько (2-3%) медленнее, чем ядро generic, но оно обеспечивает эффективную защиту от эксплоитов, которые нацелены на эксплуатацию уязвимостей ядра (ядерных эксплоитов).
Ограничения по работе с памятью в ядре hardened:
- запрет записи в область памяти, помеченную как исполняемая;
- запрет создания исполняемых областей памяти;
- запрет перемещения сегмента кода;
- запрет создания исполняемого стека;
- случайное распределение адресного пространства процесса;
- очистка остаточной информации из стека ядра после системных вызовов.
Включаем использование ядра hardened в Astra Linux SE 1.6
Включить использование ядра hardened можно во время установки Astra Linux SE 1.6 и позже, уже непосредственно в установленной ОС.
Во время установки Astra Linux SE 1.6 эта настройка делается в разделе «Дополнительные настройки ОС».

Для того, чтобы ОС по умолчанию загружала ядро hardened необходимо отметить параметр «Использовать по умолчанию ядро Hardened».
Так же, чтобы исключить возможность выбора пользователем варианта загрузки незащищенного ядра generic, необходимо в этом же разделе установить параметр «Запретить вывод меню загрузчика».
Если Вы не установите параметры описанные выше, и продолжите установку Astra Linux SE 1.6, то после установки ОС, во время загрузки, по умолчанию будет загружаться незащищенное ядро generic, а не hardened. Так же, с такими настройками, у пользователя будет возможность выбора ядра generic для загрузки.

Скорее всего, такая ситуация с загрузкой по умолчанию незащищенного ядра generic встретится у многих администраторов. Для того, чтобы настроить загрузку защищенного ядра hardened в уже установленной ОС, необходимо администратором (высокоцелостным root) в графическом интерфейсе открыть — «Панель управления — Система — Загрузчик GRUB2» и сделать следующие настройки:

- «Запись по умолчанию» — ядро hardened
- «Следующая запись станет загружаемой по умолчанию» — выбрать
- «Автоматически загружать запись по умолчанию после показа меню» — немедленно
После этих настроек, ОС будет сразу загружаться с защищенным ядром hardened, а возможность у пользователя выбрать для загрузки незащищенное ядро generic будет отсутствовать.
- Information Security
- Configuring Linux
- Server Administration
- System administration
Ядро
Ядро (англ. kernel) – то, вокруг чего строится всё остальное. Именно оно и называется Linux. Сейчас словом Linux в быту называют построенную на нём операционную систему, хотя по-хорошему она называется GNU/Linux (ядро Linux и ПО от проекта GNU, многие десятилетия находящейся в разработке).
В Ubuntu исппользуется ядро с большим количеством патчей, часть из которых добавляет нестабильные и экспериментальные возможности 1) .
Каждый релиз Ubuntu имеет собственную версию ядра. LTS -релизы начиная с 10.04 получили возможность обновить ядро до версий, входящих в состав более новых релизов.
| Версия Ubuntu | Версия ядра |
|---|---|
| 4.10 | 2.6.9 |
| 5.04 | 2.6.11 |
| 5.10 | 2.6.13 |
| 6.06 LTS | 2.6.15 |
| 6.10 | 2.6.18 |
| 7.04 | 2.6.19 |
| 7.10 | 2.6.20 |
| 8.04 LTS | 2.6.24 |
| 8.10 | 2.6.27 |
| 9.04 | 2.6.28 |
| 9.10 | 2.6.31 |
| 10.04 LTS | 2.6.32 |
| 10.10 | 2.6.35 |
| 11.04 | 2.6.38 |
| 11.10 | 3.0.4 |
| 12.04 LTS | 3.2 |
| 12.10 | 3.5 |
| 13.04 | 3.8 |
| 13.10 | 3.11 |
| 14.04 LTS | 3.13 |
| 14.10 | 3.16 |
| 15.04 | 3.19 |
Форки
pf-kernel – форк ядра, развиваемый одним из участников русскоязычного сообщества. Цель сего проекта — собрать максимально оптимизированное по скорости и возможностям ядро под себя, заодно предоставив другим возможность пользоваться этими наработками.
Zen Kernel – форк, в рамках которого развивается ядро пригодное для ежедневного использования. Не расчитано на серверные системы.
Установка
Ядро является одним из жизненно важных компонентов каждого дистрибутива Linux. В Ubuntu ядро содержится в пакетах linux-image-версия_ядра-тип_ядра . Для простоты обновления так же имеется пакет linux-image-тип_ядра , в зависимостях которого указана последняя версия ядра имеющеяся в репозитории.
Нумерация версий ядра Ubuntu и на сайте kernel.org не совпадает, так как для обозначения добавленных патчей разработчики из Canonical добавляют микроверсию. Например, версия 3.2.0-23 будет означать, что ядро базируется на ветке 3.2, на которую было наложено 23 патча.
В репозитории Ubuntu поддерживаются следующие типы ядер:
generic – ядро, подходящее для большей части систем.
generic-pae 2) – ядро, включающее в себя возможность адресовать больше 4Гб оперативной памяти на 32-битных системах.
Начиная с Ubuntu 10.04 при установке с MinimalCD 3) система автоматически определяет объем оперативной памяти и устанавливает подходящее ядро.
Начиная с Ubuntu 12.04 это ядро включено в 32-битную версию дистрибутива по-умолчанию.
virtual – специально оптимизированное ядро для работы в виртуальных машинах.
server – серверный вариант ядра (начиная с релиза Ubuntu 12.04 обьеденен с generic ).
generic-pae ядро позволяет 32-битной системе использовать до 64ГБ общего объёма оперативной памяти, выделяя под нужды конкретного процесса не более 4ГБ, в то время как простое ядро generic работает не более чем с 4ГБ ОЗУ.
64-битное ядро позволяет адресовать до 1ТБ памяти, потребляемой процессами.
Если требуется обновить ядро на более новую мажорную версию 4) (обычно это связано с тем, что в новых версиях добавляется поддержка нового оборудования, устраняются регрессии) можно воспользоватся официально поддерживаемым архивом http://kernel.ubuntu.com/~kernel-ppa/mainline/.
Компиляция ядра
Сборка ядра из исходных кодов требует некоторых навыков и знаний о работе ОС.
Перед началом сборки ядра необходимо установить следующие пакеты:
build-essential fakeroot ncurses-dev libssl-dev
Все дальнейшие действия необходимо выполнять от лица суперпользователя:
sudo su
Получение исходного кода
Исходный код ядра, используемого в Ubuntu можно получить установив пакет linux-source :
apt-get install linux-source
После установки в директории /usr/src появится архив называющийся linux-source-верися_ядра.tar.bz2.
Так же можно скачать архив и с исходным кодом ядра с сайта kernel.org.
Скачивая ядро с сайта kernel.org, вам придётся наложить на него патчи
Конфигурирование
Распакуйте полученый архив 5) и, для удобства, создайте символическую ссылку на полученую в результате директорию:
cd /usr/src tar xjf ./linux-source-3.2.0.tar.bz2 ln -s ./linux-source-3.2.0 ./linux cd ./linux
Для упрощения процесса конфигурации ядра можно скопировать настройки текущего:
cp /boot/config-`uname -r` .config
Если вы хотите узнать какие различия появились между новой и текущей версией ядер выполните:
make oldconfig
Начиная с версии ядра 2.6.32 появилась возможность обновлять конфигурацию только тех модулей, которые используются в данной системе:
make localmodconfig
Существует три основных варианта конфигурирования ядра:
make config
Способ для смелых и отважных. Конфигуратор задаст вам около четырехста вопросов на которые нужно будет дать ответ.
make menuconfig
Предоставляет псевдографический конфигуратор, в котором все настройки разложены по пунктам.
make xconfig
Предоставляет графический конфигуратор.
Сборка
Сборка ядра производится командой
fakeroot make-kpkg -j 5 --initrd --append-to-version=-custom kernel_image kernel_headers #-j +1
Вместо ваша_версия подставьте название для вашей версии ядра.
Процесс сборки может занять некоторое время. По его окончанию появятся пакеты содержащие скомпилированное ядро и заголовочные файлы. Их можно будет установить при помощи dpkg .
Установка Linux-2.4.19
На данном этапе мы не будем компилировать ядро — мы сделаем это после установки всех пакетов. Однако, в связи с тем, что некоторые пакеты требуют заголовочных файлов ядра, мы распакуем ядро, настроим его и скопируем заголовки туда, где их будут искать пакеты при компиляции.
Скопируем заголовки ядра, выполнив следующие команды:
ln -s /static/bin/pwd /bin/pwd &&
make mrproper &&
make include/linux/version.h &&
make symlinks &&
mkdir /usr/include/asm &&
cp include/asm/* /usr/include/asm &&
cp -R include/asm-generic /usr/include &&
cp -R include/linux /usr/include &&
touch /usr/include/linux/autoconf.h &&
rm /bin/pwd
Пояснения команд
ln -s /static/bin/pwd /bin/pwd: В исходных кодах ядра путь к программе pwd прописан как /bin/pwd, поэтому создадим временную символическую ссылку, а в конце удалим ее.
make mrproper: Выполнение данной команды обеспечивает чистое дерево исходников ядра. Команда разработчиков ядра рекомендует выполнять эту команду перед каждой компиляцией ядра, даже если вы только что распаковали исходные коды из tar-архива.
make include/linux/version.h и make symlinks: Создадим файл include/linux/version.h file и символическую ссылку include/asm для конкретной платформы.
mkdir /usr/include/asm , cp include/asm/* /usr/include/asm и cp -R include/asm-generic /usr/include: Эти команды копируют заголовочные файлы ядра ассемблера для конкретной платформы в /usr/include/asm и /usr/include/asm-generic.
cp -R include/linux /usr/include: Эта команда копирует кросс-платформенные файлы заголовков в /usr/include.
touch /usr/include/linux/autoconf.h: Создаем пустой файл autoconf.h. Так как на данном этапе мы не конфигурируем ядро, необходимо вручную создать этот файл для некоторых заголовочных файлов ядра, использующих его, чтобы избежать ошибок при компиляции.
Почему мы копируем заголовки ядра, а не создаем для них символические ссылки?
Раньше было принято создавать символические ссылки директорий /usr/include/ на /usr/src/linux/include/ . Однако, это была плохая идея, как объясняет Линус Торвальдс в списке рассылки ядра Linux (Linux Kernel Mailing List, отрывок):
Тем, кто компилирует новые ядра, настоятельно рекомендую:
- не создавать символических ссылок (кроме той, которую создает
само ядро, "linux/include/asm", символическая ссылка, которая
используется при внутренней компиляции ядра.)
Да, именно так делаю я. В моем каталоге /usr/src/linux есть заголовки
старого ядра 2.2.13, несмотря на то, что я не использовал ядро 2.2.13
уже очень давно. Однако именно с этими заголовками компилировался
пакет glibc, соответственно именно эти заголовки соответствуют
файлам объектов библиотеки.
Также именно такое положение вещей являлось рекомендуемым
на протяжении последних пяти лет. Я не могу понять, почему вся эта
заморочка с символическими ссылками все еще существует, как зомби.
Практически во всех дистрибутивах есть эта неработающая символическая
ссылка, и люди до сих пор помнят, что исходники ядра Linux должны
находится в "/usr/src/linux", несмотря на то, что это уже давно не так.
Наиболее важная часть сообщения Линуса заключается в том, что файлы заголовков должны быть именно теми, с которыми компилировался пакет glibc. Это те заголовки, которые следует использовать в будущем при компиляции других пакетов, т.к. именно они соответствуют файлам библиотек объектного кода. Копируя заголовки, мы удостоверяемся, что они останутся доступными, если позже мы решим обновить ядро.
Заметьте, что нет ничего страшного в том, что исходные коды ядра находятся в директории /usr/src/linux. Главное, чтобы у вас не было символических ссылок /usr/include/ .
Содержимое Linux
Последняя проверка: версия 2.4.18.
Файлы поддержки
Ядро Linuxи и его заголовочные файлы
Описания
Ядро Linux
Ядро - основа любой системы Linux. Когда компьютер включается и загружает Linux, первое, что загружается - ядро. Ядро инициализирует аппаратные компоненты системы: последовательные и параллельные порты, звуковые и сетевые карты, контроллеры IDE и SCSI и многое другое. In a nutshell the kernel makes the hardware available so that the software can run.
linux kernel headers
Это файлы, которые мы копируем в /usr/include/ в 5-й главе. Они должны соответствовать тем, с которым был скомпилирован glibc, и поэтому не должны быть заменены при смене ядра. Они имеют ключевое значение для компиляции многих программ.
Зависимости Linux
Последняя проверка: версия 2.4.17.
Bash: sh
Binutils: ar, as, ld, nm, objcopy
Fileutils: cp, ln, mkdir, mv, rm, touch
Findutils: find, xargs
Gcc: cc1, collect2, cpp0, gcc
Grep: grep
Gzip: gzip
Make: make
Gawk: awk
Modutils: depmod, genksyms
Net-tools: dnsdomainname, hostname
Sed: sed
Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes
Textutils: cat, md5sum, sort, tail
| Назад | Домой | Вперед |
| Создание устройств (Makedev-1.7) | Наверх | Установка Man-pages-1.52 |