Когда make install
вызывается, это вызовет определенный для распределения сценарий для создания initrd.img, этот сценарий будет поиск все модули, которые требуемый этим распределением, но потому что Вы только что скомпилировали все модули в ядро как встроенные через make allyesconfig
, сценарий перестал работать к модулям поиска.
Я не могу воспроизвести Вашу проблему сейчас, я помню, что "модули, не найденные", являются просто предупреждениями, я всегда игнорирую ее, потому что initrd.img был успешно создан, и новое ядро было успешно загружено. Если Вы перестали работать на "модулях, не найденных", необходимо повторно сконфигурировать такие модули от встроенных модулей до реальных загружаемых модулей вручную через make menuconfig
этим путем: "модули, не найденные" сообщение, содержат имя модуля, используйте имя для поиска Make-файлов для обнаружения который CONFIG_XXX и поворот это CONFIG_XX к =m
.
В последнем, если Вы просто хотите недавно созданное ядро, я предлагаю, чтобы Вы использовали конфигурацию распределения вместо этого make allyesconfig
:
cd your_kernel_src
cp /boot/your_distribution_config .config
make menuconfig # can exit it directly with nothing changed
make -j16
make modules_install
make install
# update the grub, if it is required for your distribution.
Как было отмечено в комментариях и по причинам, объясненным в Это ответу Ядро Linux игнорирует SETUID / SetGuid Бит при обработке скрипта. Я не собираюсь дублировать ответ Бенджамина, но вместо этого замените скрипта с помощью Executabe , чтобы сделать мой ответ правильным.
Краткий ответ: используйте SETGID
Подробные шаги:
Sudo Chown: ReadPass WhiteFile
sudo chmod g = r, o = thisfile
Sudo Chmod G + S Thissfile
Таким образом Ваш исполняемый файл будет работать с разрешениями собственной группы и, таким образом, сможет прочитать файл.
Это на самом деле распространено и довольно просто. Sudo
позволяет ограничить конкретные приложения, которые пользователь может вызывать. Другими словами, вам не нужно давать им все рут или ничего; Вы можете дать им Sudo
разрешения для запуска определенной команды . Это именно то, что вы хотите, и очень распространена практика, подобных тому, как позволять пользователям подтолкнуть репозитории Git через SSH и тому подобное.
Чтобы сделать это, все, что вам нужно сделать, это добавить строку в / etc / sudoers
, которая выглядит что-то вроде
bob ALL=(root) NOPASSWD: /path/to/command/you/trust
( NOPASSWD:
Часть не требуется, но Очень распространено в этой ситуации.) В этот момент BOB
может вызывать / PATH / TORE / COMMANT / YOW / TRUST
через sudo, но ничего другого.
Это сказано, давая кому-то root - то, что мы здесь делаем - не совсем то, что вы хотите. Примечательно, если в вашем скрипте было какого-либо недостатка, вы рискуете позволить вашему ящику укорениться. По этой причине вы можете предпочитать, что предпочитаете создать пользователь, специально собственный специальный файл-говорящий, Специальный препарат
-Then Chown
файл для них, и иметь / etc / sudoers
Сделать Боб
Будьте особенным пользователем. В этом случае линия вы добавляете в Sudoers
бы просто быть
bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust