Это старая версия документа!
Содержание
Подготовка SD карты для загрузки Linux
Запись U-Boot на microSD-card
Узнать имя устройства, связанное c SD картой, можно командой «lsblk»
user@localhost:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb 8:16 0 111,8G 0 disk fd0 2:0 1 4K 0 disk sdc 8:32 1 7,4G 0 disk └─sdc1 8:33 1 7,4G 0 part /media/rootfs sda 8:0 0 232,9G 0 disk ├─sda2 8:2 0 1K 0 part ├─sda5 8:5 0 7,6G 0 part [SWAP] ├─sda1 8:1 0 130,4G 0 part / └─sda6 8:6 0 94,9G 0 part /windows
Предположим, что SD карта видна в системе как /dev/sdc
export DISK=/dev/sdc
Очистка microSD
sudo dd if=/dev/zero of=${DISK} bs=1M count=10
Установка загрузчика
sudo dd if=./u-boot/MLO of=${DISK} count=1 seek=1 bs=128k sudo dd if=./u-boot/u-boot.img of=${DISK} count=2 seek=1 bs=384k
Создание таблицы разделов на microSD
Отмонтируйте SD-карту, выполнив команду:
sudo umount /dev/sdc1
Проверка версии sfdisk:
sudo sfdisk --version
Для версии sfdisk >= 2.26.x:
sudo sfdisk ${DISK} <<-__EOF__ 4M,,L,* __EOF__
Для версии sfdisk ⇐ 2.25.x:
sudo sfdisk --unit M ${DISK} <<-__EOF__ 4,,L,* __EOF__
Форматирование разделов
Проверка версии mkfs.ext4:
sudo mkfs.ext4 -V
Для версии mkfs.ext4 >= 1.43:
sudo mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}1
Для версии mkfs.ext4 ⇐ 1.42:
sudo mkfs.ext4 -L rootfs ${DISK}1
Монтирование карты
На большинстве операционных систем монтирование происходит автоматически, но если этого не произошло, монтируем с использованием команд:
sudo mkdir -p /media/rootfs/ sudo mount ${DISK}1 /media/rootfs/
Запись ядра и файловой системы
Файл ядра и модулей получают выполнением инструкций на странице компиляции ядра.
После исполнения скрипта build_kernel.sh появится следующее сообщение:
----------------------------- Script Complete eewiki.net: [user@localhost:~$ export kernel_version=4.X.Y-Z] -----------------------------
Скопируйте в командную строку сообщение «export kernel_version=4.X.Y-Z» в точности, как написано в окне терминала и выполните:
export kernel_version=4.X.Y-Z
Запись файловой системы
sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/ sync sudo chown root:root /media/rootfs/ sudo chmod 755 /media/rootfs/
Запись файла ядра zImage :
sudo cp -v ./ti-linux-kernel-dev/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}
Запись модулей ядра
sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
Опеределение версии ядра в переменной окружения uname_r
sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"
Запись бинарных файлов для дерева устройств
sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/ sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/
Исправьте fstab
sudo sh -c "echo '/dev/mmcblk0p1 / auto errors=remount-ro 0 1' >> /media/rootfs/etc/fstab"
Включение сети
Исправьте: /etc/network/interfaces
sudo nano /media/rootfs/etc/network/interfaces
Добавьте строки:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Исправьте: /etc/udev/rules.d/70-persistent-net.rules
sudo nano /media/rootfs/etc/udev/rules.d/70-persistent-net.rules
Добавьте строки:
# BeagleBone: net device () SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Запись файла uEnv.txt
Создайте файл:
vi uEnv.txt
Добавьте в него строки:
loadaddr=0x82000000 fdtaddr=0x88000000 rdaddr=0x88080000 initrd_high=0xffffffff fdt_high=0xffffffff #for single partitions: mmcroot=/dev/mmcblk0p1 loadximage=load mmc 0:1 ${loadaddr} /boot/vmlinuz-${uname_r} loadxfdt=load mmc 0:1 ${fdtaddr} /boot/dtbs/${uname_r}/${fdtfile} loadxrd=load mmc 0:1 ${rdaddr} /boot/initrd.img-${uname_r}; setenv rdsize ${filesize} loaduEnvtxt=load mmc 0:1 ${loadaddr} /boot/uEnv.txt ; env import -t ${loadaddr} ${filesize}; loadall=run loaduEnvtxt; run loadximage; run loadxfdt; mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=${mmcroot} rootfstype=${mmcrootfstype} ${cmdline} uenvcmd=run loadall; run mmcargs; bootz ${loadaddr} - ${fdtaddr};
Запишите файл на SD-карту:
sudo cp -v ./uEnv.txt /media/rootfs
Извлеките SD/microSD карту
sync sudo umount /media/rootfs
Подготовка eMMC для загрузки Linux
Запись загрузчика
Для последующей записи загрузчика U-Boot на eMMC скопируйте файлы MLO/u-boot.img на SD карту
sudo mkdir -p /media/rootfs/opt/backup/uboot/ sudo cp -v ./u-boot/MLO /media/rootfs/opt/backup/uboot/ sudo cp -v ./u-boot/u-boot.img /media/rootfs/opt/backup/uboot/
Для последующей работы необходимо загрузиться с SD/microSD и выполнять следующие действия, будучи в системе.
Запись U-Boot на eMMC
Узнать имя устройства, связанное с eMMC, можно командой «lsblk»
root@arm:~# lsblk mmcblk1boot0 179:16 0 16M 1 disk mmcblk1boot1 179:24 0 16M 1 disk mmcblk0 179:0 0 7.4G 0 disk └─mmcblk0p1 179:1 0 7.4G 0 part mmcblk1 179:8 0 3.6G 0 disk └─mmcblk1p1 179:9 0 3.6G 0 part /
В данном случае, eMMC видна в системе как /dev/mmcblk0
export DISK=/dev/mmcblk0
Очистка eMMC
dd if=/dev/zero of=${DISK} bs=1M count=10
Установка загрузчика
dd if=./u-boot/MLO of=${DISK} count=1 seek=1 bs=128k dd if=./u-boot/u-boot.img of=${DISK} count=2 seek=1 bs=384k
Создание таблицы разделов на eMMC
Проверка версии sfdisk:
sfdisk --version
Для версии sfdisk >= 2.26.x:
sfdisk ${DISK} <<-__EOF__ 4M,,L,* __EOF__
Для версии sfdisk ⇐ 2.25.x:
sfdisk --unit M ${DISK} <<-__EOF__ 4,,L,* __EOF__
Форматирование разделов
Проверка версии mkfs.ext4:
mkfs.ext4 -V
Для версии mkfs.ext4 >= 1.43:
mkfs.ext4 -L rootfs -O ^metadata_csum,^64bit ${DISK}1
Для версии mkfs.ext4 ⇐ 1.42:
mkfs.ext4 -L rootfs ${DISK}1
Монтирование карты
На большинстве операционных систем монтирование происходит автоматически, но если этого не произошло, монтируем с использованием команд:
mkdir -p /media/rootfs/ mount ${DISK}1 /media/rootfs/
Узнайте версию установленного ядра
root@arm:~# uname -a Linux arm 4.X.Y-Z #1 SMP Tue May 2 16:26:46 MSK 2017 armv7l GNU/Linux
Скопируйте в командную строку сообщение «export kernel_version=4.X.Y-Z» и выполните:
export kernel_version=4.X.Y-Z
Скачайте и распакуйте архив с исходным кодом файловой системы
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-8.7-bare-armhf-2017-03-02.tar.xz tar xf debian-8.7-bare-armhf-2017-03-02.tar.xz
User | Password |
---|---|
root | root |
Запись файловой системы
tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/ sync chown root:root /media/rootfs/ chmod 755 /media/rootfs/
Запись файла ядра zImage :
cp -v /boot/vmlinuz-${kernel_version} /media/rootfs/boot/zImage
Запись модулей ядра
mkdir -p /media/rootfs/lib/modules cp -r /lib/modules/${kernel_version} -C /media/rootfs/lib/modules
Опеределение версии ядра в переменной окружения uname_r
sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"
Запись бинарных файлов для дерева устройств
mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/ cp -r /boot/dtbs/${kernel_version} -C /media/rootfs/boot/dtbs/${kernel_version}/
Исправьте fstab
sh -c "echo '/dev/mmcblk0p1 / auto errors=remount-ro 0 1' >> /media/rootfs/etc/fstab"
Включение сети
Исправьте: /etc/network/interfaces
nano /media/rootfs/etc/network/interfaces
Добавьте строки:
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp
Исправьте: /etc/udev/rules.d/70-persistent-net.rules
nano /media/rootfs/etc/udev/rules.d/70-persistent-net.rules
Добавьте строки:
# BeagleBone: net device () SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
Извлеките SD/microSD карту
sync umount /media/rootfs