web-dev-qa-db-ja.com

複数のディストリビューションがブートディレクトリを共有できるように、vmlinuzおよびinitrdのカスタム名を設定します

btrfsにトリプルブートシステムをセットアップし、Arch、xenial、およびbionicを次のように設定します。

  • 暗号化されたbtrfsコンテナ
  • それぞれがそれ自身のルートのために専用のbtrfs subvolを持っています
  • 3つの間で暗号化されていない/bootを共有しました

私はこのセットアップをArchとxenialに1年以上使用してきましたが、それは素晴らしいことです。バイオニックを追加したので、カーネルとinitrdの命名について少し心配しています。例えば:

$ ls /boot
initramfs-linux.img           # Arch; no problems here
initrd.img-4.13.0-39-generic  # xenial
initrd.img-4.15.0-20-generic  # bionic
vmlinuz-linux                 # Arch
vmlinuz-4.13.0-39-generic     # xenial
vmlinuz-4.15.0-20-generic     # bionic

バイオニック名がゼニアルと競合することはないかもしれませんが、おそらく競合するでしょう。

私は自分でコンパイルすることなく、これらのファイルのデフォルト名を設定できるフックまたは設定ファイルがあるのだろうかと思っています。基本的に、CONFIG_LOCALVERSIONまたはEXTRAVERSIONのように振る舞ういくつかの方法が渡されましたか?または、デフォルトのファイル名をインターセプトし、何か他のものを追加できるフック?

私は自分のブートローダーを保守しています(rEFInd今)、その側面について心配していません(たとえば、私が尋ねているものをgrubと同期させる懸念を予見する人もいます)。


余談ですが、私は他のソリューションを受け入れています。一般的なケースは、「1つのパーティションに複数のディストリビューションブートファイルを共存させるにはどうすればよいですか」と思います。 この投稿 につまずいたので、これに言及します。これは、名前を変更するのではなく、サブディレクトリを設定することについてです。これらを分離するためにパスを使用することもうまくいきます。多分それは initramfs-tools で説明されているかもしれませんが、私にはまだわかりません[まだ]。


主な回答に十分なコメントを投稿することはできませんので、これまでのところ主な回答に対処するためにこれを追加しています。

多くのプログラムが元の名前を参照するため、Ubuntuカーネルの名前を変更することはできません。

次に、locateを使用して、カーネルバージョン文字列がファイルシステムで何回使用されているかを示します。

次のrefind.confエントリで起動したUbuntu xenialから書いています。

$ cat /boot/efi/EFI/refind/refind.conf
menuentry "xenial" {
    icon        /EFI/refind/icons/os_ubuntu.png
    volume      4bdcd743-9d09-2f41-9379-e5491e79ae9d
    loader      /vmlinuz-foo
    initrd      /initrd-foo
    options     "root=UUID=xxxx rootflags=compress=lzo,discard,ssd,subvol=xenial nomodeset $vt_handoff add_efi_memmap ro"
}

これを行うには、私がやった:

$ cd /boot
$ Sudo mv initrd.img-4.13.0-39-generic initrd-foo
$ Sudo mv vmlinuz-4.13.0-39-generic vmlinuz-foo

カーネルのバージョンはカーネルにあるため、ファイル名自体は重要ではありません。

$ uname -a
Linux roboxenial 4.13.0-39-generic #44~16.04.1-Ubuntu SMP Thu Apr 5 16:43:10 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

だから...私は好きなファイル名から実行できます。インストール/アップグレード中にすべてのカーネル名を何らかの方法で(フックのように)変更する方法がある場合、疑問は残ります。これは、慣例(例:initrd-xenial)、接尾辞(initrd.img-4.13.0-39-generic_xenial)などです。

1
Hendy

多くのプログラムが元の名前を参照するため、Ubuntuカーネルの名前を変更することはできません。たとえば、現在のカーネル4.14.34を例にとります。

