Build an image for booting in USB Mass-Storage mode
Версия от 19:28, 31 мая 2019; RomanKulibaba (обсуждение | вклад) (Новая страница: «* To get the kernel sources from git,'' <nowiki> $ git clone https://github.com/contactless/linux.git $ cd linux $ git checkout dev/v4.1.15 </nowiki> * Download…»)
This manual describes how to build bootstream to boot Linux from USB Mass Storage Gadget. In this case, the contents of the SD-card becomes available via USB as a normal USB flash drive.
The structure of the bootstream:
- U-Boot SPL - primary boot loader performs initial initialization
- U-Boot - the boot loader itself, runs Linux
- The Linux kernel image consists of several parts
- zImage - kernel
- initramfs - file system with modules to support USB gadget, is included in zImage
- DTB - nformation about the periphery required for the kernel to work. Is appended to the end of the zImage, CONFIG_ARM_APPENDED_DTB option should be enabled in the config
Building Linux
- To get the kernel sources from git,
$ git clone https://github.com/contactless/linux.git $ cd linux $ git checkout dev/v4.1.15
- Download initramfs from repository and unzip
$ unzip initramfs_usbgadget.zip $ sudo tar xvf initramfs_usbgadget.tar
- Initialize the environment to build the kernel. If necessary, change the DT and CROSS_COMPILE variables in this file
$ . ./scripts/kbuild-env.sh $ set +e
- Set the config of the kernel
$ make mxs_usbgadget_defconfig
- Build the kernel and modules by installing them in unpacked initramfs
$ INSTALL_MOD_PATH=./initramfs_usbgadget/ ./scripts/kbuild.sh
- Build kernel with appended DTB and 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