LinuxのBFPを使ったツールを開発しているときはカーネルのバージョンを本番に合わせたほうがいいので、そのためのメモです。
Ubuntu用のカーネルのパッケージは https://kernel.ubuntu.com/~kernel-ppa/mainline/ のあたりにあって、適切なアーキテクチャのものをダウンロード&インストールするだけなんですが、ダウンロードするのがわりと面倒くさいのでスクリプトを書きました。
./get-kernel 4.19.106 などとするとカレントディレクトリにパッケージがダウンロードされるので、あとは sudo dpkg -i *.deb でインストールしたあと sudo update-grub && sudo reboot するだけです。
#!/usr/bin/env perl # get-kernel use strict; use warnings FATAL => "all"; use feature 'say'; die "usage: $0 kernel-version\n" unless @ARGV; my $kernel_version = shift(@ARGV); my $base_url = "https://kernel.ubuntu.com/~kernel-ppa/mainline/"; chomp(my $arch = `dpkg --print-architecture 2>/dev/null` || "amd64"); my $detail = `curl -sL $base_url/v$kernel_version/`; unless(defined $detail) { die "Invalid kernel version. Find one in $base_url\n"; } my($headers_all_path) = ($detail =~ m{<a\s+href="(linux-headers-\Q$kernel_version\E-[^"]+_all\.deb)"}); my($headers_generic_path) = ($detail =~ m{<a\s+href="(linux-headers-\Q$kernel_version\E-\d+-generic_[^"]+_$arch\.deb)"}); my($image_generic_path) = ($detail =~ m{<a\s+href="(linux-image-(?:unsigned-)?\Q$kernel_version\E-\d+-generic_[^"]+_$arch\.deb)"}); my($modules_generic_path) = ($detail =~ m{<a\s+href="(linux-module-\Q$kernel_version\E-\d+-generic_[^"]+_$arch\.deb)"}); foreach my $path($headers_all_path, $headers_generic_path, $image_generic_path, $modules_generic_path) { say "Downloading $path"; system "curl", "-LO", "$base_url/v$kernel_version/$path"; } say "Done.";