Не похоже на то, что dkms
команда позволяет вам это сделать. Я создал небольшой скрипт на Python, который должен делать то, что вы хотите. Вы можете ввести псевдоним в свой ~/.bashrc
любить
alias dkms-buildall='sudo ./wherever/your/script/is'
Конечно, сначала вам нужно будет сделать его исполняемым. Вот код:
#!/bin/env python## NOTE: This assumes that all modules and versions are built for at# least one kernel. If that's not the case, adapt parsing as needed.import osimport subprocess# Permission check.if os.geteuid() != 0: print "You need to be root to run this script." exit(1)# Get DKMS status output.cmd = ['dkms', 'status']process = subprocess.Popen(cmd, stdout=subprocess.PIPE)dkms_status = process.communicate()[0].strip('\n').split('\n')dkms_status = [x.split(', ') for x in dkms_status]# Get kernel versions (probably crap).cmd = ['ls', '/var/lib/initramfs-tools/']# Alternative (for use with Arch Linux for example)# cmd = ['ls', '/usr/lib/modules/']process = subprocess.Popen(cmd, stdout=subprocess.PIPE)kernels = process.communicate()[0].strip('\n').split('\n')# Parse output, 'modules' will contain all modules pointing to a set# of versions.modules = {}for entry in dkms_status: module = entry[0] version = entry[1].split(': ')[0] try: modules[module].add(version) except KeyError: # We don't have that module, add it. modules[module] = set([version])# For each module, build all versions for all kernels.for module in modules: for version in modules[module]: for kernel in kernels: cmd = ['dkms', 'build', '-m', module, '-v', version, '-k', kernel] ret = subprocess.call(cmd)
Протестировал его здесь, кажется, работает просто отлично:
$ dkms statusnvidia-current, 275.09.07, 3.0.0-5-generic, x86_64: installedvirtualbox, 4.0.10, 3.0.0-5-generic, x86_64: installed$ sudo python dkms.py...$ dkms statusnvidia-current, 275.09.07, 3.0.0-5-generic, x86_64: installednvidia-current, 275.09.07, 3.0-2-generic, x86_64: builtnvidia-current, 275.09.07, 3.0-3-generic, x86_64: builtvirtualbox, 4.0.10, 3.0.0-5-generic, x86_64: installedvirtualbox, 4.0.10, 3.0-2-generic, x86_64: builtvirtualbox, 4.0.10, 3.0-3-generic, x86_64: built
Если вы также хотите установить модули, замените строить с устанавливать в предпоследней строке.