
Изучая, как собрать и установить собственное ядро (для взлома ядра), я наткнулся на противоречивое утверждение.
В этомОтвет StackExchange, автор утверждает:
В следующих инструкциях пути внутри исходного дерева имеют вид [src]/whatever, где [src] — это каталог, в который вы установили исходный код, например /usr/src/linux-3.13.3. Вероятно, вы захотите сделать это как root, поскольку исходное дерево должно оставаться защищенным с точки зрения прав записи (оно должно принадлежать root).
В справочнике он упомянул следующее:Ядро Linux в двух словахГрег Кроа-Хартман говорит:
Это предупреждение — самое важное, что нужно помнить при работе с шагами этой книги. Все в этой книге — загрузка исходного кода ядра, его распаковка, настройка ядра и его сборка — должно выполняться обычным пользователем на машине. Только две или три команды, необходимые для установки нового ядра, должны выполняться суперпользователем (root).
и
Исходный код ядра также никогда не должен размещаться в каталоге /usr/src/linux/, поскольку это местоположение ядра, для которого были построены системные библиотеки, а не вашего нового пользовательского ядра. Не выполняйте никакую разработку ядра в дереве /usr/src/directory вообще, а только в локальном каталоге пользователя, где с системой не может случиться ничего плохого.
Оба источника довольно старые, каков правильный подход к ним в настоящее время?
решение1
/usr
неподходящее место для чего-либо «кастомного»:
человек здесь:
/usr/src
Source files for different parts of the system, included with some packages for reference purposes. Don't work
here with your own projects, as files below /usr should be read-only except when installing software (optional).
/usr/src/linux
This was the traditional place for the kernel source. Some distributions put here the source for the default
kernel they ship. You should probably use another directory when building your own kernel.
иерархия файлов man:
/usr/
Vendor-supplied operating system resources. Usually read-only, but this is not required. Possibly shared between
multiple hosts. This directory should not be modified by the administrator, except when installing or removing
vendor-supplied packages.
/usr/include
/usr/src/linux
раньше полагался на :
/usr/include/linux
This contains information which may change from system release to system release and used to be a symbolic link
to /usr/src/linux/include/linux to get at operating-system-specific information.
Таким образом, исходные коды ядра можно только использовать /usr/src
для ссылок, но не для изменения.
Показана Documentation/admin-guide/README.rst
опция O=
, с помощью которой вы можете превратить сборку в файл, доступный только для чтения./usr/src/linux-VERSION
cd /usr/src/linux-4.X
make O=/home/name/build/kernel menuconfig
make O=/home/name/build/kernel
Аналогично файл .config создается в каталоге /home.