Skip to content

Instantly share code, notes, and snippets.

@novi
Created July 13, 2012 06:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save novi/3103024 to your computer and use it in GitHub Desktop.
Save novi/3103024 to your computer and use it in GitHub Desktop.
Arch Linux ARM on Beagle Bone

公式通りにインストールすればよいが、カーネルイメージが壊れているのか正しく起動できないので、今回は別のカーネルを使ってみた。(rootfsのイメージは公式のものでOK。)

下準備

以下SDカードを /dev/sdb

# fdisk /dev/sdb
/dev/sdb1 : 128MB, type 0e, アクティブフラグ
/dev/sdb2 : 残り, type Linux

でパーティションを作成。

各パーティションをフォーマットしてマウント。

# mkfs.vfat -F 16 -n "bootloader" /dev/sdb1
# mkfs.ext3 -L "rootfs" /dev/sdb2
# mount -t vfat /dev/sdb1 /media/bootloader
# mount /dev/sdb2 /media/rootfs

rootfsを公式からダウンロードして展開する。

# tar zxvfp ArchLinuxARM-am33x-latest.tar.gz -C /media/rootfs

カーネルとブートローダーのインストール

Ångström BeagleBone demo files から MLO, u-boot.img, uImage をダウンロードして、bootloaderパーティション(/dev/sdb1)へコピー。 (MLOを最初にコピーする。)

起動後の設定

ボードのUSBをマシンに接続して、

$ screen /dev/cu.usbserial…B 115200

で端末を起動。リセットボタンを押すと、CCC… と出るのでSDカードを差して、リセット。rootパスワード root でログインする。

# pacman -Syu

してシステムをアップデート。

必要に応じて、/boot/uImageをbootloaderにコピーして新しいカーネルを使う。 (バックアップ推奨)

続きはFirst Stepsを見ながら設定。

スワップの設定

# dd if=/dev/zero of=/swapfile bs=1048576 count=256 (256MByte)
# mkswap /swapfile
# swapon /swapfile 
# nano /etc/fstab

tmpfsをコメントアウトして、先ほどのswapfileを追加して再起動。

/swapfile       none    swap    defaults        0       0

Node.jsのコンパイル

pacmanのpackageにあるnodejsはopenssl絡みのエラーが出て正しく動かなかったので、自分でコンパイルする。 セルフコンパイルとクロスコンパイル両方可能。(ただし、クロスコンパイルはバイナリサイズがかなり大ききくなる。)

コンパイルに必要なパッケージをインストール

# pacman -S python2 base-devel v8 zlib

pythonのリンクを作成(作業終了後に消す)

$ cd /usr/bin
# ln -s python2 python

Node.jsのソースコードを準備

$ wget http://nodejs.org/dist/v0.8.2/node-v0.8.2.tar.gz
$ tar zxvf node-v0.8.2.tar.gz 
$ cd node-v0.8.2

ここで、configureを1行目をpython2に変更しておく。

ARMv7絡みのエラーを修正するために、common.gypiを開いて、'variables': { の下に

'armv7%':'1',
'arm_neon%':'1',

を追加。

方法1: セルフコンパイル

$ ./configure --without-snapshot --shared-v8 --shared-zlib --shared-openssl
$ CFLAGS="-DUSE_EABI_HARDFLOAT" make
# CFLAGS="-DUSE_EABI_HARDFLOAT" make install
$ node -v

方法2: クロスコンパイル

cross compiling node.js for arm を参考にしながら、Set Environmentまで行う。

installer.jsを実行するためにホストにnode.js(x86 or 64)をインストール。

# pacman -S nodejs

クロス環境に入って、コンパイルを行う

$ ~/cross-compiler-shell.sh
$ cd node-v0.8.2
$ ./configure --prefix=`pwd`/nodearm --without-snapshot
$ make -j3

outフォルダ内に実行ファイル等ができるので、これをARMのボードまで持っていく

$ mkdir pkg
$ node tools/installer.js install pkg
$ tar zcvf node.tar.bz2 pkg/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment