Инструменты пользователя

Инструменты сайта


wiki:usomiq-sdcard
no way to compare when less than two revisions

Различия

Показаны различия между двумя версиями страницы.


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