When you press /
, it says
Enter CONFIG_ (sub)string to search for (with or without "CONFIG_")
which means it's looking for the names of the options, not the labels of the options.
With Linux 3.3, I found your option using grep...
$ find . -name Kconfig -exec grep 'config.*PCI' {} + | grep DMA
./drivers/ide/Kconfig:config BLK_DEV_IDEDMA_PCI
And then opened the file ./drivers/ide/Kconfig
to see more information
config BLK_DEV_IDEDMA_PCI
bool
select BLK_DEV_IDEPCI
select BLK_DEV_IDEDMA_SFF
Since it doesn't have a tristate
or bool
line like the others, that suggests it doesn't appear in the menu.
Searching in the same file for BLK_DEV_IDEDMA_PCI
, you can see lots of entries that refer to it, e.g.
config BLK_DEV_AMD74XX
tristate "AMD and nVidia IDE support"
depends on !ARM
select IDE_TIMINGS
select BLK_DEV_IDEDMA_PCI
So it looks like you're not supposed to enable DMA explicitly: the drivers that need DMA will enable it automatically.
See this bug:
https://bugs.archlinux.org/task/16702#comment80122
And this blogpost:
http://losinggeneration.homelinux.org/2009/10/16/why-arch-linuxs-kernel-upgrades-suck/
So far I haven't found a good solution, but I will update if I do.
One thing to keep in mind beyond grub, the kernel, and initrd is /usr/lib/modules/. When the linux package updates the old package deletes it's folders in /usr/lib/modules/ and the new kernel adds its new modules. If you want both kernels working, you're going to want both sets of modules. And /usr/src/ contains the kernel headers (needed to build new modules, such as the nvidia drivers), so you'll probably want to keep those, too.
The steps I guess would be something like:
1. Detect linux package is going to be upgraded.
2. Backup what it's going to delete on uninstall (/usr/src/$(uname -r), /usr/lib/modules/$(uname -r), /boot/{vmlinuz-linux,initramfs-linux.img,initramfs-linux-fallback.img})
3. Let pacman do its upgrade
4. Restore everything in 2 (probably giving a new name to the stuff in /boot
5. Edit grub or whatever.
Alternate steps (somewhat less good)
1. Let pacman update
2. Detect kernel was updated
3. from /var/cache/packman/pkg/linux-${previous_version}-pkg.tar.xz extract /usr/src/, /usr/lib/{modules,extramodules}, and /boot/vmlinuz (renaming the one in /boot, obviously)
4. run mkinitcpio with the -k option to build the old init
5. Edit grub or whatever
In this alternate method, you loose your 3rd party modules (virtual box, ATI/Nvidia, etc), but it might be something you could run from cron and automagically detect kernel updates have occured.
Best Answer
When you are installing your kernel the responsible script is copying
kernel image
andinitramfs
into your/boot
directory. If a previous kernel image with the same name already exist, it is renamed by appending .old to its name.CONFIG_LOCALVERSION
:That means if you want you can give a special version number or name to your customized kernel. If you type "-MyNewKernel" your kernel should look:
Linux 4.0.0-MyNewKernel
.CONFIG_LOCALVERSION_AUTO
:That means if it is enabled the unique SCM (source control management) tag reported by setlocalversion (or .scmversion) is appended to the kernel version, if it exists. For example if a git tree is found, the revision number will be appended if it exists. The result could look:
Linux 4.0.0-MyNewKernel-ga2cfc42
. For mores info you could check in your source tree scipts/setlocalversion.