Краткий ответ
Я думаю, что самый надежный способ сделать это - установить неизменяемый resolv.conf
. После того, как вы установите его так, как вы хотите, вы просто запустите
sudo chattr +i /etc/resolv.conf
Чтобы отредактировать его снова, вам нужно удалить неизменяемый флаг:
sudo chattr -i /etc/resolv.conf
Альтернативный ответ
Приложение, которое помещает это сообщение в / etc / resolv .conf
называется resolvconf
. Вы можете удалить свой пакет resolvconf
с помощью (я предполагаю, что здесь debian или ubuntu, но я думаю, что resolvconf
- это вещь Debian):
sudo apt-get remove resolvconf
Я удаляю его на своих компьютерах, потому что я обнаружили, что у меня больше шансов подключиться с правильными настройками /etc/resolv.conf
в странных ситуациях (в частности, Wi-Fi в отеле или аэропорту), когда у меня нет resolvconf
установлен. resolvconf
также выполняет другие функции, такие как кеширование DNS, и, возможно, некоторые другие вещи, без которых я могу жить. Вы можете изучить, что все это делает, прежде чем удалить его.
Важные примечания
Удаление resolvconf
не гарантирует, что ваш /etc/resolv.conf
останется неизменным. Другие программы, такие как dhclient
, вносят изменения в /etc/resolv.conf
. Если вы запускаете сетевой менеджер, он также может редактировать /etc/resolv.conf
. У меня нет большого опыта работы с сетевыми менеджерами.
Решение chattr
должно предотвращать внесение изменений этими другими программами и, вероятно, подходит для ситуации с вашим сервером.Если вы использовали его на портативном компьютере, могут возникнуть ситуации, когда важные изменения в вашем /etc/resolv.conf
будут заблокированы. Примером может служить доступ к Wi-Fi в отеле, когда требуется изменение вашего /etc/resolv.conf
для доступа к определенному локально размещенному URL-адресу до получения доступа к надлежащему Интернету). Если в таких ситуациях вы можете вспомнить chattr -i /etc/resolv.conf
и повторно подключиться к Wi-Fi, то это не должно быть проблемой.
Заголовок linux/kernel.h
, который используется для сборки модулей, является заголовком, который является частью исходного кода ядра . Когда модули собираются в дереве исходного кода ядра, используется именно эта версия.
Для сборки внешнего модуля процесс сборки ищет заголовок в /lib/modules/$(uname -r)/build/include/linux/sched.h
. Этот файл предоставляется пакетами заголовков ядра, , например. для производных Debian, пакет linux-headers-$(uname -r)
.
/usr/include/linux/kernel.h
предназначен для пользовательских процессов, а не для модулей ядра.
Макросы приоритета printk
теперь находятся вlinux/printk.h
иlinux/kern_levels.h
. Я предполагаю, что вы читаете оригинальное руководство , которое основано на серии ядер 2.6; для современных ядер вы должны прочитать обновленное руководство(в настоящее время для 5.6.7).
В моей системе Mint 18.x с build-essential
, НО не установлено полное исходное дерево-
user@localhost:~ $ locate kernel.h | grep \/kernel.h$
/usr/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-21/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-21-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.4.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.4.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.4.0-53-generic/include/config/firmware/in/kernel.h
/usr/src/linux-headers-4.8.0-53/include/linux/kernel.h
/usr/src/linux-headers-4.8.0-53/include/uapi/linux/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/debug/kernel.h
/usr/src/linux-headers-4.8.0-53-generic/include/config/firmware/in/kernel.h
Согласно комментарию Джеффа к вашему вопросу, я бы предположил, что большинство раз /usr/include/linux/kernel.h
будет использоваться,
Я уверен, что если вы извлечете tar-архив дерева ядра, в его структуре каталогов также может быть другая копия. Быстрая проверка показывает, что все они имеют разный размер... или пустые файлы.
ответ на этот вопрос может существенно зависеть от дистрибутива Linux... SUSE/SLES, RHEL/Centos/Fedora, debian, mint и так далее,
и может ли он также различаться в зависимости от разновидностей RPM дистрибутивов Linux и Debian?
в любом случае мой опыт в основном связан с SLES версии 11.4, и за это я могу поручиться
/usr/src/linux/include/linux/kernel.h
where for me /usr/src/linux -> /usr/src/linux-3.0.101-108.21
uname -r for me returns 3.0.101-108.21-default
Когда я обновляю ядро до более новых версий, программная ссылка соответственно меняется вместе с kernel.h. Я думаю, можно с уверенностью сказать, что если вы ищете модуль ядра версии kernel.h
, он будет в какой-то папке, связанной с uname -r
, и будет частью исходного кода ядра . пакет для вашего дистрибутива Linux.