僕は基本的に文章を書くのが好きなので、今でも折りがあれば自分の気持ちを文章に書いている。書くと自分の気持ちがはっきりしてきて心が落ち着く。まあ、認知行動療法の一環でもあるけどね。

同時に、詩もまた書くようになった。これまでの経験では、詩を書くときにはあまり精神状態がよくないことが多いが、まあ隠したって仕方がない。詩の形式の方が表現できることも多々ある。SNSによっては危険人物使いされるだろうけど、自分の気持ちを言葉にできない方がより危ないと思う。

気持ちを言葉で掴むのは難しい。言葉は概念だけど、心は感情だ。掴んだと思った瞬間、心は指の隙間をすり抜け、どこかに消え去ってしまう。だから、僕は詩を書く。詩ならば、まだ掴んでおけそうな気がするから。

———————————————–

僕と一緒にいたら
君も不幸になっちゃうよ
僕には悪魔が憑いているから
そう言ってあなたは
さびしそうに笑った


私は何も言えなかった
確かに私は
あなたが重荷だった
理解できない言葉の羅列
聞く度に違う内容


じゃあねとあなたは言うと
暗い海の中に沈んでいった
月もないのに
あなたの姿だけははっきり見えて
でも手は届かなかった


あなたは胸まで水に浸かると
私を振り返って
口の動きで
「さよなら」と言った
それが最後だった


私の何が悪かったんだろう
あなたの何が悪かったんだろう
懸命に生きてきたのに
あんなに明るかったのに
一緒に生きていくはずだったのに


帰ってきてなんて
そんなことは言えない
やはりあなたのことはわからない
あなたの前で叫びそう
私にも悪魔が憑いているんだ


わかりあいたい
わかりあえない
それは努力不足?
私のせいなの?
それともあなたのせい?


魂を渡しても意味はない
そんなことしたら二度とわかり合えない
だから私は待つことにした
あなたが月光の中 海から上がってくる時を
魂が自由になる時を

あなたはいない 序章

きっとあの時の僕は
久しぶりにあなたと一緒で
はしゃいでいただろう
青い空に白い雲
あなたは横にいた

二人で手を繋いで
いつより遠くまでの散歩
川の隣の踏切
カンカンと音が響き出す
あなたの手に力が入った

足の下には4本のレール
突然の甲高い汽笛
マルーン色の塊と太陽を反射する窓
その後世界が止まった
あなたの手はどこにもなかった

僕は無数の泡の中に放り出されて
なぜか息は苦しくなくて
思いっきり水から飛び出したら
ストロボの目映い光に包まれて
あなた以外の知らない人ばかりで

痛かった
とても痛かった
頭には包帯が巻かれていた
「右手は折れている」という男性の声
腕が焼けるような液体をかけられて
僕は何もわからなくなった

その後覚えているのは
真っ白な天井と真っ白な壁
周りを囲む木の柵
その中が僕の世界だった
後はたまに遊んでくれるお姉さん

「お母さんはどこにいるの?」
「他の部屋で治しているよ」
「また会えるの?」
「…会えるよ…」
その時の僕に
それ以上の何が理解できただろう

毎晩のように見る夢
踏切と迫り来るマルーン色の電車
落ちる川の水泡と浮かび上がる僕
アルバムに載っている知らない女性
あの時のあなたの覚悟を
今の僕ならどのくらいわかるだろうか

ねえ、お母さん
僕はいい子だった?
グズグズ言って困らせなかった?
夜泣きはしなかった?
僕のこと抱きしめてくれた?
僕のこと 好きだった?

僕が
原因じゃ
ないよね?

あなたはもういない
あなたを思い出すよすがもない
でも信じている
僕の心の小部屋に
あなたが佇んでいることを
そしてきっと会える
僕の人生の最後の日に

意味

生きていることに
意味がなくなって
僕は死のうとした

でも死ぬことにも
意味が見いだせなくて
僕は死ぬのをやめた

意味って何なんだ
意味ってそんなに凄いのか
意味がなくちゃいけないのか

意味なんて必要のない
そんな世界を生きてみたい
意味なんて消えてなくなれって

そこはきっと
何もかもが穏やかな世界
空も
どこまでも透き通っているのだろうか

あいつが死んだ
その時誰か隣にいたのかな
もしかして独りで死んだのかな

独りでいると
人は意味を見失う
生きている意味が
わからなくなる

だから僕は
あんたに傍にいてほしい
何もできなくてもいい
料理がまずくてもいい

僕が意味を見失ったとき
「生きていてほしい」
その一言を言ってほしい
僕の生きる意味は
僕の中にはないと気づいたから

あんたの熱い手
あんたの熱い頬
あんたの熱い唇
あんたの熱い膣

それに包まれているとき
僕は生きている意味がわかったんだ
そうなんだ
僕が生きているのは
あんたがいるからなんだ

いつも傍にいてほしい
僕がキスを迫っても
照れずに受け入れてほしい
あんたが僕の
生きている意味だから

Scaffolding ユーザー登録の方法

【重要】ユーザー登録をする前に下記の文書を必ずお読みください。
   ※ユーザー登録をしても料金は発生しません。

  • 利用規約
  • プライバシーポリシー
  • 特定商取引法に基づく表記
  • サービスの内容と料金
  • 推奨環境

(1) https://scaffolding.is/ にアクセスしてください。

(2) 「登録」のボタンを押してください。

登録ダイアログ

(3) 「→」ボタンを押して「サービス利用規約」をお読みください。

登録ダイアログ2

(4) 「サービス利用規約」をスクロールして最後まで読まれて、同意されましたら一番下のボタンを押してください。

サービス利用規約

(5) ラジオボタンがオンになっていることを確認して、メールアドレスを入力し、「確認リンクをリクエスト」をクリックしてください。

確認リンクをリクエスト

(6) 入力したしたメールアドレスに以下の確認メールが届きます。確認コードをコピーしてください。

(7) 認証コードを入力し「検証」ボタンをクリックしてください。

認証コードで検証

(8) アカウント作成ダイアログが開きますので、「アカウント名」と「パスワード」を入力し、「アカウント作成」ボタンをクリックしてください。
※パスワードは後から変更できます。

アカウント作成

(9) 下のダイアログが表示されれば、アカウントは正常に作成されています。3営業日以内に承認しますので、しばらくお待ちください。

承認が必要

(10) アカウントが承認されると、登録したアドレスに以下のメールが届きます。

(11) 「Go to Scaffolding」のボタンをクリックすると、以下のダイアログが表示されます。
登録した「アカウント名」と「パスワード」を入力して、「→ログイン」ボタンをクリックしてください。

ログイン画面

(12) ログインに成功すると以下のような画面が表示されます。この画面は「ダッシュボード」といい、自分の好みに合わせて「カスタマイズ」できます。いろいろ試してみてください。
お疲れ様でした。

Mastodon地域インスタンス「箕面どん」をv3.0.0にアップデートしました

しばらくMastodon関係のことは書いていなかったが、箕面どんとしては順調にアップデートに追従していた。
そのMastodonもいよいよv3.0.0が公開され、更に新しい世界へと進んでいるので、これを機に久しぶりにブログを更新したいと思う。

Mastodon v3.0.0での更新内容はかなり多いので、興味ある方はリリースノートを読んでいただきたい(英語だが)。
https://github.com/tootsuite/mastodon/releases/tag/v3.0.0

ここでは、さくらのクラウドのCentOS上のnon-dockerで、どのようにアップデートするか、それに限って書きたいと思う。

まず、Ruby 2.6.5をインストールすることが必要である(Ruby 2.6.4には脆弱性が発見されたので、他のMastodonのバージョンでも使わない方がいい)。
箕面どんでは前にRuby 2.5.1をインストールした時に、rbenvやruby-buildの環境を整えていたので、今回は以下のコマンドでアップデートできた。
※なお、作業は全てmastodonユーザーで行う必要がある。

$ cd ~/.rbenv
$ git pull

$ cd ~/.rbenv/plugins/ruby-build
$ git pull

$ rbenv install -v 2.6.5
$ rbenv rehash
$ rbenv local 2.6.5

Ruby 2.6.5が設定されているかどうか確認する。

$ ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]

問題がなければMastodonのアップデートに移る。
ここではリリースノートをよく読むこと。それを守れば失敗することはない。
基本的な手順はいつもと同じである。
まず、liveディレクトリに移動することを忘れてはいけない。

$ cd live
$ git fetch
$ git checkout $(git tag | sed -e "/rc/d" | tail -n 1)
$ gem install bundler
$ bundle install
$ yarn install

ここから後のコマンドと手順が違うので、要注意である(全てリリースノートに書いてあるが)。

