Перейти к содержимому

Linux generic что это

  • автор:

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 оставили для выбора дефолтного ядра убунты (для неких будущих целей)

Установка 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

Linux-image-generic vs linux-image-hardened. В чем разница?

Изображение Linux-image-generic vs linux-image-hardened. В чем разница? в соцсети TenChat

Сравнение между linux-image-generic и linux-image-hardened:

1. Основная функциональность:
- linux-image-generic: Это общая образованная ядра Linux, предназначенная для использования на широком спектре аппаратного обеспечения. Она обеспечивает поддержку большинства оборудования и функций, что делает ее универсальным выбором для большинства пользователей.
- linux-image-hardened: Это специализированное ядро Linux, разработанное с упором на безопасность. Оно предназначено для защиты системы от различных атак и эксплойтов. Оно включает в себя дополнительные функции безопасности и механизмы, которые обеспечивают более высокий уровень защиты по сравнению с общим ядром.

2. Уровень безопасности:
- linux-image-generic: Общее ядро Linux, как правило, не содержит дополнительных механизмов безопасности. Оно предоставляет функциональность, необходимую для работы операционной системы и приложений, но без установки дополнительных мер безопасности.
- linux-image-hardened: Ядро Linux усиленной безопасности включает в себя ряд дополнительных механизмов безопасности, таких как обязательные метки безопасности (SELinux) и случайное расположение областей памяти (ASLR). Эти механизмы обеспечивают более высокий уровень защиты от различных атак и возможных уязвимостей.

3. Совместимость с оборудованием:
- linux-image-generic: Общее ядро Linux обычно предлагает поддержку широкого спектра аппаратного обеспечения, включая различные марки и модели компьютеров, ноутбуков и серверов. Оно позволяет использовать операционную систему на разных платформах.
- linux-image-hardened: Ядро Linux усиленной безопасности в большинстве случаев также обеспечивает совместимость с широким спектром оборудования, но могут возникнуть проблемы с некоторыми экзотическими устройствами или старым оборудованием. Возможно, требуется дополнительная настройка, чтобы обеспечить совместимость с определенными устройствами.

4. Частота обновлений:
- linux-image-generic: Общее ядро Linux обычно имеет более частые обновления, так как оно является широко используемым и поддерживаемым. Большое сообщество разработчиков работает над его совершенствованием и устранением уязвимостей.
- linux-image-hardened: Ядро Linux усиленной безопасности может иметь менее частые обновления, так как оно имеет более специализированный характер и требует дополнительных проверок безопасности перед выпуском обновлений. Это может требовать больше времени для тестирования и анализа, чтобы обеспечить высокий уровень безопасности.

Примечания:
- При выборе между linux-image-generic и linux-image-hardened, важно учитывать конкретные потребности и цели вашей системы. Если безопасность является вашим первоочередным интересом, то linux-image-hardened может быть предпочтительнее. Если вам важна общая совместимость и функциональность, linux-image-generic может быть более подходящим вариантом.
- Некоторые дистрибутивы Linux могут предлагать только один из вариантов ядра, поэтому проверьте доступные вам опции в вашей системе.
- В случае использования ядра Linux усиленной безопасности, возможно потребуется дополнительная настройка или обучение, чтобы использовать и обеспечить его соответствующую безопасность.

В целом, выбор между linux-image-generic и linux-image-hardened зависит от ваших конкретных требований по функциональности и безопасности. Обратитесь к руководству вашей операционной системы или консультанту по безопасности, чтобы принять информированное решение.

Настройка⚓︎

В данной главе подробно рассказано о настройке ядра из исходного кода.

Подготовка⚓︎

Подготовьте пакет к компиляции, выполнив следующую команду:

 make mrproper 

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

Обратите внимание что после распаковки пакета с исходным кодом не следует полагаться на его "чистоту".

Инструменты настройки параметров ядра⚓︎

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

Для наглядности и облегчения восприятия, настройку ядра можно произвести при помощи утилит, предоставляющих графический или псевдографический интерфейс:

  • make xconfig – при использовании графической среды KDE
  • make gconfig – при использовании графической среды GNOME
  • make menuconfig – псевдографический режим
  • make config – вариант настройки, выводящий запросы на задание значений каждого параметра ядра. (Не позволяет изменить уже заданные параметры)

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

Создание конфигурации⚓︎

Хорошей отправной точкой для настройки ядра может стать запуск команды make defconfig .

 make defconfig 

Будет создана базовая конфигурация с настройками по умолчанию с учётом архитектуры машины. Параметры берутся из архитектурно-зависимых defconfig файлов.

Настройка параметров⚓︎

Предупреждение

Убедитесь в том, что вы включили/отключили/указали указанные ниже параметры

