Raspberry Pi — загрузка с USB флэшки (ошибки)

Весь процесс уже описан здесь, но в последствии я обнаружил несколько важных моментов и поэтому, дабы сохранить хронологию, я не редактировал оригинал статьи, но создал новую.

Итак, вот перечень обнаруженных ошибок/вопросов и способы их решения.

1. Raspbian не загружается с этого всего

Имеется в виду, что если произвести все как описано в оригинальной статье, то ни одна из последних OS (Raspbian wheezy, Raspbian jessie) не загружается полностью автономно. В случае с wheezy, на каком-то этапе надо нажать комбинацию клавишь CTRL + D, с jessie все хуже – ничего не помогает, она просто не загружается полностью. Все это говорит об одном – вы не сможете зайти на raspberry pi по SSH.

Причина

Причина проста, ошибка в файловой системе sdcard. То есть, тот образ boot.img, который мы заливали на sdcard – содержит ошибки файловой системы, и возникли они на этапе выдирания его (первого раздела) с оригинального образа Raspbian. Более того, утилита fsck под linux находит всего одну ошибку и даже исправляет ее

# fsck - находит и исправляет ошибки файловой системы
fsck -f -p /dev/mmcblk0

но это никак не фиксит истинную проблему.

Решение

Решение простое. Нам не нужно напрямую копировать файловую систему с оригинального образа raspbian на sdcard. Вместо этого, мы примонтируем в какую нибудь папку первый раздел (boot) оригинального образа raspbian и скопируем с него все файлы на sdcard, предварительно правильно отформатировав ее.

  1. Из-под Windows форматируем sdcard с помощью утилиты SDFormatter V4
    SDFormatter4
  2. Заходим в ubuntu, и там производим следующее
    # монтируем шару в ubuntu
    mount -t vboxsf SHARED /mnt/share
    # создаем папку, куда мы будем монтировать первый раздел оригинального образа raspbian
    cd /mnt/share
    mkdir boot
    mount -t vfat -o loop,offset=$((8192*512)) 2015-11-21-raspbian-jessie.img /mnt/share/boot/
    # так как у нас нет доступа к sdcard из-под ubuntu, нам надо скопировать все файлы в другую папку
    mkdir boot_sdcard
    # копируем файлы утилитой rsync, можно конечно и с помощью cp -r, но так мы не увидим прогресс копирования
    rsync -av /mnt/share/boot/ /mnt/share/boot_sdcard/
  3. Возвращаемся обратно в Windows и теперь отсюда скопируем все файлы с папки SHARED/boot_sdcard на sdcard

2. На USB флэшку нам не нужно заливать весь оригинальный образ, а только второй раздел

Итак, сейчас у нас уже есть полностью рабочий оригинальный первый раздел из оригинального образа raspbian на карте sdcard, а значит нам теперь не нужен первый раздел на USB флэшке, ведь это та же копия. Но так как раньше у нас были ошибки на sdcard – нам нужен был и этот раздел на USB флэшке. Сейчас же мы все исправили, а значит и необходимость в первом разделе на USB флэшке отпадает.

  1. Отформатируем USB флэшку с помощью GParted в ubuntu. Создадим один единственный раздел ext4, добавим lable – "jessie", это все что нам требуется от USB.
    – В открытом окне GParted выбираем USB флэшку (обычно это /dev/sdb)
    – На каждом разделе флэшки кликаем правой кнопкой мыши и выбираем "unmount"
    – Также на каждом разделе кликаем правой кнопкой мыши и выбираем "delete"
    – Создаем новый раздел на весь объем флэшки, файловая система ext4, Lable – "jessie"
    – После всех этих манипуляций – применяем все изменения и ждем результата
  2. Делаем все примерно то же самое что и с sdcard, только на последнем этапе мы файлы будем копировать не в Windows, а в той же ubuntu, потому что Windows по умолчанию не видит файловые системы ext4.
    # создаем папку в шаре для второго раздела оригинального образа raspbian
    cd /mnt/share
    mkdir jessie
    # монтируем второй раздел оригинального образа raspbian
    mount -t ext4 -o loop,offset=$((131072*512)) 2015-11-21-raspbian-jessie.img /mnt/share/jessie/
    # копируем файлы утилитой rsync
    rsync -av /mnt/share/jessie/ /media/nikel/jessie/
  3. Так как у нас теперь один раздел на USB флэшке, то и путь к этой флэшке нам надо указать правильно в файле cmdline.txt в корне sdcard, а значит параметр root=/dev/sda2 меняем на root=/dev/sda1
  4. Также и fstab, который расположен на USB флэшке – /etc/fstab, должен быть исправлен:
    cat /etc/fstab
    proc            /proc           proc    defaults          0       0
    /dev/mmcblk0p1  /boot           vfat    defaults          0       2
    /dev/sda1       /               ext4    defaults,noatime  0       1

Вот в общем то и все.

Могу лишь добавить одно, для того чтобы мы могли заходить на raspberry pi сразу после его загрузки по SSH, скорее всего нам надо будет установить ему статический IP адресс, а для этого надо изменить конфигурации в файле /etc/network/interfaces:

iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
auto eth0

Понятное дело, что IP адрес и все остальное должно быть отредактировано в соответствии с настройками вашей сети.

На этом всё, всем удачи.

1 comment for “Raspberry Pi — загрузка с USB флэшки (ошибки)

Comments are closed.