$ SKIP_POST_DEPLOYMENT_MIGRATIONS=true RAILS_ENV=production bundle exec rails db:migrate
$ RAILS_ENV=production bundle exec rails assets:precompile

ここまでの処理が終わったら、一旦サーバーを再起動する。
再度接続を確認したら、次のコマンドを打つ。

$ RAILS_ENV=production bin/tootctl cache clear
$ RAILS_ENV=production bundle exec rails db:migrate

もう一度再起動。
接続を確認して、晴れてv3.0.0になっていれば成功。

それでは、素晴らしいMastodon Lifeを!

ほんとのわたし

わたしの何を求めているの
わたしの欲しいものは男じゃないの
男の中にいるわたし
わたしをもっと見つめていて

わたしは気持ちがわからないから
あなたの心に興味はないの
それよりあなたの身体をちょうだい
あなたのいちばん熱いところを

わたしの髪に触れたらだめよ
わたしの胸に触れてもだめよ
あなたはわたしの眼を見るだけなの
瞳の奥の闇をあげるわ

わたしの中にたっぷり出しても
わたしは子どもを産まないの
わたしは何も残さない
今がわたしのすべてだから

わたしの好きをあなたは知らない
わたしの愛をあなたは知らない
あなたの想うわたしはいないの
わたしはそんなに易くはないの

それでもいいなら抱いてあげる
あなたは何も感じちゃだめよ
わたしのほんとを探してみてね
誰も知らないほんとのわたしを

(dedicated to Yuko)

Mastodon地域インスタンス「箕面どん」をv.2.5.0にアップデートしました

今週の9月3日(月)の早朝、Mastodonの最新版v.2.5.0がリリースされた。
今回のバージョンでは「relay server」を設定できたり、「カスタムCSS」の編集ができるなど、いろいろな機能アップがある。
詳しくはリリースノートを見てほしい。
https://github.com/tootsuite/mastodon/releases/tag/v2.5.0

リリースノートを見ると、「Node.jsの8系をインストール」と書いてある。
僕が箕面どんに使っているサーバー「さくらのクラウド」では6系である。

# node -v
v.6.13.1

これを8系にバージョンアップしようとして、ちょっとはまったので、その辺りを書いておきたい。
基本的に参考にしたのは、下記のページである。
Mastodonで使用するNode.jsをアップデートした

上のページのリンク先にある情報のように、

# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install -y nodejs gcc-c++ make

としても、Node.jsの8系はインストールされない。
同じ6系の最新バージョン?がインストールされるだけである。

# node -v
v.6.14.4

# yum -y remove nodejs

をして削除しても同じである。
いろいろググってみると、以下のような情報を見つけた。
yumでのnodejsのバージョンアップにはまった話と解決方法

ここを読んで気づいたのだが、もしかしたらNode.jsの古いrpmが残っていて、悪さをしているのかもしれない。さくらのクラウドでは、スタートアップスクリプトでyumでNode.jsをインストールしているので可能性はある。
そこで、下記のコマンドを売って、古いrpmを削除する。

# rm /etc/yum.repos.d/nodesource-el.repo

この様子は随時箕面どんにツゥートしていたのだが、その様子を見て詳しい方から助言をいただいた。
「epel」を無効したらどうかというものである。
僕もインストール画面でこの表示が気になっていたし、試しに無効にしてみた。

# vim /etc/yum.repos.d/epel.repo

上の方にある「enabled=1」を「enabled=0」に書き換える。

ここまで準備した上で、古いNode.jsを削除し、yumの設定を一旦クリアする。

# yum -y remove nodejs
# yum clean all

その上で、初めと同じコマンドを打つ。

# curl -sL https://rpm.nodesource.com/setup_8.x | bash -
# yum install -y nodejs gcc-c++ make

ザーとインストールが進んで、ちゃんと8系になった。

# node -v
v.8.11.4