настройки. В ином случае система может работать неправильно или вовсе не загрузится:

 General setup --> [ ] Auditing Support [CONFIG_AUDIT] [*] Control Group support [CONFIG_CGROUPS] [ ] Enable deprecated sysfs features to support old userspace tools [CONFIG_SYSFS_DEPRECATED] [*] Configure standard kernel features (expert users) [CONFIG_EXPERT] ---> [*] open by fhandle syscalls [CONFIG_FHANDLE] Processor type and features ---> [*] Enable seccomp to safely compute untrusted bytecode [CONFIG_SECCOMP] Firmware Drivers ---> [*] Export DMI identification via sysfs to userspace [CONFIG_DMIID] Networking support ---> [CONFIG_NET] Networking options ---> Packet socket [CONFIG_PACKET] The IPv6 Protocol ---> [CONFIG_IPV6] Device Drivers ---> Generic Driver Options ---> [ ] Support for uevent helper [CONFIG_UEVENT_HELPER] [*] Maintain a devtmpfs filesystem to mount at /dev [CONFIG_DEVTMPFS] Firmware Loader ---> [ ] Enable the firmware sysfs fallback mechanism [CONFIG_FW_LOADER_USER_HELPER] File systems ---> [*] Inotify support for userspace [CONFIG_INOTIFY_USER] Pseudo filesystems ---> [*] Tmpfs POSIX Access Control Lists [CONFIG_TMPFS_POSIX_ACL] 

Обратите внимание

Указанные ниже параметры используйте на своё усмотрение.

Поддержка файловых систем⚓︎

Обратите внимание на раздел File systems . Включите поддержку требуемых файловых систем. Обязательно включите The Extended 4 (ext4) filesystem для её поддержки.

EFI⚓︎

Если вы будете использовать EFI, необходимо обеспечить его поддержку:

 Processor type and features ---> [*] EFI runtime service support [CONFIG_EFI] [*] EFI stub support [CONFIG_EFI_STUB] Firmware Drivers ---> EFI (Extensible Firmware Interface) Support ---> < >EFI Variable Support via sysfs [CONFIG_EFI_VARS] [*] Export efi runtime maps to sysfs [CONFIG_EFI_RUNTIME_MAP] Enable the block layer ---> Partition Types ---> [*] Advanced partition selection [CONFIG_PARTITION_ADVANCED] [*] EFI GUID Partition support [CONFIG_EFI_PARTITION] Device Drivers ---> Graphics support ---> Frame buffer Devices ---> Support for frame buffer devices ---> [CONFIG_FB] [*] EFI-based Framebuffer support [CONFIG_FB_EFI] Console display driver support ---> [*] Framebuffer Console support [CONFIG_FRAMEBUFFER_CONSOLE] File systems ---> Pseudo filesystems ---> EFI Variable filesystem [CONFIG_EFIVAR_FS] 

FUSE⚓︎

FUSE (англ. filesystem in userspace — «файловая система в пользовательском пространстве») — свободный модуль для ядер Unix-подобных операционных систем, позволяющий разработчикам создавать новые типы файловых систем, доступные для монтирования пользователями без привилегий (прежде всего — виртуальных файловых систем); это достигается за счёт запуска кода файловой системы в пользовательском пространстве, в то время как модуль FUSE предоставляет связующее звено для актуальных интерфейсов ядра. C использованием средств FUSE разработаны, в частности, SSHFS, NTFS-3G, GlusterFS, ZFS.

 File systems ---> FUSE (Filesystem in Userspace) support [CONFIG_FUSE_FS] 

Файловые системы Windows⚓︎

 File systems --->  MSDOS fs support [CONFIG_MSDOS_FS] VFAT (Windows-95) fs support [CONFIG_VFAT_FS] 

XFS⚓︎

XFS — высокопроизводительная 64-битная журналируемая файловая система, созданная компанией Silicon Graphics для собственной операционной системы IRIX. 1 мая 2001 года Silicon Graphics выпустила XFS под GNU General Public License (Linux версия 2.2). XFS отличается от других файловых систем тем, что она изначально была рассчитана для использования на дисках большого объёма (более 2 терабайт).

 File systems ---> XFS filesystem support [CONFIG_XFS_FS] 

LVM⚓︎

При необходимости включите поддержу LVM.

LVM — это метод распределения пространства жёсткого диска по логическим томам, размер которых можно легко менять, в отличие от разделов.

С LVM пространство жёсткого диска или набора дисков распределяется по физическим томам. Физический том не может располагаться более чем на одном диске.

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

 Device Drivers ---> [*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD] Device mapper support [CONFIG_BLK_DEV_DM] Crypt target support [CONFIG_DM_CRYPT] Snapshot target [CONFIG_DM_SNAPSHOT] Thin provisioning target [CONFIG_DM_THIN_PROVISIONING] Mirror target [CONFIG_DM_MIRROR] Kernel hacking ---> Generic Kernel Debugging Instruments ---> [*] Magic SysRq key [CONFIG_MAGIC_SYSRQ] 

Cryptographic API⚓︎

