Не могу загрузить Raspberry Pi 3B с USB-накопителя с помощью UBoot + Grub - proUbuntu
1 голос
/ 24 августа 2018

Я успешно установил Ubuntu 18.04 на SD-карту. Я сделал это, создав таблицу разделов msdos (pi не поддерживает guid), а затем поместил U-Boot на SD-карту в разделе 1 (fat32, pi больше ничего не поддерживает). Затем я вставил pi-bootloader в раздел 1 /. А затем я скопировал файлы из сетевого установщика (mini-iso) на этот раздел. Весь процесс выложен здесь .

Все отлично работает с SD-карты. Запустится UBoot, затем он загрузит grub2, поставляемый с сетевым установщиком mini iso. что, в свою очередь, я изменил конфиг, чтобы он загружал ядро ​​linux из раздела 3 (в моем случае p2 - это swap).

Итак, я вытащил образ этого, поместил его на USB-накопитель (USB-адаптер SATA к м2), который должен вести себя как любая другая флешка. Итак, я включаю его. U запускается, я не вижу ничего отличного от нормального Затем он загружает grub. Но вместо того, чтобы отобразить хорошее меню с возможностью загрузки Ubuntu или установить его (потому что сетевой инсталлятор все еще там), он выводит меня прямо в консоль grub.

введите ls I get (memdisk) и больше ничего. Кажется, он не находит USB-накопитель, загруженный с него самого. на этом memdisk находится один файл в (memdisk) /boot/grub/grub.cfg, но у меня нет возможности узнать, что там на самом деле. Редактировать: (memdisk) также есть на SD-карте, тот же контент, он просто перечисляет разделы на SD-карте, в то время как его нет на флешке.

Нет модулей grub, нет ничего. Я думаю, что это очень коротко показывает ошибку, но затем открывается консоль grub, и у меня нет времени читать эти сообщения.

Я в растерянности относительно того, что делать. Возможно, если бы я сделал свой собственный образ grub с помощью usb-модулей, как описано здесь (используя grub-mkimage для создания образа grub с модулями в memdisk)? Хотя я понятия не имею, какие модули мне нужны, или это правильный подход.

Любая помощь будет принята с благодарностью.

Редактировать: Я нашел это :

В основном вам нужны модули grub (которых у меня нет), чтобы grub распознал USB-диск.

краткий ответ:

insmod usbms insmod ehci insmod uhci insmod ohci

Требуется только одна строка * hci (обычно ehci), но на старых машинах может понадобиться uhci или ohci. Вставка всех 3 работает нормально.

Эти строки должны быть добавлены либо в grub.cfg, либо в custom.cfg (я рекомендуем последнее) в папке / boot / grub / на диске, отличном от USB.

Я получил свои модули от здесь , однако, среди них нет usbms и нет [e, u, o] hci. Я нашел это о написании модулей grub, но меня это смущает. И я не могу найти исходный код. Использование чего-то странного, например, 64-битного процессора armhf, не облегчает поиск совместимого программного обеспечения.

Edit2: я скачал исходный код grub с http://git.savannah.gnu.org/git/grub.git/ и скомпилировал его на своем Raspberry Pi. Однако файлы исходных кодов usbms.c и ehci.c не были скомпилированы в модули grub.

Я нашел эту информацию о том, как собирать модули grub здесь , но она просто не работает для меня. Я попытался изменить Makefile.core.am и удалил оператор if вокруг usbms.module, затем запустил autogen и сконфигурировал. Нет кости. Я попытался вручную собрать в grub-core команду make usbms.module, но там написано: gcc: фатальная ошибка: нет входных файлов.

Мне не нужен личинка. Я просто хочу загрузить свою Ubuntu arm64. Если я могу как-то пропустить загрузку прямо туда, все нормально.

Мои текущие идеи:

  • Скомпилируйте usbms.mod, ehci.mod, uhci.mod и ohci.mod, создайте новый образ grub с подключенными модулями, и он должен просто работать с текущей конфигурацией grub.
  • Создайте новый образ grub с модулями, конфигом, ядром linux и initramfs, встроенными как memdisk. загрузите ядро ​​с командной строки, указывающей, что rootfs находится в разделе 3
  • Каким-то образом попросите uboot загрузить мое ядро ​​linux из раздела 3 с помощью командной строки, чтобы раздел 3 был корневым.
  • используйте загрузчик черной магии, который поставляется с прошивкой Raspberry Pi. Я не имею ни малейшего представления, как это работает, но если кто-то сможет заставить его загрузить мою Ubuntu x64, то я буду очень рад игнорировать тот факт, что я не знаю, как это работает.

Понятия не имею, как это сделать.

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете установить Ubuntu на SD-карту, а затем заменить Uboot (kernel8.img) новым ядром, например https://github.com/sakaki-/bcmrpi3-kernel теперь вы настраиваете cmdline.txt как в raspbian, например

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

тогда вы можете скопировать raspbian 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

и это просто работает

...