公式通りにインストールすればよいが、カーネルイメージが壊れているのか正しく起動できないので、今回は別のカーネルを使ってみた。(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
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',
を追加。
$ ./configure --without-snapshot --shared-v8 --shared-zlib --shared-openssl
$ CFLAGS="-DUSE_EABI_HARDFLOAT" make
# CFLAGS="-DUSE_EABI_HARDFLOAT" make install
$ node -v
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/