![将配置文件通过管道传输到 genkernel](https://linux22.com/image/100178/%E5%B0%86%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E9%80%9A%E8%BF%87%E7%AE%A1%E9%81%93%E4%BC%A0%E8%BE%93%E5%88%B0%20genkernel.png)
我是一个 gentoo 用户,当新内核出现时,我已经有点厌倦了复制我的内核配置文件。我想知道是否可以将配置文件直接通过管道传输到 genkernel。像这样的东西:
sudo genkernel --install --clean --kernel-config=$(gunzip/proc/config.gz) --menuconfig all
或这个:
zcat /proc/config.gz | sudo genkernel --install --clean --kernel-config=- --menuconfig all
但我无法让它工作,因为我不太擅长管道/shell 脚本编写。有任何想法吗?
编辑:用$(gunzip /proc/config.gz)
它说gzip: /proc/config: No such file or directory
。但这是不正确的,因为zcat /proc/config.gz
打印了我的所有设置
答案1
您的 shell 调用是错误的。
$(gunzip /proc/config.gz)
-> 这尝试将 /proc/config.gz 更改为 /proc/config。没有任何内容发送到 stdout,但在这种情况下确实会触发 stderr,因为不允许在其中创建新文件/proc
(即no such file or directory error
)。
您必须告诉配置genkernel
读取文件描述符(它不支持作为标准输入的快捷方式),因此您有两个选择:-
- 管道:
zcat /proc/config.gz | zcat /proc/config.gz |须藤 genkernel --安装 \ --clean --kernel-config=/dev/stdin --menuconfig 全部
- 流程替代:
sudo genkernel --install --clean \ --kernel-config=<(zcat /proc/config.gz) --menuconfig 全部
我建议后者,但也想指出,默认情况下,genkernel 将每个内核配置保存到/etc/kernels/
,您可以从那里获取它们:
sudo genkernel --install --clean \ --kernel-config=/etc/kernels/kernel-config-$(uname -m)-$(uname -r) \ --菜单配置全部
(请注意,如果您更改配置选项并重建相同的内核,它会根据设计覆盖该目录中的先前文件)。