Mastodon v.2.5.0をインストールする手順はいつもと同じである。
ただリリースノートには「SKIP_POST_DEPLOYMENT_MIGRATIONS=true」を打って、Mastodon serviceをリスタートしてから、再度db:migrateをするように書いてあるが、よくわからなかったんで省略した(^^ゞ
そのせいか、db:migrateではいろんな文字列がザーと流れて、かなりの時間がかかったが、他の鯖缶の方の話ではそれで正常らしい。
CentOSを再起動したら、問題なく2.5.0のアップデートされていた。丸1日経ったが、特に問題は出ていない。
もし、不正確なところや間違っているところがあれば、教えていただきたい。

それでは、素敵なマストドンライフを!

Mastodon地域インスタンス「箕面どん」をv.2.4.0にアップデートしました

かなり前になるが、新しいソーシャルネットワーキングサービス「Mastodon」を紹介したのを、覚えておられるだろうか。
当初は「大阪丼」(https://mstdn.osaka)に参加していたが、思うところあり、独立して箕面市(非公認)の地域インスタンス「箕面どん」を立ち上げた。
箕面どん

さくらのクラウドでサーバーをレンタルし、CentOS 7.4上で構築している(非Docker)。導入自体は「スタートアップスクリプト」があるので、比較的簡単にできた。
当時のMastodonのバージョンが2.3.3であったが、最近2.4.0がリリースされたので、アップデートに取り組んだ記録である。
鯖缶の方々の様子を見ると、データベースを飛ばして全て消えてしまうなど、いろいろなアクシデントが起こるアップデート作業。僕自身も1度目は失敗し、2度目の挑戦でやっと上手くいった。
初心者の方々にも参考になるように、ここに過程を書きとどめておきたい。

なお、全体の流れは下記サイトを参考にした。
「さくらのクラウド」スタートアップスクリプトによるMastodonを、v2.3.3からv2.4.0rc3にバージョンアップした時につまずいた話。

1.サーバーのバックアップ

万が一に備えて、必ずやっておきたい作業である。僕も1回目失敗したとき、バックアップのおかげで、復旧することができた。
pg_dump/pg_dumpallなどのコマンドを使って、データベースだけバックアップする方法もあるが、僕はさくらのクラウドのアーカイブ機能を使って、ハードディスクを丸ごとバックアップした。復元も簡単なので、お勧めである.

2.PostgreSQLを9.6にアップデート

v.2.4.0からPostgreSQL 9.4以上が必須となる。さくらのクラウドでは9.2なので、アップデートが必要である。10を試してみたが、さくらのクラウドのCentOS 7.4上ではエラーで動かなかったので、9.6.9を下記のようにインストール、データベースを初期化した。

# yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
# yum list | grep postgresql96
# yum install postgresql96-server
# alternatives --display pgsql-psql
# alternatives --display pgsql-pg_dump
# PGSETUP_INITDB_OPTIONS="--encoding=UTF8 --no-locale" /usr/pgsql-9.6/bin/postgresql96-setup initdb

コマンドの意味は下記サイトに詳しい。
CentOS 7.3にインストールしたPostgreSQL 9.4から9.6へアップデートする

3.pg_upgradeというコマンドをインストール

【註】
この過程は必ずしも必須ではない。ソースを入れ替えるので、危険性を内在している可能性がある。PostgreSQLの新バージョンが出る度にインストールする方針の方は、する必要なないと思われる。

この作業をする前に、今動いているPostgreSQLサーバーを停止しておく必要がある(←これ、重要)。
停止しておかないとインストールに失敗する。

# systemctl stop postgresql

停止しているかどうか確認。

# systemctl status postgresql

そして、postgresユーザーに切り替えて、下記のようにコマンドを打つ。

# su - postgres
-bash-4.2$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

このコマンドはエラーになるので、下記サイトを参考に、pg_upgradeを入れ替える。
pg_upgradeでつまずいた

なお、さくらのクラウドのCentOSにはwgetが入っていないのでインストール。vimも好みで入れる。

# yum install wget
# yum install vim

(1)ソースをダウンロードして展開

# cd /usr/local/src
# wget https://ftp.postgresql.org/pub/source/v9.6.9/postgresql-9.6.9.tar.gz
# tar zxf postgresql-9.6.9.tar.gz
# cd postgresql-9.6.9

(2)src/bin/pg_upgrade/server.cを修正

# vim src/bin/pg_upgrade/server.c

(GET_MAJOR_VERSION(cluster->major_version) < 903) ?
となっているところを
(GET_MAJOR_VERSION(cluster->major_version) < 900) ?
と変更する。

(3)ビルドする(インストールはしない)

# ./configure && make

(4)yumバージョンとmakeバージョンを置き換え

# cd /usr/pgsql-9.6/bin/
# mv pg_upgrade pg_upgrade.rpm
# cp /usr/local/src/postgresql-9.6.9/src/bin/pg_upgrade/pg_upgrade .

ここまでして再度postgresユーザーに切り替え、下記のコマンドを打つと、ズラズラとOKが表示されて、インストールに成功する。

$ /usr/pgsql-9.6/bin/pg_upgrade -d /var/lib/pgsql/data -D /var/lib/pgsql/9.6/data -b /usr/bin/ -B /usr/pgsql-9.6/bin/

なお、最初に紹介したサイトでは、pg_upgradeをインストールした後で「後処理」をしているが、僕の環境では上手くいかなかった。それでも問題なくサーバーは動いているので、無視しても大丈夫である。

他に、以下の設定ファイルを書き換えた。

# vim /var/lib/pgsql/9.6/data/pg_hba.conf

METHOD欄を全て、trustに書き換え。
【2018年6月3日追記】
この設定は、あくまでさくらのクラウドでスタートアップスクリプトを使って、インスタンスを立ち上げた場合に有効である。
その他の環境の場合、データベースへのアクセスを無制限に許してしまい、大変危険である。
その場合は、設定をmd5などにして、暗号パスワードを設定することをお勧めする。
以下のサイトを参考にされたし。
pg_hba.confの設定

# vim /var/lib/pgsql/9.6/data/postgresql.conf

127行目の
dynamic_shared_memory_type = posix
という行の先頭に#を付けて、コメントアウト。

紹介したサイトではその後、コマンドを9.6用に差し替えているが、それをするにはPostgreSQLの古いバージョンを削除しなくてはならない。
僕の環境ではそれをすると、bundle installでpgがインストールできないという現象にぶつかった。
コマンドを総入れ替えしなくても特に問題はないだろうと考え、見送った。

4.PostgreSQL 9.6に切り替える。

以下のコマンドを打って、旧バージョンの自動起動を無効にし、9.6を有効化、自動起動させて、CentOSを再起動する。

# systemctl disable postgresql
# systemctl start postgresql-9.6
# systemctl enable postgresql-9.6
# reboot

自分のインスタンスにアクセスし、正常に動いているかどうか確認する。

5.ruby 2.5.1のインストール

Mastodon v.2.4.0ではruby 2.5.1が必須である。
インストール作業はmastodonユーザーに切り替えて行う必要がある(重要!)。これをしておかないと2.4.0のインストールに失敗する。

# su - mastodon

ruby 2.5.1のインストールには、下記サイトを参考にした。
rbenv を使って ruby をインストールする(CentOS編)

(1)rbenvをインストール(clone)する

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

(2)環境設定

# PATH に追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile

# .bash_profile に追加
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

# 上記設定の再読み込み
$ exec $SHELL -l

(3)ruby-build を インストール(clone)する

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

(4)ruby 2.5.1をインストール

$ rbenv install -v 2.5.1

(5)環境確認

再読み込み。

$ rbenv rehash

先ほどインストールした最新版に設定

$ rbenv global 2.5.1

確認

$ ruby -v
ruby 2.5.1p57 (2018-3-29 revision 63029) [x86_64-linux]

6.Mastodon v.2.4.0をインストール

ここまで下準備をして、ようやく2.4.0をインストールできる。
インストールには下記サイトを参考にした。
Mastodonのアップデート
Mastodonのバージョンアップの時に入力するコマンド(non-Docker)

# su - mastodon
$ cd live
$ git fetch
$ git checkout $(git tag | sed -e "/rc/d" | tail -n 1)
$ gem install bundler
$ bundle install
$ yarn install
$ RAILS_ENV=production bundle exec rails db:migrate
$ RAILS_ENV=production bundle exec rails assets:precompile
$ sudo systemctl restart mastodon-*.service

僕の環境では、RAILS_ENV=production bundle exec rails assets:precompileでエラーが出たが、mastodon serviceを再起動したら、問題なくアップデートされていた。
自分のインスタンスのアバウト画面で、2.4.0と表示されていたら成功である。

では、素晴らしきMastodon Lifeを!

MacBook 4.1にArch Linuxをインストールする(インストール編)

僕がArch LinuxをインストールするMacBookは、Appleのホームページにも載っていない古い機種で、機種IDが「MacBook 4,1」というものだ。ArchWikiにも機種別の情報は載っていない。
しかし、基本的にArchWikiのMacBookに書かれていることを参考にすれば大丈夫である。そこで解決しない問題は、ネットで探すことになる。

ArchWikiで推奨されているインストール方法は、「Mac OS Xとのデュアルブート」である。macOSを残しておく方がMacBookのファームウェアを書き換えたり、Macの設定を変えたりする時に便利である。したがって、ここではその方法を紹介したいと思う(実際は、Ubuntuを新規に入れていたので、Mac OS X Snow Leopardを再度インストールするところから始めることになったが)。

1.Arch Linuxをインストールするパーティションを作成する

この作業はMac OS Xで行う。ディスクユーティリティを立ち上げ、Macintosh HDを選択し、「+」ボタンを押して、新規にパーティションを作成する。僕の場合は、ハードディスクを2分割することにした。
名前やフォーマット形式はArch Linux側で作成し直すので何でもかまわない。
パーティションを作成し、デスクトップに表示されるのを確認する。

2.インストールCDで起動する

Arch LinuxをダウンロードからISOイメージをダウンロードして、適当なアプリでCDに焼く。CDをセットし、MacBookをオプションキーを押しながら起動すると「Windows」というCDのアイコンが現れる。それを選択してしばらく待つと以下のような画面が表示される。

「Boot Arch Linux」を選択してエンターキーを押すと、ブートが始まる。無事に起動を確認したら、次の作業に移る。

3.Arch Linux側でパーティションを作成する

そのままでは日本語キーボードの設定になっていないので、以下のコマンドを打つ。

# loadkeys jp106

ArchWikiのMacBookを参考にして、Mac OS Xで作成したパーティションを削除して、Arch Linux用に再度パーティションを作り直す。
(注)Mac OS Xのパーティションのルールとして、最後のパーティションの後に「128MB」の空き領域が必要である。詳しくはArchWikiを見てほしい。
なお、メモリが4GB以上ある時には、swapを作成しない方が速くなるとあったので、swapパーティションは作成しなかった。

# cgdisk /dev/sda

cgdiskの画面が表示されるので、「コントロールキー」+「矢印キー」で、Arch Linux用のパーティション番号を選択し、「Delete」と「New」を使い、パーティションを作成していく。
以下の例は、「Mac OS Xとのデュアルブート用のパーティション:100MB」「Arch Linuxのbootパーティション:100MB」「Arch Linuxのrootパーティション:残り全部」を作成したものである。

4.Arch Linuxをインストールする

インストール自体は他のPCと同じである。
ArchWikiのインストールガイドに従ってインストールする。
ただし、MacBook 4,1は無線LANのドライバが有効にならないので、有線で繋いでインストールしなければならない。
インストールガイドにある「起動モードの確認」で、UEFIモードではないとなるが、気にせず先に進む。
インストールが終了したら、ブートローダーの設定に移る。
ブートローダーの設定が終わるまで、chrootしたままでいるようにする。

5.ブートローダーの設定

以下のやり方は、MacBook AirにOSXとデュアルブートでArch Linuxを入れるを参考にした。

まず、GRUBをインストールする。

# pacman -S grub-efi-x86_64

/etc/default/grubを以下のように修正する。エディタにはviやnanoが使える。

GRUB_CMDLINE_LINUX_DEFAULT="quiet rootflags=data=writeback"

そして、以下のようにしてカレントディレクトリに「boot.efi」を作成する。

# grub-mkconfig -o /boot/grub/grub.cfg
# grub-mkstandalone -o boot.efi -d usr/lib/grub/x86_64-efi -O x86_64-efi --compress=xz boot/grub/grub.cfg

作成された「boot.efi」はUSBにコピーしておく。僕はたまたまそばにあった「ATOK for Mac」のUSBを使ったが、問題なくコピーできた。

# dmesg | tail # USBメモリのデバイス名を調べる。仮にsdd1とする
# mkdir /mnt/usbdisk && mount /dev/sdd1 /mnt/usbdisk
# cp boot.efi /mnt/usbdisk/
# umount /mnt/usbdisk

MacBookを再起動して、Mac OS X側の設定に移る。

# exit
# umount -R /mnt
# reboot

6.Mac OS Xでのブートローダーの設定

Mac OS Xで起動したら、デスクトップに「Boot Arch from the Apple boot loader」というボリュームがマウントされているはずである。ターミナルを起動して、以下のようにブート用のディレクトリと「SystemVersion.plist」を作成する。

# cd "/Volumes/Boot Arch from the Apple boot loader"
# mkdir System mach_kernel
# cd System
# mkdir Library
# cd Library
# mkdir CoreServices
# cd CoreServices
# vi SystemVersion.plist

「SystemVersion.plist」には、以下のように記述する。

<xml version=”1.0″ encoding=”utf-8″?>
<plist version=”1.0″>
<dict>
   <key>ProductBuildVersion</key>
   <string></string>
   <key>ProductName</key>
   <string>Linux</string>
   <key>ProductVersion</key>
   <string>Arch Linux</string>
</dict>
</plist>

そして、CoreServicesにUSBのboot.efiをコピーする。これはFinderでやった方が簡単である。
その後、blessして「Boot Arch from the Apple boot loader」バーティションを起動可能にする。

# sudo bless --device /dev/disk0sX --setBoot

(注)Xに入る数字はディスクユーティリティで確認する。

これで再起動したら、GRUBの画面が表示されて、Arch Linuxが立ち上がるはずである。

7.トラブルシューティング

僕の場合、機種が古いせいか、以下のようなトラブルに遭遇したので、参考に解決方法を加えておく。

(a)起動してもArch Linuxをインストールしたデバイスが見つからず、「new_root」でしかログインできない

これにはかなり苦戦したが、ネットを探し回って、次のようなサイトを見つけた。
“Unable to find root device” on a fresh ArchLinux install

ここにあるように、/etc/mkinitcpio.confのHOOKSの順番を変えると解決した。blockをautodetectの前に記述するのである。以下の通り。

【変更前】
HOOKS="base udev autodetect block modconf filesystems keyboard fsck"

【変更後】
HOOKS="base udev block autodetect modconf filesystems keyboard fsck"

そして、以下のコマンドを打って、ramdiskを作り直す。

# mkinitcpio -p linux

これでrootでログインできるようになる。

(b)ルートディレクトリのマウントに失敗する

起動中のプロンプトを見ると、「ルートのマウントに失敗した」というエラーが表示されるのだが、システム自体は立ち上がり、ルートでのログインもできる。気持ちの悪いエラーだが、いろいろ調べてみると、fstabの記述に問題があることがわかった。
先に、GRUBを設定した時に「rootflags=data=writeback」と設定したが、それがfstabに反映されていなかった。
/etc/fstabを開き、「data=writeback」に書き換えたらエラーが表示されなくなり、fsckもちゃんと働くようになった。ext4のジャーナリングを有効にするために、必要な設定なのかも知れない。

MacBook 4.1にArch Linuxをインストールする(前置き編)

僕はどちらかというと、同じマシンを長く使う方だと思う。Macを使い始めてもう10数年が経つが、ノートブックは3台乗り換えただけだ(デスクトップは2台)。
今使っているMacBook Pro Retina 13-inch Late 2013に乗り換える前は、長らくMacBook Blackを使っていた。もうAppleのホームページにも載っていない古い機種だが、メモリは4GMに増設、HDDは750GBに載せ替えて使い込んでいた。
それが、Mac OS X Lionを最後に新しいOSに対応しないということだったので、新たにMBPを購入したわけだ。

古いMacBookはしばらく埃を被っていたが、Linuxの勉強を兼ねてUbuntuをインストールして、たまに使ったりしていた。Ubuntuを選んだ理由は、ドライバ関係で対応がたやすいということである。確かにWifiなども一発で認識してインストールも簡単だったのだが、いかんせん古いMacBookには重かった。反応がワンテンポ遅れる感じである。Core Duo 2の2.4GHzなのだが、それだけUbuntuが重いLinuxになってしまったということだろう。

しばらく放置していたのだが、ふと思うところがあり、Arch Linuxをインストールしてみることにした。Arch Linuxを選んだ理由は、どこかで見たアンケートでMacBookユーザーがインストールするLinuxの中で1位だったからである。そして、軽いLinuxだとということも興味を引いた。ただ、デフォルトではデスクトップ環境などがインストールされないので、Ubuntuなどとくらべて敷居が高いという話もあった。

しかし、MacBookユーザーでインストールしている人が多いということは、参考になる記事も多いはずである。そして、Arch LinuxはWikiが充実しているのも重要なポイントだった。あまり初心者向けのLinuxではないが、だからこそLinuxを勉強するのにもいいのではないかと思った。
そういう訳で、これから数回に分けて、MacBookにArch Linuxをインストールして、日常の使用に使っていく過程を書き込んでいきたいと思う。多くの方の参考になれば幸いである。

Arch Linuxとはなんぞやという人は、下記のリンクを読んでみてほしい。
Arch Linux