web-dev-qa-db-ja.com

Grub:USBキーで起動してから、SDカードからの起動を続行しますか?

SDカードリーダーが内蔵された古いラップトップを持っていますが、起動時に利用できません。

ただし、小さな8 GB USBキー(USB 2.0)からブートLinux(Debian)をグラブすることはできますが、非常に低速です。 SDカードははるかに高速であり、別のインターフェイス上にある必要があります。

GrubからSDカードにアクセスできませんが、USBキーからDebianカーネルやvmlinuzをロードして、SDカードのドライバーがカーネルにロードされたら、SDカードからのブートを続行できるかどうか疑問に思っていました。またはinitramfs?

「編集しない」と明記されているため、grub構成ファイルをいじるのをためらっていますが、kernel/vmlinuzとinitramfsに異なるディスクを指定できるようです。方法がわからないので、USBキーからこれらのいずれかをロードすると、SDカードが表示されますか?

USBスティックの/boot/grub.cfgからの関連コードは次のとおりです。

USBスティックで起動する場合:

### BEGIN /etc/grub.d/10_linux ###
function gfxmode {
    set gfxpayload="${1}"
}
set linux_gfx_mode=
export linux_gfx_mode
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-aaaa-aaaa-a’ {
    load_video
    insmod gzio
    if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
    insmod part_msdos
    insmod ext2
    set root='hd2,msdos1'
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root --hint-bios=hd2,msdos1 --hint-efi=hd2,msdos1 --hint-baremetal=ahci2,msdos1  aaaa-aaaa-a
    else
      search --no-floppy --fs-uuid --set=root aaaa-aaaa-a
    fi
    echo    'Loading Linux 4.19.0-6-AMD64 ...'
    linux   /boot/vmlinuz-4.19.0-6-AMD64 root=UUID=aaaa-aaaa-a ro  quiet
    echo    'Loading initial ramdisk ...'
    initrd  /boot/initrd.img-4.19.0-6-AMD64
}

SD/MMCカードで起動する場合:

### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Debian GNU/Linux 10 (buster) (on /dev/mmcblk0p1)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-XXXX-XXXX-X’ {
    insmod part_msdos
    insmod ext2
    if [ x$feature_platform_search_hint = xy ]; then
      search --no-floppy --fs-uuid --set=root  XXXX-XXXX-X
    else
      search --no-floppy --fs-uuid --set=root XXXX-XXXX-X
    fi
    linux /vmlinuz root=/dev/mmcblk0p1
    initrd /initrd.img
}

それらを組み合わせる方法があるはずだと思いますか?

SDカードから起動するようにしました。

LVMパーティショニングでSDカードをセットアップしたので、基本的なMBRパーティショニングとしてのみセットアップされたため、lvm2をUSBキーにインストールする必要がありました。

追加した:

insmod lvm
insmod ext2

に:

### BEGIN /etc/grub.d/05_debian_theme ###

そして:

root=/dev/mapper/debian--vg-root

適切なメニューエントリに。

ただし、initramfsファイルはUSBとSDで異なるため、SDの起動時にすべてが正しくロードされるわけではありません。

USBインストールはシェルのみの最小限のブートであり、SDはデスクトップマネージャーを使用したフルインストールなどです。

私がしたいのは、両方を別々にして、それぞれのinitramfsファイルで両方を起動できるようにすることです。 USBカードに対してこれを行うことができ、SDカードが起動するための個別のエントリがありますが、それは最小限のUSB initramfsファイルを使用しています。

SDカードは、/ dev/mmcblk0p1をブートパーティションと見なします。

これにより、さらに2つの質問が生じます。

  1. SDカードのブートフォルダーの場所をgrub configに伝えるにはどうすればよいですか? grub.cfgで指定できますか?すべてのファイルを/ dev/mmcblk0p1パーティションからUSBキーの/ boot/bootsdにコピーしました。

  2. USBフォルダー/ boot/bootsdをSDカードの/ bootとして設定するにはどうすればよいですか? fstabとシンボリックリンクを使用しますか?

編集3:

私はそれを理解したと思います-単に変更しました:

initrd /initrd.img

に:

initrd /bootsd/initrd.img

次に、UUIDを使用して、SDカードにUSB sdc1のfstabエントリを作成しました。次に、SDシステム上の/ media/usbboot/boot/bootsdから/ bootへのlnエイリアスを作成しました。

私はまだnon-free wifiを設定していないので、apt-get更新を実行していませんが、機能することを前提としています。

2
D.A. Reyn

私の場合

先週、新しい高速のnvmeカードが搭載されたコンピューターにXubuntuをインストールしましたが、そのコンピューターの起動時に認識されません。

XubuntuはインストーラーUbiquityを使用しており、インストール中にパーティション分割ウィンドウで、手動パーティション分割を意味する「Something other」を選択しました。

  • ルートパーティション/をnvmeカードに入れました
  • ブートパーティション/ bootを、ブート時に認識されるSSDに配置しました。

あなたの場合

現在のDebianインストーラーでも非常によく似たことができると思います。古いテキストモードのDebianインストーラーで個別のブートパーティションとホームパーティションを使用して手動でパーティションを作成しました。新しいインストーラーでそれができない場合は、おそらく古いテキストモードインストーラーにフォールバックできます。

  • ルートパーティション/をメモリカードに配置します(mmcblk0とその最初のパーティションmmcblk0p1 PCI経由で接続されている場合)。
  • ブートパーティション/ bootをUSBキーに配​​置します。

次に続行して、インストーラーにジョブを実行させます。

2
sudodus