Можно ли изменить ядро ​​в системе UNIX / Linux?

Поскольку ваш файл сохранения iptables не ссылается ни на какие IP, вы должны быть в порядке, используя его для ip6tables также. Лучше всего выпустить задание at для сброса правил брандмауэра через 2 минуты (или любое другое время, которое вы считаете подходящим):

# echo "service iptables stop" | at now + 2 minutes

затем примените правила iptables из вашего файла для IPv4 и IPv6:

# iptables-restore < iptables-save-file
# ip6tables-restore < iptables-save-file

если в этот момент все недоступно, подождите 2 минуты, пока задание at деактивирует брандмауэр, и начните настраивать наборы правил вручную. Если они работают, запустите service iptables save и service ip6tables save и наслаждайтесь своим новым брандмауэром.

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

16
08.12.2016, 03:26
3 ответа

Ядро является независимой частью и обычно заменяется во время обновлений операционной системы. Некоторые проприетарные драйверы (NVIDIA и т. Д.) Имеют сценарии установки, которые вставляют драйвер в исходный код ядра, собирают это ядро ​​и заменяют им текущее ядро. Следовательно, если вы разрабатываете свою собственную версию ядра, которая может выполнять все требуемые функции, не должно быть большой проблемы, чтобы внедрить ее и оставить остальную часть операционной системы. Однако чаще всего такое «новое ядро» происходит от последней официальной версии.

Ядро Solaris в некоторой степени портировано таким образом, в результате OpenSolaris работает под управлением среды Gnome.

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

2
27.01.2020, 19:48

FreeBSD не использует ядро ​​Linux - как следует из названия, он использует Ядро BSD.

Ядро Linux можно заменить другим ядром Linux (либо созданным вами самостоятельно, либо извлеченным из дистрибутива). Имейте в виду, что программы пользовательского пространства в вашем дистрибутиве могут зависеть от конкретных функций ядра, которые будут скомпилированы, и могут не работать должным образом, если вы запускаете их на ядре, созданном без этих функций. Например, дистрибутив на основе systemd потребует контрольных групп в ядре.

Для примера, который вы упомянули, да, дистрибутив GNU может быть построен для ядра Linux или для ядра BSD. Во многих случаях существуют различия во времени компиляции (например, #ifdef ) между программами, скомпилированными для этих двух программ, даже если ядра объявляют один и тот же ABI. Как минимум, библиотеки низкого уровня, такие как библиотека времени выполнения C, должны учитывать различные ABI ядра.

16
27.01.2020, 19:48

Нет, каждое ядро ​​реализует свои собственные функции по-своему. Существует большая часть совместимости с POSIX, но как только вы выйдете из нее, исполняемые файлы должны быть скомпилированы с уже имеющимися механизмами ядра. Многие проекты содержат исходный код, который компилируется только в том случае, если вы явно указываете, что компилируете для FreeBSD или Linux. По сути, это и есть kFreeBSD. Инструменты поддерживают ядро ​​FreeBSD, но для этого они должны быть скомпилированы.

Например, если вы попытаетесь использовать epoll_create во FreeBSD, все будет работать не так, как ожидалось.

Конечно, вы можете кросс-компилировать инструменты из системы BSD в стиле LFS, но это, вероятно, займет вечность. Не так просто, как просто скомпилировать новое ядро.

20
27.01.2020, 19:48

Теги

Похожие вопросы