Сборка образа для загрузки в режиме USB Mass-Storage
Версия от 11:14, 23 апреля 2021; FuzzyBot (обсуждение | вклад) (FuzzyBot переименовал страницу Сборка образа для загрузки в режиме USB Mass-Storage/ru в Wiren Board 5: Build an image to download in USB Mass-Storage mode/ru без оставления перенаправления: Часть переводимой страницы Сборка образа для загрузки в режиме USB Mass-Storage.)
Эта инструкция описывает, как собрать bootstream для загрузки Linux с USB Mass Storage Gadget. При этом содержимое SD-карты становится доступно по USB как обычная флешка.
Структура bootstream:
- U-Boot SPL - первичный загрузчик, проводит начальную инициализацию
- U-Boot - собственно загрузчик, запускает Linux
- Образ ядра Linux, состоит из нескольких частей
- zImage - cобственно ядро
- initramfs - файловая система с модулями для поддержки USB gadget, входит в zImage
- DTB - информация о периферии, необходимая для работы ядра. Дописывается в конец zImage, в конфиге должна быть включена опция CONFIG_ARM_APPENDED_DTB
Сборка Linux
- Получить исходники ядра из git,
$ git clone https://github.com/contactless/linux.git $ cd linux $ git checkout dev/v4.1.15
- Скачать initramfs из репозитория и распаковать
$ unzip initramfs_usbgadget.zip $ sudo tar xvf initramfs_usbgadget.tar
- Инициализировать окружение для сборки ядра. При необходимости, изменить в этом файле переменные DT и CROSS_COMPILE
$ . ./scripts/kbuild-env.sh $ set +e
- Задать конфиг ядра
$ make mxs_usbgadget_defconfig
- Собрать ядро и модули, установив их в распакованную initramfs
$ INSTALL_MOD_PATH=./initramfs_usbgadget/ ./scripts/kbuild.sh
- Собрать ядро с appended DTB и initramfs
$ ./scripts/kbuild-dtb.sh
Сборка U-Boot
- Получить исходники U-Boot из git. Нужна ветка wb_v2015.07
$ cd .. $ git clone https://github.com/contactless/u-boot.git $ cd u-boot $ git checkout wb_v2015.07
- Задать конфиг U-Boot
$ make mx28_wirenboard5_usbgadget_defconfig
- Скопировать ранее собранный образ [[Special:MyLanguage/kernel+initramfs]+DTB] в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./zImage
- Собрать совмещенный образ [U-Boot+[[kernel+initramfs]+DTB|kernel+initramfs]+DTB] в директорию U-Boot
$ cp ../linux/zImage-imx28-evk ./zImage
- Собрать совмещенный образ [U-Boot+[[kernel+initramfs]+DTB]], пригодный для загрузки по USB (bootstream)
$ CROSS_COMPILE='arm-linux-gnueabi-' make -j4 u-boot.sb
Сборка mxsldr
Эта утилита нужна для загрузки полученного образа по USB. Требуется установленная библиотека libusb-1.0 (apt-get install libusb-1.0-0-dev)
$ cd .. $ git clone http://git.denx.de/mxsldr.git $ cd mxsldr $ make
Загрузка собранного образа с помощью mxsldr
$ ./mxsldr ../u-boot/u-boot.sb