web-dev-qa-db-ja.com

UBoot + Grubを使用してUSBドライブからRaspberry Pi 3bを起動できない

Ubuntu 18.04をSDカードに正常にインストールしました。これを行うには、msdosパーティションテーブルを作成し(piはguidをサポートしません)、パーティション1のSDカードにU-Bootを配置します(fat32、piは他のものをサポートしません)。次に、パーティション1 /に pi-bootloader を貼り付けました。そして、ネットインストーラー(mini-iso)からそのパーティションにもファイルをコピーしました。プロセス全体がレイアウトされています ここ

すべてがSDカードで完璧に機能します。 UBootが起動し、net installer mini isoに付属のgrub2をロードします。次に、構成を変更して、パーティション3からLinuxカーネルをロードします(私の場合、p2はスワップです)。

そのため、私はそのイメージをプルして、USBドライブ(usbからm2 sataアダプター)に配置しました。だから、私はそれをオンにします。 Uブートが開始されますが、通常と何も変わりませんその後、grubをロードします。しかし、ubuntuを起動するか、インストールする(ネットインストーラーがまだ残っているため)オプションを備えたNiceメニューを表示する代わりに、grubコンソールに直接ダンプします。

ls Iと入力すると(memdisk)、それ以外は何も入力されません。それが実際にそれ自身からロードしたUSBドライブを見つけていないようです。そのmemdiskは(memdisk)/boot/grub/grub.cfgにある単一のファイルですが、実際に何が入っているかを知る方法はありません。編集:(memdisk)はsdカードにもありますが、同じ内容で、sdカードのパーティションもリストしていますが、フラッシュドライブにはありません。

GRUBモジュールはなく、何もありません。私はそれが非常に短い間エラーをフラッシュすると思いますが、その後grubコンソールが開き、それらのメッセージを読む時間がありません。

私は何をすべきか迷っています。おそらく here のようなusbモジュールを使用して独自のgrubイメージを作成した場合(grub-mkimageを使用して、memdisk内のモジュールでgrubイメージを作成します)?どのモジュールが必要か、またはそれが正しいアプローチであるかどうかはわかりませんが。

どんな助けも大歓迎です。

編集: this :が見つかりました

基本的に、grubがusbドライブを認識するためには、grubモジュール(私にはありません)が必要です。

簡単な答えは:

insmod usbms insmod ehci insmod uhci insmod ohci

必要なのは* hci行の1つだけです(通常はehci)が、古いマシンではuhciまたはohciのいずれかが必要になる場合があります。

これらの行は、非USBドライブの/ boot/grub /フォルダーのgrub.cfgまたはcustom.cfg(後者をお勧めします)に追加する必要があります。

here からモジュールを取得しましたが、usbmsはその中にはなく、[e、u、o] hciもありません。 this はgrubモジュールの作成について発見しましたが、混乱します。そして、ソースコードが見つかりません。 armhf 64ビットプロセッサのような奇妙なものを使用しても、互換性のあるソフトウェアを簡単に見つけることはできません。

Edit2:grubのソースコードを http://git.savannah.gnu.org/git/grub.git/ からダウンロードし、Raspberry Piでコンパイルしました。ただし、usbms.cおよびehci.cのソースコードファイルはありますが、grubモジュールにコンパイルしませんでした。

Grubモジュールの構築方法に関するこの情報を見つけました here ですが、私にはうまくいきません。 Makefile.core.amを変更して、usbms.moduleのifステートメントを削除してから、autogenとconfigureを実行しました。サイコロなし。 make usbms.moduleを使用してgrub-coreで手動でビルドしようとしましたが、gcc:fatal error:no input filesと表示されます。

グラブはいりません。 Ubuntu arm64を起動したいだけです。どうにかしてブートから直接そこにスキップできるなら、それは大丈夫です。

私の現在のアイデア:

  • Usbms.mod、ehci.mod、uhci.mod、ohci.modをコンパイルし、それらのモジュールがリンクされた新しいgrubイメージを作成します。現在のgrub構成で動作するはずです。
  • モジュール、設定、およびmemdiskとして組み込まれたlinuxカーネルとinitramfsを使用して、新しいgrubイメージを作成します。 rootfsがパーティション3にあることを示すコマンドラインでそこからカーネルを起動します
  • どういうわけか、パーティション3がルートであるというコマンドラインを使用して、パーティション3からLinuxカーネルをブートするようにubootに指示します。
  • raspberry Piファームウェアに付属のブラックマジックブートローダーを使用します。私はそのようなものがどのように機能するかについて少しも考えていませんが、誰かが私のubuntu x64を起動させることができるなら、私はそれがどのように機能するかわからないという事実を無視しても大満足です。

私はそれらのいずれかを行う方法がわかりません。

1
FalcoGer

Ubuntuをsdカードにインストールしてから、uboot(kernel8.img)を https://github.com/sakaki-/bcmrpi3-kernel のような新しいカーネルと交換できます。コマンドラインを設定します。 raspbianのようなtxt、たとえば

dwc_otg.lpm_enabled=0 root=PARTUUID=12345678-03 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

次に、たとえば、aspx config.txtをコピーします。

# For more options and information see
# http://rpf.io/configtxt
# Some settings may impact device functionality. See link above for details

# uncomment if you get no picture on HDMI for a default "safe" mode
#hdmi_safe=1

# uncomment this if your display has a black border of unused pixels visible
# and your display can output without overscan
#disable_overscan=1

# uncomment the following to adjust overscan. Use positive numbers if console
# goes off screen, and negative if there is too much border
#overscan_left=16
#overscan_right=16
#overscan_top=16
#overscan_bottom=16

# uncomment to force a console size. By default it will be display's size minus
# overscan.
#framebuffer_width=1280
#framebuffer_height=720

# uncomment if hdmi display is not detected and composite is being output
#hdmi_force_hotplug=1

# uncomment to force a specific HDMI mode (this will force VGA)
#hdmi_group=1
#hdmi_mode=1

# uncomment to force a HDMI mode rather than DVI. This can make audio work in
# DMT (computer monitor) modes
#hdmi_drive=2

# uncomment to increase signal to HDMI, if you have interference, blanking, or
# no display
#config_hdmi_boost=4

# uncomment for composite PAL
#sdtv_mode=2

#uncomment to overclock the arm. 700 MHz is the default.
#arm_freq=800

# Uncomment some or all of these to enable the optional hardware interfaces
#dtparam=i2c_arm=on
#dtparam=i2s=on
#dtparam=spi=on

# Uncomment this to enable the lirc-rpi module
#dtoverlay=lirc-rpi

# Additional overlays and parameters are documented /boot/overlays/README

# Enable audio (loads snd_bcm2835) dtparam=audio=on

program_usb_boot_mode=1

追加

dtoverlay=rpi-backlight
dtoverlay=rpi-ft5406

ft5406タッチスクリーンがあり、/ etc/modules-load.d/ft5406.confにカーネルモジュールをロードする場合は最後まで

rpi_backlight
rpi_ft5406

そして、それはちょうど動作します

0
FalcoGer