$ locate 4.14.34 | wc -l
70192
$ ll /boot/*4.14.34*
-rw-r--r-- 1 root root  1496011 Apr 12 05:53 /boot/abi-4.14.34-041434-generic
-rw-r--r-- 1 root root   213406 Apr 12 05:53 /boot/config-4.14.34-041434-generic
-rw-r--r-- 1 root root 58514444 Apr 28 13:36 /boot/initrd.img-4.14.34-041434-generic
-rw-r--r-- 1 root root        0 Apr 12 05:53 /boot/retpoline-4.14.34-041434-generic
-rw------- 1 root root  3952348 Apr 12 05:53 /boot/System.map-4.14.34-041434-generic
-rw------- 1 root root  8607504 Apr 30 03:52 /boot/vmlinuz-4.14.34-041434-generic

カーネルバージョン4.14.34にリンクしている70,192個のファイルがありますが、名前を変更したい/bootにあるのはそのうちの5つだけです。

コメントで述べたように、ArchLinuxには独自の番号付けシステムがあるため、Ubuntuと同じカーネル名を使用する危険性はほとんどありません。 LinuxカーネルをUbuntuカーネルにマッピングするにはどうすればよいですか

注:これを実行したとき、2つのUbuntu 16.04パーティションがマウントされていたため、4.14.34ファイル数は35.096で、1つの16.04インストールでした。また、オプションと思われるヘッダーが含まれていますが、「念のため」常にインストールしています。

大規模なリスト

以下は、locateリストの始まりです。 vmlinuzの名前が変更された場合、モジュールファイルは検索できない可能性があります。

$ locate 4.14.34 | head -n1000
/boot/System.map-4.14.34-041434-generic
/boot/abi-4.14.34-041434-generic
/boot/config-4.14.34-041434-generic
/boot/initrd.img-4.14.34-041434-generic
/boot/retpoline-4.14.34-041434-generic
/lib/modprobe.d/blacklist_linux_4.14.34-041434-generic.conf
/lib/modules/4.14.34-041434-generic
/lib/modules/4.14.34-041434-generic/build
/lib/modules/4.14.34-041434-generic/initrd
/lib/modules/4.14.34-041434-generic/kernel
/lib/modules/4.14.34-041434-generic/modules.alias
/lib/modules/4.14.34-041434-generic/modules.alias.bin
/lib/modules/4.14.34-041434-generic/modules.builtin
/lib/modules/4.14.34-041434-generic/modules.builtin.bin
/lib/modules/4.14.34-041434-generic/modules.dep
/lib/modules/4.14.34-041434-generic/modules.dep.bin
/lib/modules/4.14.34-041434-generic/modules.devname
/lib/modules/4.14.34-041434-generic/modules.order
/lib/modules/4.14.34-041434-generic/modules.softdep
/lib/modules/4.14.34-041434-generic/modules.symbols
/lib/modules/4.14.34-041434-generic/modules.symbols.bin
/lib/modules/4.14.34-041434-generic/vdso
/lib/modules/4.14.34-041434-generic/kernel/Arch
/lib/modules/4.14.34-041434-generic/kernel/block
/lib/modules/4.14.34-041434-generic/kernel/crypto
/lib/modules/4.14.34-041434-generic/kernel/drivers
/lib/modules/4.14.34-041434-generic/kernel/fs
/lib/modules/4.14.34-041434-generic/kernel/kernel
/lib/modules/4.14.34-041434-generic/kernel/lib
/lib/modules/4.14.34-041434-generic/kernel/mm
/lib/modules/4.14.34-041434-generic/kernel/net
/lib/modules/4.14.34-041434-generic/kernel/sound
/lib/modules/4.14.34-041434-generic/kernel/virt
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/events
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kvm
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/oprofile
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/platform
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/aes-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/aesni-intel.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/blowfish-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/camellia-aesni-avx-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/camellia-aesni-avx2.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/camellia-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/cast5-avx-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/cast6-avx-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/chacha20-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/crc32-pclmul.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/crct10dif-pclmul.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/des3_ede-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/ghash-clmulni-intel.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/glue_helper.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/poly1305-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/salsa20-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/serpent-avx-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/serpent-avx2.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/serpent-sse2-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha1-mb
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha1-ssse3.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha256-mb
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha256-ssse3.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha512-mb
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha512-ssse3.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/twofish-avx-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/twofish-x86_64-3way.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/twofish-x86_64.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha1-mb/sha1-mb.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha256-mb/sha256-mb.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/crypto/sha512-mb/sha512-mb.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/events/intel
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/events/intel/intel-cstate.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/events/intel/intel-rapl-perf.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel/cpu
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel/cpuid.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel/msr.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel/cpu/mcheck
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kernel/cpu/mcheck/mce-inject.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kvm/kvm-AMD.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kvm/kvm-intel.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/kvm/kvm.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/oprofile/oprofile.ko
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/platform/atom
/lib/modules/4.14.34-041434-generic/kernel/Arch/x86/platform/atom/punit_atom_debug.ko
/lib/modules/4.14.34-041434-generic/kernel/block/bfq.ko
/lib/modules/4.14.34-041434-generic/kernel/block/kyber-iosched.ko
/lib/modules/4.14.34-041434-generic/kernel/block/mq-deadline.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/842.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/ablk_helper.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/aes_ti.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/af_alg.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/algif_aead.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/algif_hash.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/algif_rng.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/algif_skcipher.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/ansi_cprng.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/anubis.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/arc4.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/asymmetric_keys
/lib/modules/4.14.34-041434-generic/kernel/crypto/async_tx
/lib/modules/4.14.34-041434-generic/kernel/crypto/authenc.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/authencesn.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/blowfish_common.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/blowfish_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/camellia_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/cast5_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/cast6_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/cast_common.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/ccm.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/chacha20_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/chacha20poly1305.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/cmac.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/crc32_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/cryptd.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/crypto_engine.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/crypto_simd.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/crypto_user.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/deflate.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/des_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/ecdh_generic.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/echainiv.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/fcrypt.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/keywrap.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/khazad.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/lrw.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/lz4.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/lz4hc.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/mcryptd.ko
/lib/modules/4.14.34-041434-generic/kernel/crypto/md4.ko
1