Настройка Intel Galileo с нуля и до установки полной версии Debian

На днях получил долгожданный Intel Galileo, заказывал у SparkFun Electronics, приехало довольно быстро и дешево. За несколько минут установил Little Linux от Intel подключился к нему по SSH и сразу стало грустно :) т.к. возможности у этого линукса крайне ограничены.

Поиски по интернету инструкций по установке полноценного Linux на Intel Galileo успехов не принесли. Потому решил написать статью по полной установке от начала до конца и заодно получить инвайт на хабр.

Итак начнем, инструкция будет основываться на этой.

Введение

Прежде чем приступать к установке Debian необходимо активировать сетевую карту на Intel Galileo, делается это с помощью скетча для Arduino (процедура подключения и настройки тут):
#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = {  
  0x98, 0x4F, 0xEE, 0x00, 0x66, 0x74 };

// Initialize the Ethernet client library
// with the IP address and port of the server 
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;

void setup() {
  // start the serial library:
  Serial.begin(9600);
  // start the Ethernet connection:
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // no point in carrying on, so do nothing forevermore:
    for(;;)
      ;
  }
  // print your local IP address:
  Serial.println(Ethernet.localIP());
}
void loop() {
}


После чего в роутере необходимо создать привязку IP адреса к MAC-адресу Intel Galileo (указан наклейкой на LAN порту).

Установка Debian

«Этап 1.Скачать Debian-7.3.0-i386-netinst.iso для виртуальной машины»
«Примечание: Установить следующие показатели для виртуальной машины: 256 MB ОЗУ, 1 CPU, 3.8 GB HDD (разметить под ext3), отключить принтер, звуковую карту и CD-ROM (после установки).»
«Примечание: создать второй жесткий диск на 20 GB HDD и разметить его под ext3»
”Примечание: Работать будем из-под рута"
«Примечание: Из всех пакетов установим только SSH»

«Этап 2. Тестируем SHH и обновляемся.»
«Примечание: Еще раз, все делаем под пользователем root.»

apt-get update
apt-get upgrade


(лично у меня обновлений не было и команды выполнились за пару секунд)

«Этап 3. Установка даты и времени»
«Примечание: Можно пропустить, если в процессе установки уже выбрали»
date
apt-get install ntpdate
y
ntpdate pool.ntp.org


«Этап 4. Монтируем второй жесткий диск (тот что на 20 Гб).»
«Примечание: Довольно интересный этап, обратите внимание, если Debian был установлен на файловую систему ext3, то все что ниже также надо выполнять под этой файловой системой. Я это не учел и был много интересных и не понятных ошибок.»
fdisk –l

«Примечание: Второй жесткий диск в моем случае называется /dev/sdb1. Если диск не был монтирован в систему, то выполняем команды ниже „
fdisk /dev/sdb1
n
p

“Со всем соглашаемся и жмем Enter пока нас вновь не спросят (примерно 2-3 раза)»
w
mkfs.ext3 /dev/sdb1
y
cd /
mkdir sdb
mount -t ext3 /dev/sdb1 /sdb
e2label /dev/sdb1 /sdb
df -h
cd sdb
ls

«Примечание: тут и далее ls можете пропускать, если уверены, что копирование/монтирование прошло удачно.»

«Этап 5. Скачиваем маленький линукс.»
cd /sdb
wget http://downloadmirror.intel.com/23171/eng/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z

«Примечание: Если еще не установили архиватор.»
apt-get install p7zip
p7zip -d LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5

«Примечание: Посмотрим что извлекли.»
ls
cd /sdb
mv /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5/image-full-clanton.ext3 /sdb/image-full-clanton_original.ext3
mkdir /sdb/image-full-clanton_original
mount -t ext3 /sdb/image-full-clanton_original.ext3 /sdb/image-full-clanton_original
cd /sdb/image-full-clanton_original

«Примечание: Посмотрим как все примонтровалось»
ls


«Этап 6. Модифицируем Debian под Intel Galileo.»
cd /media
mkdir /media/card
mkdir /media/cf
mkdir /media/hdd
mkdir /media/mmc1
mkdir /media/net
mkdir /media/ram
mkdir /media/realroot
mkdir /media/union
mkdir /sketch
cp -avr /sdb/image-full-clanton_original/lib/modules/3.8.7-yocto-standard/ /lib/modules/3.8.7-yocto-standard
cd /lib/modules/3.8.7-yocto-standard

«Примечание: Убедимся, что все скопировалось.»
ls
cp -avr /sdb/image-full-clanton_original/opt/cln/ /opt/cln
cd /opt/cln/galileo

«Примечание: И тут тоже все скопировалось.»
ls


«Этап 7. Внесем изменения для инициализации Debian.»
nano /etc/inittab

«Примечание: вставить в конец файла»
«s0:2345:respawn:/sbin/getty -L 115200 ttyS1 vt102»

«Этап 8. Создаем образ нашего Линукса.»
cd /sdb

«Примечание: Если будет не получаться попробуйте перезапустить Debian в безопасном режиме. Лично у меня именно тут начались ошибки из-за разницы между ext3 и ext4 — исправил форматированием первого жесткого под ext3 и начав сначала.»
fdisk -l

«Примечание: Обратите внимание на количество блоков в /dev/sda1 в моем случае это 3766272.»
dd if=/dev/sda1 of=/sdb/image-full-clanton.ext3 bs=3766272 conv=sync,noerror
mkdir /sdb/image-full-clanton
mount -t ext3 /sdb/image-full-clanton.ext3 /sdb/image-full-clanton
cd /sdb/image-full-clanton

«Примечание: Убедимся, что все скопировалось.»
ls


«Этап 9. Последние штрихи в установке.»
rm -rf /sdb/image-full-clanton/sys
rm -rf /sdb/image-full-clanton/proc
mkdir /sdb/image-full-clanton/sys
mkdir /sdb/image-full-clanton/proc
cd /sdb
umount -l /sdb/image-full-clanton
mv /sdb/image-full-clanton.ext3 /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5/image-full-clanton.ext3
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5

«Примечание: Убедимся в наличии файла image-full-clanton.ext3»
ls


«Этап 10. Подготовка MicroSD — по инструкции»
«От имени Администратора запустим из командной строки diskpart.exe.»
"Run diskpart.exe"
"DISKPART> list disk"
"DISKPART> select vol <a>
; (где «a» это Ваша SD карта) (при двух физических жестких дисках это ТОМ 5. Но именно на этот этапе уже можно «покупать» и устанавливать Paragon Partition Manager >_< жаль я этого не знал раньше. Пару раз удалив разметку жесткого диска я понял алгоритм определения карты памяти в кард ридере: Выбрать том 10, если не найдено выбрать 9… флешка это последний том с конца, который он обнаружит, у меня это было 5)"
"DISKPART> clean"

(Если после этой команды у Вас пропала часть ярлыков с рабочего стола, и пропал жесткий диск, то очистили Вы явно не карту памяти. Устраняется эта оплошность Paragon-ом, просто заново подключив буквы дисков и обновлением MBR)
"DISKPART> create part primary"
"DISKPART> active"
'DISKPART> format quick label="BOOTME"'

«Примечание: Может понадобиться полное форматирование карты памяти, но мне оказалось достаточно „быстрого“ форматирования.»
'DISKPART> format label="BOOTME"'
"DISKPART> exit"


«Этап 11. Загрузим новый image-full-clanton.ext3 на SD карту»
«Примечание: Если вы перезагружались то необходимо вновь монтировать разделы /sdb1.»

mount -t ext3 /dev/sdb1 /sdb
cd /sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5


«Активируем SD карту в виртуальной машине и выполним команду fdisk -l для понимания названия карты. В моем случае SD карта это dev/sdc1»:

mkdir mnt/usb
mount -t vfat -o iocharset=utf8,codepage=866 /dev/sdc1 /mnt/usb


“Сейчас необходимо скопировать содержимое папки «/sdb/LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5» на карту памяти, способов много, я предпочел установить файловый менеджер mc (apt-get install mc), запустить его и в нем выполнить копирование”

На этом этапе я поторопился и нагло вырвал кард ридер, после чего Intel Galileo отказался с нее стартовать. Скопировал с карты памяти на рабочий стол файл image-full-clanton.ext3 и повторил этап 10, затем разархивировал оригинальный LINUX_IMAGE_FOR_SD_Intel_Galileo_v0.7.5.7z на карту памяти, скопировал с заменой image-full-clanton.ext3 (с рабочего стола), добавил 2 файла из оригинального архива LITTLE_LINUX_IMAGE_FirmwareUpdate_Intel_Galileo_v0.7.5 и вставил карту памяти в Intel Galileo. Спустя секунд 20 я зашел на него по SSH.



Для начала установил «mc», установка заняла довольно продолжительный период по времени, но закончилась удачно. В дальнейшем планирую установить web-сервер, а пока выбираю наименее «тяжелые» системы для этого.



Вместо вывода

Таким образом я получил полноценный Debian на Intel Galileo, на котором исправно работают большинство команд, но некоторая часть не работает или работает нестабильно. В ближайших планах заставить Galileo считывать данные с датчиков и записывать результат в SQL таблицу с последующим выводом данных на сайт.

Как только дадут инвайт на Windows 8 для Galileo возможно его функционал увеличится, в любом случае установлю и это будет интересно.

Напоминаю, что Intel Galileo не поддерживает SD карты объемом больше 32 Гб и крайне предпочтительно использовать карты памяти 10 класса.

Страница загрузок на сайте Intel (на оригинальные архивы)
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 20

    +1
    Правильно ли я понимаю, что в таком дебиане доступны все стандартные пакеты и можно установить например mono?
      0
      Доступны все, а вот корректно работать некоторые отказываются)
      Вчера добавил к этой установке следующее:
      apt-get install mc
      apt-get install lighttpd
      apt-get install php5
      apt-get install php5-cgi
      apt-get install sqlite3
      apt-get install arduino
      

      и установил java и еще несколько пакетов. На данный момент писать скетч на ардуино на самом галилео не выходит, ругается на яву и решений пока я не нашел
        +1
        Не знаю что такое скетч, но был бы признателен если бы вы проверили работает ли mono :) Если да, то наверное, закажу себе тоже посмотреть что как.
          0
          А в чем интерес к mono, если не секрет? Просто известная платформа или что-то еще?
            +1
            Я бы сказал удобная. Я не хочу разводить холивар, но в данном случае для меня скорость разработки и поддержка софта на C# под linux важнее чем производительность C++, например на RaspberryPi и BeagleBone Black mono работает очень даже не плохо, хотелось бы попробовать и тут. :)
            +1
            Ранее я о mono только слышал, сейчас устанавливал впервые по Вашей просьбе, потому мог и упустить какие то моменты. Вкратце, выполнил все по этой инструкции, установка заняла около часа. Итог — программа Hello World работает :)
              0
              Супер! Большое спасибо за тест! Будем заказывать :)
                0
                Приехала борда, но что то как то не понятно. Неужели нельзя стартануть плату с поднятым езернетом и включеным SSH? Зачем мне какой то 3.5 джек для UART'a что бы работать с системой? Сижу уже битый час, ничего с флешки так и не стартует и SSH не поднимает, хотя IP адрес вроде присваивается.

                Не понятно :(
                  0
                  Быстро оно до вас доехало, езернет включается либо скетчем, либо самостоятельно — у всех разные мнения. SSH в нормальном дебиане стартует без проблем.
                    0
                    Не загружался образ с флешки пока не обновил прошивку. Обновил и всё сразу заработало :)
          +1
          Также можно было скачать и записать готовый образ debian на sdcard с sourceforge.net/projects/galileodebian/
          или yocto c software.intel.com/en-us/iotdevkit
            0
            Проблемы с софтом можно решить, установив Gentoo — с вероятностью 90% не было бы такой ситуации как
            но некоторая часть не работает или работает нестабильно

            Сам сталкивался с этим на ARM (конкретно — на Cubieboard) — всё равно даже в Ubunt'е пришлось перекомпилировать ядро, что бы включить даже простейшие GPIO, не говоря о всяких там 1-wire, SPI и пр…
              0
              Там была обнаружена проблема с libpthread. На сколько я понимаю, он пытается использовать многопоточность на одноядерном процессоре. Кто-то придумал часть файла заменить инструкцией NOP, чтоб исправить его…
                0
                Не должно было вызывать неработоспособности программ, ибо многопоточность вполне можно использовать на одноядерном процессоре — вопрос только в целесообразности. Скорее всего дело было в чём-то ином, находящемся в том коде (если это помогло, ест).
                  0
                  Вызывает частичную неработоспособность. Например, при попытке зайти по ssh под root демон падает.
              0
              Насколько я понимаю не все работают и работают не стабильно из за того что это бинарники i386, а intel Quark не все команды i386 поддерживает?

              Забавное явление, у меня похожая ситуация была когда я в начале своего знакомства с FreeBSD задолбался ждать сборки мира на старом i386 и пересобрал его на другом компьютере с P4, а о том что make автоматически выбирает нужные флаги под нужную архитектуру я не знал, в итоге система загрузилась, но многие программы работало именно так как вы описали.
                0
                Отдельное спасибо автору за статью.
                cubiculus, не могли бы вы поделиться образом, который у вас получился? Я уже давно пытался сделась такой образ debian, но почему-то не удавалось заставить grub его грузится сразу (делал по оригинальному посту на Intel Community).

              Only users with full accounts can post comments. Log in, please.