Home > Latest topics

Latest topics 近況報告

たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。

萌えるふぉくす子さんだば子本制作プロジェクトの動向はもえじら組ブログで。

宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

Page 2/244: 1 2 3 4 5 6 7 8 9 »

Raspberry Pi 2にUbuntu(Lubuntu)を入れて、USB接続のHDDと組み合わせてファイルサーバーとして運用する - Jul 04, 2015

先日HDDを交換したばかりだった自宅サーバ機が、起動しなくなった。 起動してもすぐに電源が切れるという状態で、使い物にならない。

HDD以外のハードウェアは少なくとも5~6年は経過しているので、寿命と思って新調する事にした。 それに伴って、GitHubのService Hookなどの処理はVPSあたりに移動して、自宅に置くのは完全にストレージ専用の物にする事にした。

で、どうするかなんだけど、せっかくついこの間買ったばかりのHDDなのだから、ここが故障したわけでないのなら流用したい。 でも実質的にファイルサーバーとしてしか使わないんだから、そのためだけにPCを導入するというのも何だか勿体ない気がする。 あれ、そういえばラズパイって5000円くらいで買えてUSBで色々繋げられてLinuxが動くんだよね? じゃあこれに既存のHDD繋いでファイルサーバーにしたらいいんじゃね?

というわけで、漫画を連載させて頂いている日経Linux誌でずっと前から特集や連載がいっぱい載ってるにも関わらず完全にスルーしていたRaspberry Piを、今更ながら自分でも導入してみることにしました。

事前に仕入れた&知ってた情報によると、Raspberry PiというのはARMプロセッサを搭載して1ボードで完結してるLinuxマシンで、DebianベースのディストリビューションのRaspbianを使うのが通常の使い方らしいけど、今出回ってるRaspberry Pi 2 Model BではUbuntuの動作実績もあると。 であれば、今まで運用してたサーバ機(Ubuntu)と似た感じで使えるのではないか? という予想ができる。 もしうまくいかなくても、値段が値段だから大して痛くはないだろう。 というのが、導入を後押しした感じです。

必要な物を買い揃える

必要な物は全部Amazonで買えた。

まず、何はなくとも本体。Ubuntuの動作実績があるのはRaspberry Pi 2 Model Bとのことなので、他と間違えないように気をつけないといけない。 Amazonで買える物は裸の基盤のままではなくケース付きなので、見苦しくなくて良いですね。

先日買ったHDDを外付けするための、ケースとアダプター。 SATAをUSB接続に変換して、HDD自体はほぼ裸で置くという感じ。

グリーンハウス 3.5インチHD用シリコンケース ブラック GH-CA-HD35K
グリーンハウス (2007-06-20)
売り上げランキング: 3,546

HDMIケーブル。 今までのサーバ機はD-sub 15pinでテレビに繋いでたけど、Raspberry Piには映像出力はHDMI端子しかないので。

マウスとキーボードは手元にある物を使った。 Raspberry Pi本体にはUSB端子が4つあるので、外付けHDDに2つ使って、キーボードとマウスで1つずつで埋まった。 (多分普段はSSHで操作するから、キーボードとマウスは必要な時だけ挿せばいいんだけど。)

Raspberry Pi本体にはmicroSDのスロットがあって、これがシステム領域のストレージになるんだけど、たまたま手元に32GBの物があったのでそれを使う事にした。 持ってないなら、これも買っておかないといけない。 後述するUbuntuのイメージを使うなら4GB以上の大きさは必要だそうです。

OSの基本的なセットアップ

このあたりの手順は、他の用途でも共通して使えそうな気がするので、ここだけ読んでも有用かも。

起動イメージの用意

有志の人が作った起動イメージがUbuntu Wikiで公開されているので、ダウンロードしてきて、Win32 Disk ImagerでmicroSDに書き込んだ。

書き込み完了した物をRaspberry Piに挿して電源を繋ぐと、ユーザ名がubuntu、パスワードがubuntuとなっているアカウントが1つだけある状態のUbuntuが(デスクトップ環境無しで)起動する。 しばらくはこれで作業することになる。

ちなみに、何かやらかして起動不可能になってしまった時(/etc/fstabにミスがあった、とか)は、最悪の場合ここからやり直すことになる。 僕は2回やり直しました。

リモート操作の準備

起動できたら、SSHで接続できるようにしておくと後が楽。 上記のイメージにはOpenSSHサーバが入っていないので、自分でインストールする必要がある。

$ sudo apt-get update
$ sudo apt-get install ssh

そうしたら、DHCPで割り当てられたこのサーバ自身のIPアドレスを調べておく。

$ ifconfig

DHCPで割り当てられたIPアドレスを確認したら、作業用の別環境から接続する。 そうすれば、その作業環境でインターネットを検索しつつ、紹介されていたコマンドラインをコピペで実行するのが容易になる。

ディスク領域の拡大

前述のUbuntu Wikiのページに書かれている通りの手順で、パーティションを修正してmicroSDの全領域を使えるようにする。

$ sudo fdisk /dev/mmcblk0

2番目のパーティションを削除して、領域を作り直し(d, Enter, 2, Enter, n, Enter, p, Enter, 2, Enter, Enter, Enter, w, Enter)、 パーティションを編集したら、再起動する。

$ sudo reboot now

2番目のパーティションを最大サイズに拡張する。

$ sudo resize2fs /dev/mmcblk0p2

既定のエディタの変更

ここから先、ターミナルの操作でファイルを編集することが多いんだけど、nanoの操作よりもvimの操作の方が自分は慣れているので、vimをデフォルトのエディタにした。 ついでに、SSH越しの接続を中断したり複数タブを開いたりという感じの事ができるように、tmuxも入れた。

$ sudo apt-get install vim tmux
$ sudo update-alternatives --config editor

日本語で使えるデスクトップ環境の導入

先のイメージで起動した環境は、必要最小限のソフトウェアしか入っておらず(OpenSSHサーバすら入ってない)、GUIで操作したかったら必要な物を別途入れないといけない。 先程、microSDのパーティションを編集して使える領域を広げたのは、それが理由。

ここから先は、技評のサイトのいくやさんの記事を参考に、日本語環境用の設定とデスクトップ環境のインストールを行う。

まず、既定の状態で設定されているファイルのダウンロード元は海外のサーバで、必要なファイル群のダウンロードにメチャクチャ時間がかかってしまうので、日本のミラーサーバからファイルをダウンロードするように変更する。 (自分が最初にやった時は、既定の状態だとファイルのダウンロードだけで5倍くらいは時間がかかった気がする)

$ sudo vim /etc/apt/sources.list

ファイルの内容を全削除して、以下のように書き換えてしまう。

deb http://jp.archive.ubuntu.com/ports/ trusty main restricted universe multiverse
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse

deb http://jp.archive.ubuntu.com/ports/ trusty-security main restricted universe multiverse
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://jp.archive.ubuntu.com/ports/ trusty-updates restricted main multiverse universe
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-updates restricted main multiverse universe

deb http://jp.archive.ubuntu.com/ports/ trusty-backports restricted main multiverse universe
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-backports restricted main multiverse universe

そうしたら、早いとこ安全な状態にするために、インストール済みのパッケージを更新しておく。

$ sudo apt-get update && sudo apt-get upgrade

一息ついたら、Lubuntuのデスクトップ環境(LXDEを使っている。XfceのXubuntuより軽いそうなので。)をインストールする。

$ sudo apt-get install lubuntu-desktop xserver-xorg-video-fbturbo fonts-takao language-pack-ja language-pack-gnome-ja ibus-mozc dphys-swapfile

デスクトップ環境が入ったら、プロプライエタリのドライバ用の設定を作る。

$ sudo vim /etc/X11/xorg.conf

ファイルが無ければ新規に作成する。内容はいずれにせよ以下の通りにする。

Section "Device"
    Identifier "Raspberry Pi FBDEV"
    Driver "fbturbo"
    Option "fbdev" "/dev/fb0"
    Option "SwapbuffersWait" "true"
EndSection

日本語を既定の言語にする。

$ echo "Asia/Tokyo" | sudo tee /etc/timezone
$ sudo dpkg-reconfigure -f noninteractive tzdata
$ sudo locale-gen ja_JP.UTF-8
$ sudo dpkg-reconfigure -f noninteractive locales
$ echo "LANG=ja_JP.UTF-8" | sudo tee /etc/default/locale

日本語キーボードのレイアウトをデフォルトにする。

$ sudo vim /etc/default/keyboard

設定ファイルが開かれるので、以下のように変更する。

- XKBLAYOUT="us"
+ XKBLAYOUT="jp"

終わったら、ファイルを保存して、設定を更新する。

$ sudo dpkg-reconfigure -f noninteractive keyboard-configuration

普段使いのユーザを作る

デスクトップ左下のボタンから開けるメニューを辿ってユーザーアカウントの管理画面を開き、普段使いの名前でユーザーを作る。 僕の場合はpiroで作った。

ユーザの作成後は、詳細設定で適切な権限を与えた上で、グループの編集でsudosambashareグループに参加させるsudoグループに入れるのを忘れると後で詰むので、これは絶対に忘れないように。

sudoできるようになり、GUIから特権を必要とする操作をしようとしたらパスワードの入力を求められる事を確認できたら、初期ユーザだったubuntuユーザは削除しておく。

このあたりで、鍵認証を使っているのであれば公開鍵の登録をやっておく。 その後、sshdの設定を変えてパスワード認証を禁止しておく。

$ sudo vim /etc/ssh/sshd_config

以下の点だけ編集すれば、とりあえずはOK。

PermitRootLogin no # sshから直接rootでログインするのを禁止
PubkeyAuthentication yes # 鍵認証を有効化
PasswordAuthentication no # パスワード認証を無効化

設定の変更後は、デーモンを再起動しておくこと。

$ sudo service sshd restart

固定IPにする

サーバ機として使うには、DHCPでIPアドレスが頻繁に変わられてしまうと不便なので、固定IPにしておく。

$ sudo vim /etc/network/interfaces

後半のeth0の自動設定を定義している2行をコメントアウトし、以下の要領で設定を追加する(ネットワークが192.168.0.0であると仮定)。

auto eth0
iface eth0 inet static
address 192.168.0.100
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
dns-nameservers 192.168.0.1

ネットワークの新しい設定は、再起動したらそれ以後は反映される。

$ sudo reboot now

ファイルサーバにするための設定

USB接続のHDDを常に自動マウントする

USB接続のHDDは、デスクトップ環境にログインするとマウントされるんだけど、ログインしてなくてもマウントされてて欲しい。ユーザのホームみたいにそれなりに多くのファイルが置かれる物は、外付けHDDの方に置いておきたいし。

まずはマウントポイントを作る。 バックアップの保存先のディスクと、普段使う方のディスクとで、2箇所マウントしたので2つ用意した。

$ sudo mkdir -p /mnt/main-external
$ sudo mkdir -p /mnt/backup-external

次に、外付けHDDを繋いで、各パーティションのUUIDを調べる。

$ sudo blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="AB3E-B34D" TYPE="vfat" 
/dev/mmcblk0p2: UUID="3aee2e0f-21f9-43c8-a4d3-e864f5d72d37" TYPE="ext4" 
/dev/sda1: LABEL="backup-external" UUID="2fdef27e-8ad9-4f44-a46f-5799e5143489" TYPE="ext4" 
/dev/sdb2: UUID="bc802910-f850-4685-90a4-9034d5d2d931" TYPE="ext4" 
/dev/sdb3: UUID="d710499f-1ab6-4c63-98b7-c06bc08d501a" TYPE="swap"

/dev/sda1がバックアップの保存先として使っていたディスクで、/dev/sdb2は旧マシンのシステムのrootになってたパーティション。 ここで表示されたUUIDを参照しつつ、/etc/fstabに自動マウント用の設定を書く。

$ sudo vim /etc/fstab

追記する内容は以下の要領。

UUID=bc802910-f850-4685-90a4-9034d5d2d931 /mnt/main-external ext4 defaults 0 0
UUID=2fdef27e-8ad9-4f44-a46f-5799e5143489 /mnt/backup-external ext4 defaults 0 0

指定が正しいか、実際にマウントして確認する。

$ sudo mount -a

僕はここでちゃんとマウントできない状態のまま再起動したせいで、起動中にエラーで止まってしまって、リカバリが効かなくてイメージの書き込みからやり直しになってしまった。

スワップ領域の割り当て変更

ここまでの手順の中で、ディスク上の専用パーティションではなく、ファイルをスワップ領域に使うようになっている。

が、microSDに頻繁に読み書きが行われるのはなんとなく寿命を縮めそうで怖い。 実測値的には半永久的に使えるレベルらしいので、今時こんな事怖がるのはおじいちゃんもいいとこなのかも知れないけど。

そういう気持ちの問題と、あとHDDの方にスワップ領域がそのまま残ってて、使わないのも勿体ないかなと思って、HDD上にあるスワップ領域を使うように設定し直すことにした。

$ sudo vim /etc/fstab

UUIDを参照しつつ、以下の内容を追記する。

UUID=d710499f-1ab6-4c63-98b7-c06bc08d501a swap swap defaults 0 0

ファイルへのスワップ領域の割り当てを無効にする。

$ sudo dphys-swapfile swapoff
$ sudo apt-get remove dphys-swapfile

ファイルの所有権の変更

旧環境は自分で普通にインストールしたUbuntuだったんだけど、Ubuntuのインストールウィザードの中で作成した初期ユーザはuidが1000になる。 しかし、上記イメージからセットアップしたUbuntuではuid 1000ubuntuという名前のユーザに使われていて、新たに作成した普段使い用のユーザはuid 1001となる。 なので、旧マシンのHDDをそのまま使いまわす場合、所有者がズレて認識されてしまう。 これを修正するために、以下の要領で所有者を再設定する。

$ wrongr=1000
$ correct=piro
$ sudo find /mnt/main-external -user $wrong | while read file; do echo "$file"; sudo chown $correct:$correct "$file"; done

xargsとか使った方が高速なんだろうけど、ミスしてた時に途中で止めやすいかと思って、この時はこうした。

homeその他の置き換え

microSDの上に色々ファイルを増やしていくと、すぐにディスクが一杯になるのが目に見えている。 なので、基本的にファイルの保存先の実態は外付けのHDDとしておいて、適宜シンボリックリンクを作って使う、というスタイルを取ることにした。

$ for dir in "/home/piro" "/opt" "/var/shared"; do if [ -d $dir ]; then sudo mv $dir ${dir}_; fi; sudo ln -s /mnt/main-external$dir $dir; done

ホームも実態を外付けHDDに置いておく……というか元のシステムでホームにしていたディレクトリをそのまま使うようにするわけだけど、前項で述べた通り外付けHDD(=旧マシンで使っていたディスク)のファイルは所有者の情報がズレているので、前項の手順で所有者情報を直しておくのを忘れないように。

ただ、さすがにrootのホームまで シンボリックリンクにするのは怖かったので、こちらはファイルをコピーするだけに留めた。

$ sudo su
# cp -r /mnt/main-external/root/* /root/

sambaのファイル共有設定

ファイル共有のために、Sambaをインストールする。

$ sudo apt-get install samba

Sambaユーザーを作成して、パスワードを設定しておく。

$ sudo smbpasswd -a piro

次に、共有したいフォルダの設定を行う。 普通のUbuntuだとGUIから設定できるんだけど、Lubuntuのデスクトップ環境だとそれができないようだったので、自分でsmb.confを編集した。

$ sudo vim /etc/samba/smb.conf

共有したいフォルダごとのセクションを以下の要領で書いた。

[shared]
path = /mnt/main-external/var/shared
guest ok = no
read only = no
writable = yes
create mask = 0666
directory mask = 0777
browseable = yes
valid users = @sambashare

[piro-shared]
path = /mnt/main-external/home/piro/shared
guest ok = no
read only = no
writable = yes
create mask = 0600
directory mask = 0700
browseable = yes
valid users = piro

僕はシンボリックリンクを多用するので、便利なように、[global]セクションに以下を追記してシンボリックリンクを辿るようにした。

wide links = yes
unix extensions  = no

バックアップの体制を整える

旧環境では/backupにマウントした外付けHDDにファイルのバックアップを保存するようにしてたので、新しい環境でも同じ事をやることにした。 まずは、Ubuntuの「バックアップ」の実態であるDeja Dupをインストールする。

$ sudo apt-get deja-dup

これはまだエントリを書いてなかったんだけど、Deja Dupを使ってシステム全体や複数ユーザのホームをまとめてバックアップするために、僕はrootでDeja Dupを起動していた。

$ gksu deja-dup-preference

ここまでの過程で旧環境から/root以下の内容を引き継いでいるので、きちんとファイルをコピーできていれば、バックアップ先の指定などがそのまま読み込まれる。 とりあえずテストとして、バックアップを実行してみた。 バックアップ対象(ホームや共有ディレクトリ)が今の環境ではシンボリックリンクになっているので、ちゃんとバックアップできるか心配だったんだけど、処理が進行中の時のステータス表示を見てみた限りでは、シンボリックリンクの先を辿ってバックアップしてくれているようだった。

なんやかやで、Deja Dupではなくその後ろにいるduplicityを使うようにしようと実験中です。

おわりに

ということで、Raspberry Piと旧マシンから引き継いだHDDを組み合わせてファイル共有サーバを立ててみました。

本物のNAS製品に比べると性能だったり使い勝手だったりの面でかなわないとは思うんだけど、普通のPCをサーバにするのに比べれば場所を取らないし静か(なにせRaspberry Piには電源やCPUクーラーのようなファンが無い)だし、クラウド上のVPSの上にあるデータの自動バックアップなんかもcronjobでできるし、チャレンジがてら皆さんもお試しになってみてはいかがでしょうか。

tiarraをサービスとして登録する - May 06, 2015

自宅サーバのHDDが死んで、新しいHDDに入れ換えてバックアップから各種データを復元したんだけど、tiarra(IRCプロキシ)をデーモンとして動作させるための設定が吹っ飛んでしまったので、Ubuntu 15.04で使える方法を調べて再設定した。

tiarraのインストール

Tiarra : Archiveからファイルをダウンロードして設置するだけ。

設置場所は、別ユーザで起動することを考慮して/opt/以下にした。

$ wget http://www.clovery.jp/tiarra/archive/2010/02/tiarra-20100212.tar.bz2
$ tar xpvf tiarra-20100212.tar.bz2
$ sudo mkdir -p /opt/
$ sudo mv tiarra-20100212 /opt/tiarra
$ sudo chown -R root:root /opt/tiarra

設定ファイルの用意

新規導入の場合は他の方の設定の仕方などを参考にしながら設定ファイルを用意する。僕の場合は幸い「~/local/conf/tiarra.conf」にファイルを置いていてバックアップ対象になっており、無事復元できていたので、このステップは省略できた。

動作確認

一回コンソール上から普通に起動してみて、ちゃんと動く事を確認する。

$ /opt/tiarra/tiarra --config=/home/piro/local/conf/tiarra.conf

IRCクライアントから接続できたら、設定はちゃんとできているということ。確認ができたらCtrl-Cで終了する。

サービス起動スクリプトの作成

tig.rbとTiarraをstart-stop-daemonで動かすのスクリプトをちょっと変更して、「/etc/init.d/tiarra-piro」の位置に置いた。

サービス名等は、別ユーザでも動かすことを考慮して、自分のユーザ名を入れた。別ユーザで実行する時はまた別ユーザ用のサービス起動スクリプトを登録するということで。

#!/bin/sh
# /etc/init.d/tiarra-piro

USER=piro
NAME=tiarra-$USER
PROG=/opt/tiarra/tiarra
CONFIG=/home/$USER/local/conf/tiarra.conf
PIDFILE=/var/run/$NAME.pid

start() {
  echo -n "Starting: $NAME"
  start-stop-daemon \
    --start \
    --pidfile $PIDFILE \
    --make-pidfile \
    --background \
    --exec $PROG \
    --user $USER \
    --chuid $USER \
    --chdir /home/$USER \
    -- \
    --config=$CONFIG
  return $?
}

stop() {
  echo -n "Stopping: $NAME"
  start-stop-daemon \
    --stop \
    --oknodo \
    --pidfile $PIDFILE
  return $?
}

restart() {
  stop
  start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

ファイルを置いたら、実行権限を付与してサービスとして登録して起動する。

$ sudo chmod +x /etc/init.d/tiarra-piro
$ sudo update-rc.d tiarra-piro defaults
$ sudo service tiarra-piro start

どうやらこれで動くようになった模様。

Nexus 7とハードウェアキーボードの組み合わせを実用する - Jan 23, 2013

Nexus 7ポメラのように使ったらテキストの生産が妙に捗るようになったので、一部始終をメモしておこうと思います。

Nexus 7は昨年買ったんだけど、PerfectViewerで最強の自炊漫画ビューワーとして使ったり、Firefox for Android入れてデスクトップ環境とタブを共有して布団の中でダラダラとWebブラウズしたり、QuickPicで結婚式の時の写真を親族に見せたりと、基本的には情報を閲覧するだけの端末として使ってた。

というのも、当初は、これで出先(実家とか)でもノートPC代わりに使えないか?と思ってIRCクライアントとかSSHクライアントとかも試してみてたんだけど、文字入力がやりにくすぎて(フリック入力では速度が出ず、ローマ字入力でもキーピッチが小さすぎ&キー同士の区切りが感触で分からない&タイプした感覚が無い)、これは人差し指でポチポチ入力できる範囲以上のことはやるもんじゃない……と、早々に挫折してしまったわけです。

でもリビングでケータイ大喜利とか見てる時に、懲りずに「ちょっと次の号のシス管系女子の作業でも進めとこうかな……」と思ってみたりして(プロットを作ってコマ割り・セリフ割り・ページ割りを考える所まではテキストベースでやってます)、そうするとやっぱりストレスフルすぎたので、カッとなってMicrosoftのWedge Mobile Keyboard(U6R-00022)を買ってきた。(あとから同じハードウェアのパッケージ違いの法人向けモデルでちょっと安いやつ(U7R-00022)があるということを知って涙目になったけど、もう後の祭りだった……)

まともに使えるようになるまでにやった事あれこれ。

  • ハードウェアキーボードの刻印は日本語配列なのに記号を入力しようとすると英語配列として認識されてしまう。これは日本語106/109キーボードレイアウトというアプリをインストールして説明の通りに設定すると、無事に刻印通りの記号が入力されるようになった。
    • 後述のGoogle日本語入力が有効な状態だとこれを入れなくても日本語キーボードレイアウトとして動作するようになるという話も見かけたけど、Google日本語入力以外に切り替える事も無くはないので……
  • 日本語入力はiWnn(既定のIME)、ShimejiATOKお試し版Google日本語入力を一通り試して、Google日本語入力に落ち着いた。
    • ShimejiはハードウェアキーボードからのON/OFF切り替えができないようだったので論外。それまでは常用だったのに……
    • iWnnは当初は順調だったんだけど、上記のキーボードレイアウトをインストールしたところ、iWnnがONの時だけハードウェアキーボードの『「』を押したら『@』に、『」』が『「』に、『\』が『」』になる……という具合になぜかこの3つのキーだけズレて認識されるようになってしまった。
    • ATOKはハードウェアキーボードとの組み合わせではFirefoxのコンテンツ領域で全く動作しなかった。
    • Google日本語入力は、登場の背景とか思想とかがあんまり好きじゃないのでできれば使いたくなかった(だからほんとはATOKが一番使いたかった)んだけど、試した中ではハードウェアキーボードとFirefoxのコンテンツ領域の組み合わせで動作して且つキーレイアウトのズレも発生しないという唯一まともに動作する選択肢だったので、しょうがないからこれにした。
  • Firefoxが起動してる状態でハードウェアキーボードの電源をON/OFFしたり、Firefoxがアクティブな状態でキーボード上のESCキーを押したりすると、問答無用でFirefoxがクラッシュする(最後に閉じたタブ、の情報も失われてしまう)。なので、Firefox上では相当気をつけて使わないといけない(というか、恐ろしいから今もテキストエディタ上で入力して、後からFirefoxにコピペしてる)。

で、以下のように運用してる。

  • テキストファイルの編集はJota Text Editorを使ってる。設定の「入力設定」で「IMEの前にCTRLキーを処理する」にチェックを入れておかないと、Google日本語入力が有効になってる時にCtrl-Sなどのショートカットが機能しなかった。より高機能な有償版があるみたいだけど、とりあえずこれで今のところは使えてる。
  • ファイルはDropboxでデスクトップ環境と同期してる。Dropboxに置いてあるテキストファイルはJota Text Editorで直接開けて、上書き保存したら勝手にアップロードしてくれる。

このエントリのようにURIをたくさん集めてきてコピペするような使い方は正直きついけど、頭の中にある内容をひたすら入力してテキストファイルにするだけだったら、普段のデスクトップ環境でやってる時よりむしろ捗ってるくらいで、自分でびっくりしてる。ポメラのレビューで「テキスト入力以外のことができないから、集中して作業できる」みたいな話を見たことがある気がするけど、それと同じ理由かもしれない。Nexus 7がそうなのかAndroidがそうなのかは知らない(僕はNexus 7がAndroidの初常用体験なので)けど、タスクスイッチがいちいちめんどくさくて他のことに気が取られないせいで、結果的にポメラと同じような事になってるのかも……と思ってる。

しかもポメラと違って、テキスト入力してない時も漫画ビューワーやら何やらとして使えるわけで、無駄にならない。これは嬉しい。布団の中で横になってダラダラ見る時とか、キーボードはむしろいらないし。

ハードウェアキーボードの選択肢は、Nexus 7用という観点ではminisuitのやつも捨て難かったんだけど、小さかったし、英語配列なのが致命的に無理だと思って避けてしまった。Wedge Mobile Keyboardは日本語配列でキーピッチも大きく、タイピングしてる感じも悪くない(僕はMicrosoftのハードウェアには絶大な信頼を置いてます。デスクトップの方のマウスもMicrosoft製)。ポメラのような折り畳みはできないけど、実際長文を入力してるとファンクションキーとカーソルキーの操作以外は全く違和感がないので、大変満足してる。あとはminisuitのやつみたいにNexus 7本体をキーボードの端に引っかけて固定できたりなんかすれば、もう何も言うことは無いんだけどね……(なので、そういうマウントを自作してみようかなぁと思ってる。)

ネットワーク接続が全面的に死んで焦った - Nov 25, 2012

最近、自宅のWindows Vistaマシンをスリープにした後で寝て起きて復帰させようとすると、復帰しないでそのまま落ちて再起動がかかるということが時々あって、いよいよもって寿命感がはんぱないわけだけど、それで復帰した後にネットワークにつながらなくなって非常に焦った。

最初はWireless LANの不調か?と思ったんだけどNexus 7は特に問題なくつながってるので、Windowsマシン側の不具合である可能性が高い。

次に、USB接続のWireless LANアダプタの不調か?と思ったんだけど、挿し直したり別のUSBポートに挿し替えてみたりしてみても結果は変わらず。

で、ちゃんと見なきゃダメか……と思って表示されてるメッセージを見てみると、「WLAN AutoConfig」というサービスが起動してないとかなんとか出てる。「コントロールパネル」→「コンピュータの管理」→「サービス」で「WLAN AutoConfig」を探してみると確かに動いてないようだったので「開始」としてみたけど、「ローカルコンピュータのWLAN AutoConfigサービスを開始できません。エラー1747:その認証サービスは認識されません。」と言われてしまってサービスを開始できない。「WLAN AutoConfig その認証サービスは認識されません」で検索したら、自宅のノートPC(Windows7、無線LANで接続)を起動したら、「ネットワークインターフェースを認識できていないせいだという情報が出てきた。けど、デバイスマネージャで見てる限りではWireless LANアダプタは見えている。

とりあえず有線でつないでみるか……と思ってケーブルを引っ張り出してきてルータとつないでみたけど、なんとこれもダメだった。無線がダメでも有線がつながるならまあなんとか乗り切れる……と余裕こいてたけど、完全オフラインとなるとまずい。色々支障がありすぎる。

別の所に原因は無いか?と思って画面をよく見てみると、起動直後にだけ「Windowsサービスに接続できませんでした。」というメッセージがタスクトレイに出てた。クリックすると「System Event Notification Serviceサービスに接続できませんでした。このため、標準ユーザー箱のシステムにログオンできません。管理者ユーザーはシステムイベントログを参照して、このサービスが応答しなかった原因を確認できます。」と出てくる。

管理ツールの「イベント ビューア」を起動してみたら何か分かるか?と思って起動したら、ローカルのイベントサービスが停止してる的なメッセージが出てイベントログを見れない(今から考えてみれば、まさにそういうメッセージが上で出ていたわけだから当たり前なんだけど)。それでまた「サービス」の方を見てみると、「System Event Notification Service」は「開始中」となっていて、開始しようとして途中で固まってる風な感じだった。

今度は「System Event Notification Service 開始中」で検索してみたら、またそれっぽい情報が出てきた他の検索結果を見ても同じような事が書いてあって、管理者権限でコマンドプロンプトを開いて netsh winsock reset と実行する方法が紹介されていた。やってみると再起動を促すメッセージが出てきたので再起動したら、無事有線LANでつながるようになった。Wireless LANアダプタを挿し直したらこっちもつながったので、これでやっと元のWireless LANに戻せた。

起動しなくなるとかネットワークにつながらなくなるとかのトラブルはほんとに焦る。Nexus 7でも携帯電話でもとにかく別口で情報を探せるようになってないと詰んでた。

Unityのランチャーに沢山Firefoxの項目を追加する代わりにサブコマンド?にした - Jul 29, 2012

複数のプロファイル、複数のバージョンを検証用に用意しないといけなくて、簡単に使い分けられるような環境を作る必要があるのです。

  1. Unityのランチャー上にある「Firefox ウェブ・ブラウザ」を右クリックして、「ランチャーに常に表示」のチェックを外す。
  2. /usr/share/applications/firefox-custom.desktopとして以下の内容でファイルを作成する。

    [Desktop Entry]
    Version=1.0
    Name=Firefox Web Browser (custom)
    Name[ja]=Firefox ウェブ・ブラウザ (custom)
    Comment[ja]=ウェブを閲覧します
    GenericName=Web Browser
    GenericName[ja]=ウェブ・ブラウザ
    Exec=firefox %u
    Terminal=false
    X-MultipleArgs=false
    Type=Application
    Icon=firefox
    Categories=GNOME;GTK;Network;WebBrowser;
    MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;x-scheme-handler/chrome;video/webm;application/x-xpinstall;
    StartupWMClass=Firefox
    StartupNotify=true
    X-Ayatana-Desktop-Shortcuts=NewWindow;Sub;ESR;Stable;Beta;Nightly;
    
    
    [NewWindow Shortcut Group]
    Name=Open a New Window
    Name[ja]=新しいウィンドウを開く
    Exec=firefox -new-window
    TargetEnvironment=Unity
    
    
    [Sub Shortcut Group]
    Name=Sub
    Exec=firefox -no-remote -p sub
    TargetEnvironment=Unity
    
    
    [ESR Shortcut Group]
    Name=ESR
    Exec=/home/piro/opt/firefox-esr/firefox -no-remote -p esr
    TargetEnvironment=Unity
    
    
    [Stable Shortcut Group]
    Name=Stable
    Exec=/home/piro/opt/firefox-stable/firefox -no-remote -p stable
    TargetEnvironment=Unity
    
    
    [Beta Shortcut Group]
    Name=Beta
    Exec=/home/piro/opt/firefox-beta/firefox -no-remote -p beta
    TargetEnvironment=Unity
    
    
    [Nightly Shortcut Group]
    Name=Nightly
    Exec=/home/piro/opt/firefox-trunk/firefox -no-remote -p trunk
    TargetEnvironment=Unity
    
  3. ファイルに実行権限を設定する。
  4. Dashホームから「Firefox ウェブ・ブラウザ(custom)」を探して、実行する。
  5. ランチャーに表示されたアイコンを右クリックして「ランチャーに常に表示」にチェックを入れる。

これで、アイコンを右クリックして各プロファイルで起動できるようになった。

ユーザのホーム以下にファイルを作成して複数のアイコンを登録してみたりとか色々試みてたんだけど、自分で付けた名前と表示名が一致しないとか色々動作が怪しくて、結局このような所(グローバルな設定ファイルとして作成)に落ち着いた。

2014年8月21日追記。Ubuntu 14.04LTSで、Thunderbird用の物も作った。

[Desktop Entry]
Encoding=UTF-8
Name=Thunderbird Mail (custom)
Name[ja]=Thunderbird電子メールクライアント (custom)
Comment=Send and receive mail with Thunderbird
Comment[ja]=メールの読み書き
GenericName=Mail Client
GenericName[ja]=電子メールクライアント
Keywords=Email;E-mail;Newsgroup;Feed;RSS
Keywords[ja]=Eメール;イーメール;mail;e-mail;email;メール;電子メール;ニュースグループ;ネットニュース;RSS;フ>ィードリーダー;書く;読む;Mozilla
Exec=thunderbird %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=thunderbird
Categories=Application;Network;Email;
MimeType=x-scheme-handler/mailto;application/x-xpinstall;
StartupNotify=true
Actions=Compose;Contacts;AnotherProfile

[Desktop Action Compose]
Name=Compose New Message
Name[ja]=新しいメッセージの作成
Exec=thunderbird -compose
OnlyShowIn=Messaging Menu;Unity;

[Desktop Action Contacts]
Name=Contacts
Name[ja]=連絡先
Exec=thunderbird -addressbook
OnlyShowIn=Messaging Menu;Unity;

[Desktop Action AnotherProfile]
Name=Start with Another Profile
Exec=thunderbird -no-remote -p sub
OnlyShowIn=Messaging Menu;Unity;

Firefoxの物を作った時と微妙に様式が変わっているようだ。

Ubuntuでのgeditとvimの初期設定 - Jul 23, 2012

自分がGNOME3ベースの環境でgeditを使う時に最低限これだけはやっとくという設定。

  • タブ幅4、自動バックアップなし。
  • フォントはシステムフォントではなくIPAゴシックあたりをダイレクトに指定(これは必要ないか?)
  • シンタックスハイライトで太字にならないようにする。 /usr/share/gtksourceview-3.0/styles/classic.xmlをclassic-nobold.xmlとかなんとかいう名前でコピーして、vimで開いて:%s/ bold="true"//して、スタイルの名前を書き換えて上書き保存して、geditの設定で色のスキームの欄からファイルを選択して一覧に追加して選択する。 ( Gedit の色設定。 - 研究日誌。のやり方に従った)
  • エンコーディング自動判別用の設定を日本語環境向けに変更する。 gsettings set org.gnome.gedit.preferences.encodings auto-detected "['UTF-8','CURRENT','SHIFT_JIS','EUC-JP','ISO-2022-JP','UTF-16']"で、自動判別がまともに動くようになる。 (geditの文字化けを解消する (GNOME3) - 憩いの場のやり方に従った)
  • プラグインを入れる。設置場所は ~/.local/share/gedit/plugins/ 以下(GNOME2の頃に書かれたような古いドキュメントでは ~/.gnome2/gedit/plugins/ 以下に置くように書いてあるけど、GNOME3では .local 以下に置くようになってる)。
    • Regex Search and Replace(正規表現での検索と置換を可能にする): Gedit/Plugins - GNOME Live!の「Regular Expression Plugin」の所からダウンロードできる。

あと、vimの設定も。というか、Ubuntuの方の設定なんだけど。

  • sudo apt-get install vimでインストール。
  • sudo update-alternatives --config editorで設定のリストが出るので「vim.basic」を選択する。

vimを使っているのは、nanoはGNOME標準のキーバインドとも何とも異なるワケ分からない操作体系のようなので、それよりはまだlessとかと操作が共通している部分が多いvimの方がマシ……という判断による。

さくらのレンタルサーバでtmux - Nov 22, 2011

日経Linuxの連載(シス管系女子)でtmuxを紹介しようかなあと思ったんだけど、自分で使ってないと紹介のしようもないと思ったので、さくらのレンタルサーバ(共用サーバなのでsudoとかは使えない)にtmuxを入れてみる事にした。

以前にGNU screenを入れた時は、ソースからビルドした物を ~/opt/screen 以下に入れたので、それと同じように ~/opt/tmux 以下に入れようと思ったんだけど、ちょっと検索してみた限りだと前回みたいにそのものずばりの手順の情報がなかったので、前回の手順を見返しながら見よう見まねでやってみる事にした。

libeventのインストール

まずtmuxをビルドしてみようとしたんだけど、

checking for library containing event_init... no
configure: error: "libevent not found"

とか言われて ./configure が止まってしまった。メッセージを見ると、ライブラリ(libevent)が無いって言われてるので、まずはそっちの方からインストールした。

  1. ソースをダウンロードする。
    $ mkdir ~/tmp
    $ cd ~/tmp
    $ wget http://downloads.sourceforge.net/project/levent/libevent/libevent-2.0/libevent-2.0.16-stable.tar.gz
  2. 展開する。
    $ tar zxvf libevent-2.0.16-stable.tar.gz 
    $ cd libevent-2.0.16-stable
  3. configureしてmakeしてinstallする。
    $ ./configure --prefix=$HOME/opt/libevent
    $ make && make install
    インストール先としてhome以下を指定すること。

tmuxのインストール

次に本番のtmux。

  1. ソースをダウンロードする。
    $ cd ~/tmp
    $ wget http://downloads.sourceforge.net/project/tmux/tmux/tmux-1.5/tmux-1.5.tar.gz
  2. 展開する。
    $ tar zxvf tmux-1.5.tar.gz
    $ cd tmux-1.5
  3. configureする。
    $ DIR="$HOME/opt/libevent/"
    $ ./configure CFLAGS="-I$DIR/include" LDFLAGS="-L$DIR/lib" --prefix=$HOME/opt/tmux
    インストール先としてhome以下を指定するのに加えて、さっきインストールしたlibeventを使うための指定が必要。ソースからtmuxをビルドしたいんだけど?という質問に対する回答の中にそういう例があったので、そのまま引き写した。
  4. インストールする。
    $ make
    $ make install

ちゃんとインストールできたか、試しに動かしてみる。ライブラリのパスを明示的に指定しないといけない事に注意が必要。

$ env LD_LIBRARY_PATH=~/opt/libevent/lib ~/opt/tmux/bin/tmux

動いていれば成功してる。

ただ、このままだと毎回tmuxを起動する度にlibeventのパスを指定しないといけないので、僕は.bashrcに以下の内容を書き加えて、「tmux」とだけ入力すればtmuxを起動できるようにした。

alias tmux='env LD_LIBRARY_PATH=~/opt/libevent/lib ~/opt/tmux/bin/tmux'

結果

見よう見まねで上記の通りやってみたところ、どうやら動いてくれた。

GNU screenの時は使ってるとBackspaceが変になったりしていまいち動作が怪しかったんだけど、tmuxだとどうだろう。今のところまだその現象は起こってないようなんだけど。

rmで消してしまったファイルやSambaで共有してるフォルダの中身をWindowsから消してしまった場合の復活 - Mar 24, 2011

僕は会社では主にUbuntuを使用しているのですが、Sambaで共有してるフォルダの中にあったThunderbirdのプロファイルっぽい物を「あれ、これテスト用に作ったやつだっけ」と思ってWindowsから削除してしまった後になって「あ、これメインで使ってるThunderbirdのプロファイルへのシンボリックリンクやがな」と気がついて慌てて止めたものの、時既に遅しでメールフィルタもなんもかも消えてしまった。せめてNautilusからの削除だったらゴミ箱に残ってたのに……!

Thunderbirdは起動した状態のままだったので、設定エディタを開いて適当な設定値をいじって、一番重要なprefs.js(アカウント情報が入ってる)だけは書き出させた。アドレス帳は全く使ってないに等しい状態だったので、消えても構わない。メールフォルダの中身も、IMAPで自宅・サーバ上・このPCの3箇所で同じ物を複製しあってる状態だったのでなんとかなる。しかし、このPCでしか設定してなかったメールフィルタが消えてしまったのは痛い。

ということでなんとかundeleteする方法はないかと検索したら、extundeleteというのを使えばいいらしいという事が分かった。

試してみたらかなりの数のファイルを救出できたけど、なんやかやで一部壊れてる物もあった。とりあえず目当てのメールフィルタは無傷で救出できたので、なくさないようにDropboxに入れて自宅にもコピーを置いておこう……

msysGitが動かなくなった - Mar 18, 2011

しばらくぶりに帰宅して、さあ外出先で行った開発の結果を取ってきましょうと思ってgit pullしようとしたら、bashが起動しなくなってた。

背景を説明すると、僕は自宅ではWindowsを使ってて、Gitを使った開発にはTortoiseGitmsysGitの組み合わせを使用しているのですが、普段は全然普通に使えてるのに今日になって急にそれが動かなくなってたという状況でした。どうもTortoiseGitが内部的に呼び出してるCygwinのbashが動いてないようで、bash単体で起動しようとしてもこんな風なエラーが出てしまってすぐにプロセスが落ちてしまいます。

      0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68540000, RegionSize 0x70000, State 0x10000
C:\Program Files\Git\bin\bash.exe: *** Couldn't reserve space for cygwin's heap,
 Win32 error 0

で、エラーメッセージを頼りに何か情報が無いかとGoogle先生に聞いてみた所、同じようなエラーが起こって困ってる人が結構いるみたいだったんですが、そこで紹介されてた以下の2つの対処法は僕の環境では効果がありませんでした。

諦めずにさらに探してたら、MSYSの謎のエラー - メモ@wantoraというエントリで紹介されてた方法でうまくいきました。

>cd "c:\program files\git\bin"
>rebase -b 0x30000000 msys-1.0.dll

rebaseというのはひょっとしたら普通は入ってないかもしれません。自分はFirefoxのビルドのためにWindows SDKというのを入れてましたが、それに付いてきてたのかもしれません。リンク先のエントリによるとWindows SDK for Windows Server 2008 and .NET Framework 3.5を入れると付いてくるようです。

rebaseってなんやねん、git rebaseとは違うのか、と思って検索してみたら以下のような記事が出てきましたが、読んでもよくわかりませんでした。

Windowsの言語バーをIMEがONの時にのみ表示する - Feb 26, 2011

ATOKはATOK2011からWindows XP以降の多言語入力のフレームワークにきちんと則った設計になったとか何とかで、独自のフローティングウィンドウ(ATOKパレット)の代わりに、Windows標準の「言語バー」で全ての操作を行えるようになった。それはいいんだけど、使い勝手がちょっと今までのATOKパレットと違って違和感がある。目下のところ困ってたのは、IMEがOFFの時に言語バーが消えないという事。

というのも、ATOKパレットでは「IMEがONになってる時だけ表示して、IMEを介さない直接入力になってる時は非表示にする」という設定ができたんだけど、フローティング表示にしたWindowsの言語バーにはそういう機能が無いようで、直接入力の時でも常に言語バーが出っぱなしになってしまうのです。

普段の利用とか開発の時とかはそれでも別にいいんだけど、全画面表示でDVDとかBDとかを鑑賞したり、Adobe IllustratorやSAIとかの画面をなるべく広く使いたいアプリケーションを使う時なんかには、これが邪魔になる。

じゃあタスクバーに入れとけばいいじゃんって話なんだけど、タスクバーを縦置きして且つ自動で隠すようにしてる僕の環境では、ぱっとデスクトップの右下に目をやった時にIMEがONなのかそうでないのか(何も出てなければIMEがOFFになってて、ATOKパレットがあればIMEがONになってるってことですね)を判別できないので、そっちの方が不便が大きい。

JustSystem的にはこういう場合は言語バーを非表示にするかタスクバーにドッキングさせた上で従来通りのATOKパレットを使うようにしてくれって事らしい。でもそれも何だか芸がないですよね。できれば新しい物を使いたいし、古いオプションがいつまで残るかなんてわかんないし。乗り換えられるようになったらさっさと乗り換えておいた方がいいという事は、自作アドオンのせいでFirefox 1.5にロックインされてFirefox 2にいつまでも移行できなかった時にも痛感したし。だいたい、従来のATOKパレットではアプリケーションを切り替えたタイミングとかで、切り替え後のウィンドウの方でIMEが無効になってる時でもたまにATOKパレットが出っぱなしになることがあったから、以前のやり方に戻しても万全じゃないのです。

それでもうちょっと検索してみたら、そういう事をはてなで訊いてる人がいて、その回答の中でXLangBarというユーティリティが紹介されてた。昔なつかしVzエディタの作者の方の手による物だそうだ。最終リリースが2006年だったりWindows XP+MS-IME2002専用と書いてあったりで、Windows Vista+ATOK2011な僕の環境では動かないんじゃなかろうかとも思ったんだけど、試してみたらばっちり動いた。多分、Windows標準の言語バーを使ってる物だったら何でも使えるんだと思う。Windowsの多言語入力の仕組みが変わらない限りはしばらくは安心して使い続けられる……かな……?

追記。64bit版のWindows 7で試してみたら、XLangBarは起動するものの、機能しないという結果だった。Windows 7だからアウトなのか64bitだからアウトなのかは不明です。

続きを表示する ...

Page 2/244: 1 2 3 4 5 6 7 8 9 »

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき