LoginSignup
2
4

More than 5 years have passed since last update.

Intel GalileoでLinuxを動作させてgccを動かすまでの話

Last updated at Posted at 2015-01-08

Intel GalileoはArduinoとx86プロセッサが載っているヤバいかっこいいボードPCです。Linuxも動きます。

備忘録としてLinux導入からgccのインストールまでを書いておきます。
作業環境ですが、今回はWindows 7で行いましたが、シリアルコンソール(最悪なくても良い)とSSHが各自で用意できる環境なら特に問題無いと思います。

手順の流れ

  1. Galileoのファームウェアのアップデート
  2. microSDカードのフォーマット
  3. microSDカードへLinuxイメージをコピー
  4. GalileoでmicroSDから起動
  5. パッケージマネージャの設定
  6. 各パッケージのインストール
  7. 動作確認

1. Galileoのファームウェアのアップデート

GalileoのファームウェアはArduino IDEから行います。
この辺は解説サイトがあったのでそちらを参考に。
GalileoにUSBケーブルを接続する場合、USBケーブルを接続する前にACアダプタを接続して通電させておかないとGalileoが破損する可能性があるようです。解説サイトにも記述されてますが念のため。

Intel Galileo FWアップデート、シリアルコンソール・Ethernetリモート接続

私はGalileo用のUSB-Serialケーブルがあったのでしませんでしたが、telnetをスケッチから起動してifconfigの結果をシリアルに吐き出させることでIPアドレスを取得できるらしいです。

2. microSDカードのフォーマット

FAT32でフォーマットされている必要があります。フォーマットをする場合、Windows標準のフォーマッタでは不具合が出る場合があるため、以下のフォーマッタを使用してください。

SD/SDHC/SDXC用 SDフォーマッター4.0 - SD Association

3. microSDカードへLinuxイメージをコピー

Intelの公式サイトでLinuxイメージが配布されています。SD-Card Linux Imageをダウンロードしてください。

Galileo Software Downloads | Intel Communities

現在のバージョンは1.0.4だったので、ダウンロードしたファイルの名前はSDCard.1.0.4.tar.bz2でした

これを展開すると4つのファイルと1つのフォルダが展開されます。

  • boot
  • bzImage
  • core-image-minimal-initramfs-clanton.cpio.gz
  • grub.efi
  • image-full-galileo-clanton.ext3

これをmicroSDのルートディレクトリにコピーします。

4. GalileoでmicroSDから起動

用意したmicroSDをGalileoにセットしてUSB-Serialケーブル、LANケーブルを繋ぎます、Tera Termで接続し、ACアダプタを接続します。ボーレートは115200baudです。

Galileo用のUSB-Serialケーブルを初めて使用する場合、ドライバのインストールが必要になります。Windowsの場合、ドライバはIntelの公式サイトで配布しているArduino IDE内のhardware\arduino\x86\toolsの中にありました。

ACアダプタを接続すると、大量のブートログが流れたあとにログイン画面になります。

Poky 9.0.2 (Yocto Project 1.4 Reference Distro) 1.4.2 clanton /dev/ttyS1

clanton login:

rootでログインできるのでログインします。

microSDからブートしているか確認のために、以下のコマンドを実行します。

$ ls /media/mmcblk0p1/
boot
bzImage
core-image-minimal-initramfs-clanton.cpio.gz
grub.efi
image-full-galileo-clanton.ext3

先ほどmicroSD内にコピーしたファイルのファイル名が出力された場合、microSDから起動できているようです。

5. パッケージマネージャの設定

IntelがGalileo用にビルドしたこのLinux(clantonと言うらしいです)はパッケージマネージャにopkgを採用しています。
標準ではopkgのソースリストが空なので、手動で追加してやります。

$ vi /etc/opkg/base-feeds.conf

Galileo Package Repo Configuration Instructionsより、以下の3行を追加します。

src/gz all     http://repo.opkg.net/galileo/repo/all
src/gz clanton http://repo.opkg.net/galileo/repo/clanton
src/gz i586    http://repo.opkg.net/galileo/repo/i586

ソースリストを反映させます。

$ opkg update

6. 各パッケージのインストール

gccをインストールする場合、以下のようなエラーが発生します。

Collected errors:
 * check_data_file_clashes: Package uclibc wants to install file /lib/libuClibc-0.9.34-git.so
        But that file is already provided by package  * libc0
 * check_data_file_clashes: Package uclibc wants to install file /lib/libc.so.0
        But that file is already provided by package  * libc0
 * check_data_file_clashes: Package uclibc wants to install file /lib/ld-uClibc-0.9.34-git.so
        But that file is already provided by package  * libc0
 * check_data_file_clashes: Package uclibc wants to install file /lib/ld-uClibc.so.0
        But that file is already provided by package  * libc0
 * opkg_install_cmd: Cannot install package gcc.

gccのインストールの際にuClibcが同時にインストールされますが、一部のファイルがlibc0によって既に提供されているためuClibcが正常にインストールができずにインストールに失敗します。

その為、まずuClibcを強制的にインストールし、その後gccをインストールします。

$ opkg install --force-overwrite uclibc
$ opkg install gcc

makeとかビルドに必要なパッケージもインストールする場合はこちらで。

$ opkg install packagegroup-core-buildessential

7. 動作確認

ほとんどおまけです。

$ vi hello.c
hello.c
#include <stdio.h>
int main(void){
  printf("Hello world!\n");
  return 0;
}
$ gcc hello.c -o hello
$ ./hello
Hello world!

終わりに

デフォルトでSSHが動作していたので、動作中のGalileoのIPアドレスを取得したらほぼゴールです。

uClibcを使っているため、ある程度大規模なソースコードになるとライブラリが足りないなどでコンパイルに失敗すると思います。
小規模なコードなら今回の方法で良いと思いますが、基本的にクロスコンパイルを行うべきです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4