Cryptographic API предлагает богатый набор криптографических шифров, а также другие механизмы и методы преобразования данных для их вызова. Cryptographic API предоставляет различные вызовы API для следующих типов шифров:

  • Симметричные шифры
  • Шифры AEAD
  • Дайджест сообщения, включая дайджест сообщения с ключом
  • Генерация случайных чисел
  • Интерфейс пользовательского пространства
 Device Drivers ---> [*] Multiple devices driver support (RAID and LVM) ---> [CONFIG_MD] Device mapper support [CONFIG_BLK_DEV_DM] Crypt target support [CONFIG_DM_CRYPT] Cryptographic API ---> XTS support [CONFIG_CRYPTO_XTS] SHA224 and SHA256 digest algorithm [CONFIG_CRYPTO_SHA256] AES cipher algorithms [CONFIG_CRYPTO_AES] User-space interface for symmetric key cipher algorithms [CONFIG_CRYPTO_USER_API_SKCIPHER] For tests: Twofish cipher algorithm [CONFIG_CRYPTO_TWOFISH] 

Драйверы устройств⚓︎

В разделе Device Drivers - нужно пройтись по разделам и включить драйвера для своего оборудования - нестандартные жёсткие диски, мышки, USB устройства, веб-камеры, Bluetooth, Wi-Fi адаптеры, принтеры и т. д.

Если вы собирали пакет pciutils , то просмотреть, какое оборудование подключено к вашему ПК, можно командой:

 lspci 

Сборка⚓︎

Когда все параметры настроены, можно приступать к сборке.

 make 

Обратите внимание

Обратите внимание, что процесс сборки ядра может проходить длительное время (от 4.4 до 66.0 SBU). Это во многом зависит от установленных параметров конфигурации.

Установите модули ядра:

 make modules_install 

Установка⚓︎

После завершения сборки необходимо выполнить еще несколько шагов. Некоторые файлы должны быть скопированы в каталог /boot .

Путь к образу ядра зависит от используемой платформы. Имя файла, указанное ниже, может иметь произвольное наименование, на ваш вкус, но имя файла должно начинаться с vmlinuz для обеспечения совместимости автоматической настройки процесса загрузки. При выполнении следующей команды будет считаться, что используется архитектура x86:

 cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.14.14-my-kernel 

System.map файл, внутри которого находится символьная таблица адресов функций и процедур, используемых ядром операционной системы Linux. В этой таблице перечислены имена переменных и функций и их адреса в памяти компьютера. Эта таблица весьма полезна при отладке ядра в случае Kernel panic или Linux oops. System.map генерируется при компиляции ядра. Выполните следующую команду для установки файла System.map :

 cp -iv System.map /boot/System.map-5.14.14 

Файл конфигурации ядра .config , полученный в результате настройки make menuconfig содержит в себе все опции конфигурации скомпилированного ядра. Хорошей идеей будет оставить этот файл для будующей работы:

 cp -iv .config /boot/config-5.14.14 

Для облегчения обновления ядра создайте символическую ссылку:

 ln -svf vmlinuz-5.14.14-my-kernel /boot/vmlinuz 

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

Установка документации⚓︎

Установите документацию, если она необходима

 install -d /usr/share/doc/linux-5.14.14 cp -rv Documentation/* /usr/share/doc/linux-5.14.14 

Настройка каталога с исходным кодом⚓︎

Важно отметить, что файлы в каталоге исходных кодов ядра не принадлежат пользователю root . Всякий раз, когда пакет распаковывается от пользователя root (как это и выполнялось внутри среды chroot ), файлы имеют те идентификаторы пользователя и группы, которые были назначены при распаковке. Обычно это не вызывает проблем для других устанавливаемых пакетов, так как каталог с исходными кодами удаляется после установки пакета. Однако исходный код ядра Linux часто сохраняется в течение длительного времени. Из-за этого существует вероятность того, что идентификатор пользователя, используемый при распаковке, будет назначен другому пользователю. В таком случае этот пользователь будет иметь доступ на запись в этот каталог.

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

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

Если вы планируете оставить каталог с исходным кодом ядра, выполните команду:

 chown -R 0:0 /usr/src/linux-5.14.14 

Заголовочные файлы, расположенные в системном каталоге /usr/include , должны

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

Настройка порядка загрузки модулей Linux⚓︎

Обычно модули Linux загружаются автоматически, но иногда требуется определённый порядок. Программа, которая загружает модули, modprobe или insmod , использует файл /etc/ modprobe.d/usb.conf как раз для этой цели. Этот файл должен быть создан так, что, если USB-драйверы ( ehci_hcd , ohci_hcd и uhci_hcd ) были созданы в виде модулей, то они будут загружены в требуемом порядке: ehci_hcd должен быть загружен до ohci_hcd и uhci_hcd для того, чтобы избежать предупреждений во время загрузки.

Создайте новый файл /etc/modprobe.d/usb.conf , выполнив следующую команду:

 install -v -m755 -d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true # End /etc/modprobe.d/usb.conf EOF 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *