もりねずみーのやつ

インターネット上でしか生きられません

Raspberry Pi向けArch Linux ARMインストールの自動化(一部)

はじめに

用途が少し特殊なため、役に立つ人はごく少数かもしれない。

完全に自分が楽するためだけに作ったものなので、有益な情報になるかどうかわからないけど、役に立ってくれる人がいたら、少し嬉しい。

Arch Linux ARM OSインストール用スクリプト

概要

事前に必要なもの(スクリプト実行環境がArch Linuxの場合)

  • bsdtar
  • dosfs-tools
  • f2fs-tools

ソースコード

https://github.com/morinezumiiii/ArchLinuxARM-installer-for-raspberrypi

使い方

  1. SDカードをPCに挿す。
  2. 以下のようにスクリプトを実行
# cd ArchLinuxARM-installer-for-raspberrypi
# ./install.sh [SDデバイスパス] [IPアドレス] [ゲートウェイ] [DNS]

例:

# ./install.sh /dev/sdX 192.168.0.100 192.168.0.1 192.168.0.1
  1. スクリプトが完了したら、SDカードを抜き、Raspberry Piに挿し、電源を投入。

これで、指定したIPアドレス上のRaspberry PiSSHでログイン出来る。

経緯

Arch Linux(x86/x86_64)とArch Linux ARMのインストールの違い

  • Arch Linuxx86/x86_64(以下x86版)(archlinux.org)
  • Arch Linux ARM:(以下ARM版)(archlinuxarm.org)

両者は、動作するプラットフォームや、パッケージリポジトリの場所が異なったりするが、同じArch Linux

ARM版はARM系プロセッサを積んだマイコンボード向けに、それぞれのARMアーキテクチャ毎にOSイメージの配布を行っている。

Raspberry Pi向けにおいては、ARMv6向け(Raspberry Pi Model A/B/A+/B+)と、ARMv7向け(Raspberry Pi 2 ModelB)に、配布を行っている。

x86版とRaspberry Pi向けARM版では、OSインストールの手順が異なり、ある程度の環境が作られた状態のものをインストールすることになる。

具体的には、archlinuxarm.orgからOSイメージをダウンロードし、bootパーティション/rootパーティションそれぞれをSDカードにコピーして手持ちのRaspberry Piに挿して電源を入れてあげるだけで、SSHで接続できる状態になる。

細かい設定等は、まずそのOSを立ち上げてからの作業となる。

Arch Linux ARMをRaspberry Piにインストール

ARM版公式サイトに、インストール手順がご親切に記載されている。

http://archlinuxarm.org/platforms/armv6/raspberry-pi

個人的な事情

私は、県内で日本Androidの会の茨城支部として、毎月勉強会を主催しています。

その際に、Raspberry Piを使ったワークショップ/ハンズオンを行う場合は、前日までに(現時点で)10台のRaspberry Piをセットアップしておく必要があります。

上記の公式インストール手順を、Raspberry Pi台数分を手作業で行っていると、かなりの時間がかかり、当日トラブルで再セットアップを行う必要があったりした場合も、大きな時間ロスとなり、参加者の方々に迷惑をかけてしまうので、今回自分用にスクリプト化しました。

その他設定

OSインストール後のセットアップ作業は、出来るだけ自動化させたいために、settings/setup.sh内に、スクリプトを用意し、それをRaspberry PiのSDカードのルートディレクトリ直下に配布し、SSHログイン後それを実行することでひと通りの必要なパッケージ類をインストールしたり、設定したりするようにしてあります。

Arch使いなら、arch-chrootpacmanを使ってマウントデバイス上のArch Linuxchrootした後、環境構築も出来るので、全部自動化させれるのだけど、その場合、ホスト側のArch LinuxARMアーキテクチャのものを使って行う必要があるので、断念しました。

ここらへん、もっと改善できるといいのですが。

あと、複数台のSDカードリーダ/ライタを接続して、パラレルでSDカードを焼くというのも考えましたが、接続されたUSBデバイスがどのデバイスで、どのSDカードがどのIPアドレスなのかわからなくなりそうな恐れがあるので、こちらは敢えてやらないようにしました。

おわり

とりあえず、勉強会の準備が、少し、いや、かなり楽になりました。

Node.jsでconfigモジュールの設定ファイル読み込み先を変える

環境

  • ラズパイ
  • Arch Linux ARM
  • Node.js v0.10.36
  • config 1.11.0

環境変数 NODE_CONFIG_DIR を設定

-- 環境変数 NODE_CONFIG_DIR 設定前
$ echo $NODE_CONFIG_DIR

$ node   
> var config = require('config');
WARNING: No configurations found in configuration directory:
WARNING: /home/morinezumiiii/tmp/node-config-test/config
WARNING: See https://www.npmjs.org/package/config for more information.

> config
{}
> config.util.getEnv('NODE_CONFIG_DIR');
'/home/morinezumiiii/tmp/node-config-test/config'
> 
(^C again to quit)
> 


-- 環境変数 NODE_CONFIG_DIR 設定
$ export NODE_CONFIG_DIR=/opt/conf/node-config

-- 環境変数 NODE_CONFIG_DIR 設定後
$ echo $NODE_CONFIG_DIR
/opt/conf/node-config
$ node
> var config = require('config');

> config
{ hoge: 1,
  fuga: 2,
  foo: 'bar' }
> config.util.getEnv('NODE_CONFIG_DIR');
'/opt/conf/node-config'
> 

ただのメモ

Arch Linux ARM(というかSystemd)のresolv.confについて

普段ラズパイでArch Linux ARMを使っていると、たまに(というかしょっちゅう)インターネットに繋がらなくなる。

IPアドレス直接指定では問題なく接続できるが、名前解決が出来ない。

環境

  • ラズパイ(2じゃないやつ)
  • systemd-networkdを使用
  • 静的IPv4
  • DNSサーバアドレスも設定済み

/etc/systemd/network/eth0.network

[Match]
Name=eth0
Host=test.morinezumiiii.jp

[Network]
DHCP=none
DNS=('192.168.0.1','8.8.8.8','8.8.4.4')

[Address]
Address=192.168.0.80/24

[Route]
Gateway=192.168.0.1/24

原因

原因はなんとなく分かっている。

Archを再起動すると、resolv.confがどこからか勝手に書き換えられているから。

でもそれがどこから書き換えているのかわからないので、解決方法がわからない。

ググってみると、同様にFedoraでresolv.confが勝手に書き換えられてしまって困っている人たちはちらほら見かけたが、Archとはちょっと原因が異なりそう(同じ?)

resolv.conf(つながるとき)

# This file is managed by systemd-resolved(8). Do not edit.
#
# Third party programs must not access this file directly, but
# only through the symlink at /etc/resolv.conf. To manage
# resolv.conf(5) in a different way, replace the symlink by a
# static file or a different symlink.

nameserver 8.8.4.4
nameserver 8.8.8.8

resolv.conf(つながらないとき)

# This file is managed by systemd-resolved(8). Do not edit.
#
# Third party programs must not access this file directly, but
# only through the symlink at /etc/resolv.conf. To manage
# resolv.conf(5) in a different way, replace the symlink by a
# static file or a different symlink.

nameserver 8.8.4.4
nameserver 2001:4860:4860::8844 <-- なんかできた
nameserver 8.8.8.8
# Too many DNS servers configured, the following entries may be ignored. <-- なんかできた
nameserver 2001:4860:4860::8888 <-- なんかできた

/etc/resolv.conf(シンボリックリンク)

/etc/resolv.confって、シンボリックリンクだったんですね。知らなかったよ。(白目)

$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 32 Feb  8 16:52 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

解決方法

まだわかってない。もっとsystemd-networkdを勉強してみる。

こふ

けんこふさんをダラダラ紹介するだけの記事

こふ語 Advent Calendar 2014 - Adventar

こふ語Advent Calendar 2014の9日目(ちょい遅くなったけど)です。 はてなブログにしてから技術系ガン無視な記事書くのこれが初めて。

けんこふとは

ちょっと真面目に紹介すると、Arch Linux使いな人。 最近日本国内でもArch Linux使いが多くなってきた気がするけど、 この人は結構長いイメージある。

不真面目に紹介すると、ド変態。ヤバイ。イッちゃってる。

多分、この人のせいで「Gentoo=こわい」みたいに、 「Arch=変態」というイメージが定着した。

もう一回真面目に書くと、初めてけんこふさんを見つけた時は、Arch関係で調べ物してた時だった。

ただその時は、たまたま記事が古かったので「yaourtか、packerで良いじゃん」「糞の役にも立たねぇな…」「何この六角大王で作ったみたいな自作萌えキャラ…」「キモッ」「キモッ」「きっしょ」と、冷ややかな目で見てた。

いつだったか自分のTLにRTされて流れてきた。

「やばい…kenkovだ…。」

そのけんこふさんがTL上で発する言葉の数々、完全に頭がイッちゃってるんじゃないかと思うほどで、キャラ作りでここまで絶対辿りつけない→かわいそうな人→これがけんこふそのものとして、次第に受け入れるようになってきた。

それがだんだん慣れてきて、ついには、けんこふさんの発言が面白い(ウケる)と思うようになってしまった。

あとアイコン可愛い。

こふ語

けんこふさんが発する言葉として、 「アンッ!アンッ!アンッ!アンッ!」 が、代表的かつ印象的。

そして突如現れた、けんこふさんと相乗効果を生み出す、もへ氏。

もへ氏、彼はすごい。すごいとしか言い様がない。

あのけんこふさんのド変態な発言をド変態な発言で返し会話するという、まさに目には目を。 と、思いきや突如サディストっぷりを発揮してけんこふさんに痛烈なツッコミやむちゃぶり。

f:id:aburos:20141210015615j:plain

このAdvent Calendarでも既に取り上げられているが、けんこふさん×もへ氏のやりとりから、けんこふさんの発言には、だいたいパターンがあることが浮き彫りとなった。

先述した「アンッ!アンッ!アンッ!アンッ!」に加え、「アッ…」、「ア^〜〜〜っ」や、 語尾に"っ"を付けるなど。

どんなバリエーションがあるかは、実際に自分の目でけんこふさんのツイートを見てみると良い。

パターンに慣れてくると、以下のように飲んでもらうことが出来るようになる。

※ただしこれは初歩中の初歩

f:id:aburos:20141210012638j:plain

けんこふさんをべた褒めする気はサラサラ無い。

ただ僕は、けんこふさんは技術力も自分なんかに比べて遥かに高く、尊敬しているし、絵も可愛いし、大好きですマル

おわりに

もうちょっとちゃんとネタ練って面白い記事書こうと思ったけど、皆さん高度で面白い記事書いてるので、めんどくさくてやめた。

f:id:aburos:20141210021405j:plain

We Love Kenkov.

Raspberry Pi Model B+(ArchLinux)でカメラモジュールが使えない件

追記(2018/5/23)

ラズパイ2や3では普通に使えて、I2Cも同時に使えています。

ひょっとしたら今のファームウェアならこの問題は解決してるかも?

モデルB+が悪いわけじゃなさそう

モデルB+を入手してからカメラモジュールを接続してraspstillとか使ってもエラーが出て使えなくて、(・3・)アルェーってなってたんだけど、モデルB+だけじゃなくモデルB、モデルAでもうまく行かなくなってた。

使えなくなってたのは、最近Arch Linuxをインストールしたヤツだけだった。

エラーメッセージは以下の通り。

mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly

このエラーが出る時って、本当にカメラモジュールが物理的につながってない(カメラモジュールのカメラ本体側の正方形のコネクタがしっかりささってない、FPCケーブルが断線してる)が大半なんだけど、今回問題になったのは、ラズパイ向けLinuxカーネル側の仕様かバグかってところっぽい。

ちなみにカーネルは3.12.26-1-ARCH。

以下の情報を探して右往左往してたところ、コレだっていうのが見つかったんだけど、結局のところよく理解してない。

B+ Camera is not detected (workaround available) - Raspberry Pi Forums

どうやら、spi-bcm2708とi2c-bcm2708モジュールがカーネルにロードされてると、カメラモジュールが競合してるのか、使えなくなってしまうっぽい。

Raspberry Pi + Arch Linuxでカメラモジュールを使う(暫定)

とりあえず、偉大なる先人達のお知恵をお借り(ググってただけ)しながら、使えるようにするまでを、まとめておこうかと思う。 (ただ、恐らくLinuxカーネル側の誤りで、後々修正されて必要なくなるのかもしれない…?)

最新ファームウェア/ツールを入れる

Tutorial for updating R-Pi firmware in ARCH LINUX [obsolete] - Raspberry Pi Forums

ここを頼りに、rpi-updateが使えるようにしておく。

# pacman -Syu
# pacman -S git wget
# wget http://raw.github.com/Hexxeh/rpi-update/master/rpi-update -O /usr/bin/rpi-update && chmod +x /usr/bin/rpi-update
# pacman -S ca-certificates
# pacman -S binutils
# pacman -Sy raspberrypi-firmware-bootloader linux-raspberrypi
# rpi-update
# sync
# reboot

vcgencmdが使えるようになり、ラズパイにカメラモジュールが接続されてるか確認出来るようになる。

$ vcgencmd get_camera
supported=1 detected=0

$ vcgencmd get_mem arm
arm=384M

$ vcgencmd get_mem gpu
gpu=128M

ラズパイのカメラモジュールを使う前提として、ArchARM公式Wikiにある通り、GPUへのメモリ割り当てに、最低でも128MBが必要というのと、おまじないがあるそうなので、それを/boot/config.txtに書き込む。

$ sudo vi /boot/config.txt

--- 以下を追記 ---
gpu_mem_512=128
gpu_mem_256=128

start_x=1
start_file=start_x.elf
fixup_file=fixup_x.dat

modprobeのblacklistを作成し、ブート時にロードするモジュールを制御する。

$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

--- ファイルを新規作成し、以下を追記 ---
blacklist spi-bcm2708
blacklist i2c-bcm2708
$ sudo chmod 644 /etc/modprobe.d/raspi-blacklist.conf

再起動

$ sudo reboot

再度、vcgencmdで、カメラモジュールの接続状態を確認

$ vcgencmd get_camera
supported=1 detected=1

認識するはず。これで認識しないとなると、spi-bcm2708、i2c-bcm2708モジュールがまだ読み込まれている状態か(lsmodで確認)、ケーブルが死んでるなどで、本当にカメラモジュールが接続されていないかのどちらか。

detectedが1になっていれば、カメラモジュールが使えるはずなので、

$ raspistill -d

$ raspivid -o -t 3000 hoge.h264

などで、確認してみるといい。

SPIやI2Cは使えなくなる

上記手順で、spi/i2c-bcm12708モジュールをロードしなくしているため、SPI接続やI2C接続の周辺機器等は使えなくなります。 SPI/I2Cといえば、今月の日経Linuxに載っていたような、AdafruitだったりSainSmartだったり、ST7735など液晶ディスプレイは使えなくなります。 この記事を書いている現時点では、両方使用することは出来ません。

(というかDSI接続のディスプレイはいつになったら…)

おわりに

ぶっちゃけ、今回の手順、僕自身まだちゃんと理解してません。なんとなくはわかるんだけど、ca-certificatesがなんなのかとか、その辺り後でちゃんと調べて覚えておく。とりあえず動かしたかったので。

あと、今回、何故ラズパイ向けのLinuxカーネルがこんな状態になってしまったのかが、よくわからない。凡ミスでした、バグでした、となれば、「なんだ、いつものことか。そして相変わらず修正早ぇwwwArch最高やwwww」ってなるんだけど、SPI/I2CとCSIコネクタのカメラモジュールが競合するというのが解せない。カメラモジュール自体がCSIコネクタのSPI接続ってこと?I2CではフルHDサイズで30fpsのデータを転送することは無理だよなぁ…。(この辺まだあまり詳しくないので、分かる方いたら教えて下さい…)

でも、よくよく考えてみると、ST7735をラズパイのディスプレイとして使うためにビルドしたカーネルって、確かカメラモジュール使えなかったような気がするけど、元々そういう仕様で、今回modprobeにblacklistとなるものが入ってなかったから、カメラモジュールが使えない(SPI/I2Cは使える)っていう 状態になったのかなぁ…?(うろ覚え)

まとまりの無い記事で申し訳ないです。

f:id:aburos:20140818223834j:plain

Raspberry Pi Model B+にArch Linux ARM(カーネル3.12.26-1-ARCH)をインストール

Raspberry Pi Type B+買いました

連休に入りました。

連休に入って、こっそりシコシコとアレをナニしてるわけなんですが、進捗ダメですと思われないために、ここらで進捗出しておこうかと…。

Raspberry Pi Type B+買いました。

旧TypeBとの違いは、そこら中で取り上げられているのですが、あまり知られていなく、ものすごく地味にムカつく違いだけ、ちょっと紹介しておきます。

Type Bの場合、M3ネジが通るので、PC自作er御用達なマザボに使うネジ類が使えたわけで、Type B+の場合、何故かM3ネジが通らず、恐らく、M2.6になっている。なんでそんな微妙なサイズにしたのか…。

結局、穴をヤスリで広げてM3ネジ通すようにしたんだけど、M3ネジを止めてみると、microUSBコネクタと干渉したり、チップ抵抗に接触したりと、割と地味にファッキンな仕様になっていました。

まぁそれはさておき、、これを機に、Archをインストールすることになって、Arch ARMを覗くと、またセットアップ方法が変わってたので、自分の防備録として、残しておきたいと思った。

毎回恒例、公式リンク。一番確実なので、以下を参考に。(日本語ページは若干古いので注意)

http://archlinuxarm.org/platforms/armv6/raspberry-pi

https://wiki.archlinux.org/index.php/Raspberry_Pi

前提環境

マシン: Macbook Air 2011 Mid

OS: Arch Linux(3.15.7-1-ARCH)

SDカードの作成(PC側)

作業用ディレクトリ作成

$ mkdir raspberrypi
$ cd raspberrypi
$ mkdir boot
$ mkdir root

最新のArchARMを取得

$ wget http://archlinuxarm.org/os/ArchLinuxARM-rpi-latest.tar.gz

SDカードの場所を確認

$ lsblk

SDカードの準備(以降rootユーザ) bootパーティションは100MBのFAT32形式、rootパーティションは残り容量でLinux File System形式でパーティションを作成。

$ su
# fdisk /dev/sdc

Welcome to fdisk (util-linux 2.24.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

Command (m for help): p
Disk /dev/sdc: 29.2 GiB, 31322013696 bytes, 61175808 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x9686be27


Command (m for help): o

Created a new DOS disklabel with disk identifier 0x07befaf8.

Command (m for help): n

Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-61175807, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-61175807, default 61175807): +100M

Created a new partition 1 of type 'Linux' and of size 100 MiB.

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): c
If you have created or modified any DOS 6.x partitions, please see the fdisk documentation for additional information.
Changed type of partition 'Linux' to 'W95 FAT32 (LBA)'.

Command (m for help): n

Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): 

Using default response p.
Partition number (2-4, default 2): 
First sector (206848-61175807, default 206848): 
Last sector, +sectors or +size{K,M,G,T,P} (206848-61175807, default 61175807): 

Created a new partition 2 of type 'Linux' and of size 29.1 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

SDカードのフォーマット bootパーティションは、FAT形式で、rootパーティションは、F2FSでフォーマットした。 ※ mkfs.f2fsは pacman -S f2fs-toolsでインストールすることで使えるようになる。

# mkfs.vfat /dev/sdc1
# mkfs.f2fs /dev/sdc2

SDカードをマウントし、ダウンロードしたArchARMをマウント先に展開

# mount /dev/sdc1 boot
# mount /dev/sdc2 root
# tar -xf ArchLinuxARM-rpi-latest.tar.gz -C root
# sync
# mv root/boot/* boot

rootfstypeをF2FSに変更し、Raspberry Piからrootパーティションを読み込めるようにする

# vi boot/cmdline.txt

変更前
elinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=noop rootwait


変更後
elinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=f2fs elevator=noop rootwait

SDカードをマウント解除

# umount boot root

作成したSDカードをRaspberry Piに挿し、電源を入れ、Raspberry PiSSHでログイン

$ ssh root@192.168.0.6
password: root

rootパスワードを変更

# passwd

なぜか、デフォルトのGeo-IPのミラーが繋がらなかったので、USミラーを選択した

# vi /etc/pacman.d/mirrorlist

毎回恒例

# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# echo [hostname] > /etc/hostname
# vi /etc/hosts

ネットワーク接続を、有線LANで、静的IPを設定

# cd /etc/netctl
# cp examples/ethernet-static my_network
# vi my_network
Description='A basic static ethernet connection'
Interface=eth0
Connection=ethernet
IP=static
Address=('192.168.0.11/24'')
#Routes=('192.168.0.0/24 via 192.168.1.2')
Gateway='192.168.0.1'
DNS=('192.168.0.1')

## For IPv6 autoconfiguration
#IP6=stateless

## For IPv6 static address configuration
#IP6=static
#Address6=('1234:5678:9abc:def::1/64' '1234:3456::123/96')
#Routes6=('abcd::1234')
#Gateway6='1234:0:123::abcd'

※後から分かったことで、本バージョンから、デフォルトのDHCP接続が、netctl-ifplud@eth0.serviceではなくなっている様子。どこで設定してあるか後で調べて切っておく。

# systemctl disable netctl-ifplugd@eth0.service
# systemctl enable netctl-ifplugd@my_network.service
# netctl enable my_network

設定ミスってて、後から繋がらないってなると泣きそうになるので、一旦ここで再起動

# reboot

設定したIPで、再度接続

$ ssh root@192.168.0.11

Raspberry Pi用に、パッケージを最新化し、必要なパッケージをインストール。

※ここは、任意。とりあえずデスクトップな環境であれば、以下の通り。

# pacman -Syu
# pacman -S sudo alsa-utils alsa-firmware alsa-lib alsa-plugins xf86-video-fbdev xf86-input-synaptics raspberrypi-firmware raspberrypi-firmware-tools git

ユーザを作成

# useradd -m -g users -G wheel -s /bin/bash morinezumiiii
# passwd morinezumiiii
# gpasswd -a morinezumiiii audio
# gpasswd -a morinezumiiii video
# gpasswd -a morinezumiiii uucp
# gpasswd -a morinezumiiii tty

sudoerファイルを編集

# visudo

以降、通常ユーザで。

# exit
$ ssh morinezumiiii@192.168.0.11

Raspberry Piなアプリケーション(raspividとか)のPATHを通す

$ vi ~/.bash_profile
export PATH=$PATH:/opt/vc/bin

$ source ~/.bash_profile
$ vcgencmd version
Jul 23 2014 21:12:29 
Copyright (c) 2012 Broadcom
version 174cdd77563b98023955a94cb8d072d9c7095d6f (clean) (release)

ちなみに、ここ2ヶ月くらいで、ラズパイに使ったSDカード3枚くらいぶっとびました。

そもそも書き込み回数1万回程度って書いてあるSDカードにOS入れて動かすって事自体が、「んー…」な感じなんだけど、とりあえず、ファイルシステムExt4からF2FSに、スワップ領域を無くし、ログ書き込み先をtmpfsにすることで、ほんの少しでも、延命できるかなと、淡い期待を抱いてる。

ゆくゆくは、ちゃんとramfsにするなり、ストレージは別で用意するなりしたいなぁと思う。

以上、お疲れ様でした。

$ exit

Raspberry PiのSDカード死亡

京都出張

京野菜すげぇうまかった

FDDケーブルで簡易ブレイクアウトケーブル

ホテルに戻ってはんだ付け。

とりあえず、こないだ買った400円のFDDケーブルを切断してRaspberry PiのGPIOに挿せるようにしたい。どうせ400円だし、合うかどうかわからないけど、とりあえず買ってみたら上手く挿さった。

ただ、ラズパイのGPIOが28ピンに対して、FDD用のコネクタは36ピンあるので、8ピン余る。 でも挿せたから良いんだ。

よくよく調べてみると、ラズパイ用GPIOコネクタケーブル、300円くらいだった。 良いんだ良いんだ。

で、挿せるの分かったから適当に手元にあるジャンパケーブルをはんだづけした。

f:id:aburos:20140603192123j:plain

ST7735を接続

ラズパイのGPIOってArduinoと違ってオスなので、ブレイクアウトケーブル作ってブレットボードで簡単に繋げれるようにしたかったのでそうした。

とりあえず、ラズパイでST7735をLinuxで認識させるために、有志で何人かが作ったRaspberry PiLinuxカーネルを落としてきてカーネルリビルド。

ラズパイ上でやったら8時間以上かかった。 クロスコンパイルした方が絶対良いと後で後悔した。 ※この作業自体は先週くらいにやった

やり方はいくつかあるので、それを参考に

http://gerfficient.com/2014/02/12/connecting-1-8-tft-lcd-to-raspberry-pi/

http://www.whence.com/rpi/

カーネルリビルド後、再起動すると/dev/fb1が追加されてる。 で、画像とか動画を表示させるのに出力先を/dev/fb1と指定するとST7735に表示できる。

f:id:aburos:20140603192144j:plain

というかそろそろ本家のRaspberry PiLinuxカーネルにマージされて欲しい。

もしくはDSI接続のディスプレイはよ

SDカード死亡

で、何度か触ってたらなんかRaspbianが怪しいメッセージを出すようになってきた。

Ext4ファイルシステムリカバリを始めますみたいな。

で、

こうなって、

f:id:aburos:20140603192126j:plain

こうなった。

f:id:aburos:20140603192122j:plain

SDカードが死んだ模様。

エラーメッセージ等をググってみると、割りとそれで苦しんでる人達がチラホラ。

でも、冷静に考えてみたら、SDカードにファイルシステム作ってそこでLinux動かすとか確かにそんなSDカードいじめしたら壊れて当然な気がした。

ましてやExt4とか。

壊してしまったものはしょうがないので、次からはExt4とかじゃなくJFFS2とかF2FSで組んでみたいと思う。

フラッシュメモリにやさしいファイルシステム

ついでに、ラズパイの扱い方にも慣れてきたので、慣れたArchARMで再度挑戦する。