はじめに
🕒 この記事を読むのに必要な時間 🕒
全文: おおよそ30分〜45分
📜 必要な知識 📜
Linuxコマンドライン操作: 中級以上
GNU C言語の開発知識: 中級以上
シェルスクリプトの知識: 初級以上
💻 実行環境 💻
OS: Arch Linux x86_64
Kernel: 6.5.5-arch1-1
Terminal: xfce4-terminal
■ 概要:APoraudio とは?
いつのまにか陰謀論記事だらけで見づらくなってしまった「ライブCDの部屋」で紹介されていたディストリビューション。
軽量 Linux として定評のある Puppy Linux などと同じように RAM 上にすべてロードして動作するタイプの OS。同じく軽量 Linuxとして以前から支持されている Porteus というディストリビューションから派生した APorteus (ベースを Slax → ArchLinux に変更したもの)を元にしている。
名前の由来は APorteus + Audio から。
音質を追求した Kona Linux の作者のサイド・プロジェクトで同様のパッケージを用いて高音質を実現している模様。
ちょうど素人でも使えそうな軽量 Linux OS を探していた際に候補に挙がった。理由は、
- スクショで紹介されていたデスクトップ画面が格好良い。
- 日本人が作っていて最初から日本語が使える。
- 俺ちゃんが普段使いしている Arch Linux とパッケージ互換性がある。
- すべてを RAM に読み込んで動作するので、動作が軽い。メモリの容量さえあれば古いマシンでもちゃんと使えそう。
- 初心者が色々やって(ソフトウェア的に)システムを壊したとしても、簡単に初期状態に戻すことが可能。
ということ。
売りの音質は良いに越したことはないが、特にそこまで欲してはいなかった。1
■ 注意点
さて、この記事を読んで試してみようとする人に、先に忠告しておくべきことがある。
後ほど説明するが、このディストリビューションには問題点が多く、インストールしてすぐさま普段使いに投入できるかといえば 答えは NO だ。
まともに使用できるようになるには、かなり調整してやる必要がある。
Linux 使用歴がない人や、浅い人は止めておいたほうが無難だろう。
また、ベースとしている APorteus 自体が Porteus 上で Arch Linux パッケージ を利用できないか解析・研究する過程から生まれたものらしく「試用版」と銘打ってあり、「通常の使用は想定されていません」と明言されている。そういった意味からも、とても完成度が高いとは言えない状態なので留意すること。
【参考】ArchLinux packages manager for Porteus - Porteus
https://forum.porteus.org/viewtopic.php?p=36689#p36689
逆に、
- いろいろと実験してみたい人。
- 問題を自分で解決していける人。
- 時間や苦労が惜しくはない人。
- サポートなどいらん!自分で調べるわ!というツワモノ。
- C言語の仕組みに理解があり、シェルスクリプトが読める人。
このような人なら、カスタマイズして使っていくことができるだろう。
特に Arch Linux / Manjaro Linux などで普段使いされている人なら言うことはない。
爆速の RAM 上で走る Linux を体験してほしい。
Let's Happy Hacking!!
■ 必要なスペックは?
必要最低限のマシンスペックに関して、特に公式では明言されていない。
が、
俺ちゃんが試してみたところ、デフォルトの状態で起動直後だとメモリは 1GB 弱 消費していた。おそらく 4GB 程度もあれば快適に動作するものと思われる。ヘビーにカスタマイズするなら、8GB 以上あると安心だろう。
CPU に関しては何をやりたいかによる。
インターネット、オフィス、ちょっとしたゲーム、あたりの定番な使い方なら、かなり古いものでも大丈夫。 10年以内のものなら十二分だと思う。たぶん、15年前くらいの おじいちゃんPC でもイケる。ただし、64 bit 版のみの提供なので 64 bit アーキテクチャ(x86_64)に対応している機種である必要はある。
逆に、画像・音楽・動画の編集をしたいなら、ある程度の上等なスペックが望ましいだろう。
なお、インストールする USBメモリー2 は USB 3.0 以上が推奨されている。
2.x 以下は速度面から厳しいということらしい。
■ 公式ホームページからダウンロード
公式HP を参照してみると…
なんと作者の Googleドキュメントを公開しただけのものだった。。
【参考】Aporaudioについて - Google ドキュメント
https://docs.google.com/document/d/1Tg6jbWiC3nXj9OiOnaSwIQsyQWl8rglOLBB3NIKEBmE/edit#
しかもメインページはなく、ブログっぽい更新履歴が Google 検索するとトップに来る。(最初こっちが公式なのかと思って混乱した。。)
Kona Linux, KLUE(UbuntuEdition) なども同じ作者で同じ方法で配布していて、それらの更新情報についても混ざっている。
日本人らしいが、ドメインも取っていないし、かなり変わった人だ。
配布も Google Drive で。サポート会議室も Google Groups。
github で公開しているところや subversion, SourceForge なんかは多いが、まさかの GoogleApps とは…。もしかして Google 社内の人とかなんだろうか?
ダウンロードしたのは最新版の aporaudio-1.1.2_x86_64.iso 。 サイズは約 1.02GB。以下のページから最新のバージョンをチョイス。最終更新日は 2023-05-12 だった。
【ダウンロード】APoraudio - Google ドライブ
https://drive.google.com/drive/folders/1GDJyECm5yWPVTg_IZ5wVfMLCGeO4YLer
■ DVDで起動してからUSBメモリーを作る
● DVD-R に焼く
このディストリビューション自体に起動可能な USBメモリー を簡単に作成してくれる機能があるらしい。
ので、まずは DVD-R に焼いて起動させてみた。
俺ちゃんは母艦である Arch Linux から Xfburn 0.7.0 を使って焼いたが、別になんでもいい。Windows からでも MacOS X からでも、何のソフトを使っても焼けるだろう。普通の ISOイメージ なので。
メディアがもったいないなら、 DVD-RW を使ったり、仮想環境上などで起動させてやっても良いと思う。
公式では USBメモリーを 2 つ使ってやる方法が紹介されている。USBメモリーが家に余っている人はこれでもいいだろう。…が、俺ちゃんの家には 1 つしか余ってなかった。あと DVD を保存しておきたかった。
● DVD起動できるように BIOS/UEFI を設定する
予め PC に焼いた DVD-R を挿れておくこと。
その後キーボードの F2 キーを押しながら PC を再起動し、 BIOS/UEFI の設定画面で以下を選択する。
- セキュアブート: OFF
- 高速スタートアップ(あれば)3 : OFF
- レガシー互換モード or CSMサポート4: ON
- 起動順位: DVDドライブが一番上に来るように変更。二番目にUSBメモリー。
HDD/SSD は三番目以降になるようにする。
しかし、USBメモリーについては対応メディアを差し込んでない現在では表示されないかもしれない。その場合はUSBメモリーを作ってから、再び設定する必要がある。
要点は以上だが、
このあたりは機種によって項目名や設定画面が様々だ。中には設定不能な機種などもある。自分で説明書を見るなどして調べてほしい。
● [ライブUSB生成] 機能を使ってUSBメモリーを作る
DVD から起動したら、保存以外のデフォルトの全機能が使える。
ひと通り、お試しで使ってみると良い。
ここで気に入らなければ、以下の記事は読まなくていい。
USBメモリーを作るのも止めておく。
使用感が良かったら、起動できるUSBメモリー("ライブUSBメモリー"という)作成に移る。
- USBメモリーは挿しておく。これの中身はすべて消えるので注意
- 左上の スピーカーみたいなアイコン (WhiskerMenu) をタップして「システム」>「ライブUSB生成」を選択する
- パスワードを尋ねられるので toor を入力して OK ボタンを押す
- 「起動可能ライブUSB作成」ダイアログが出る
- ソースISOにはダウンロードしてきたISOファイルを指定する
- ターゲットUSB には /dev/sdb を指定する(HDDなどが一台、USBメモリーが1個しか挿さっていない場合)
- パーティションの種類には「EFI用」を選択する
- オプションの項目はそのままでよい。第一パーティションがISOとほぼ同じくらいのサイズ。第二パーティションがそれ以外全部でフォーマットされる。気に入らないなら、後から GParted などで直せばいい
- OK ボタンを押せば作成開始!
完了して USBメモリー が作成できたら、今度は保存領域を作る。
素敵な ムジョルニア(ハンマー 🔨) のアイコンの Thunar ファイルマネージャーなどを起動して USBメモリー の第二パーティション(おそらく sdb2 )をマウントして開く。
そこに Extern, Persist, Storage の 3 つのディレクトリを作成する。
それぞれの概要は以下のようになる。
- 📂 Extern ディレクトリ
- Porteusモジュール(.xzm ファイル)を入れるディレクトリ。 Porteusモジュール とは Porteus 系における追加パッケージのことで、専用の パッケージマネージャーからインストーしたソフトウェアをここに入れておくこと で OS が起動時に自動的にロードする("アクティブ化"と呼ぶ)ようになる。 中身は Squash ファイルシステム そのもので、圧縮されたパッケージのファイル が 1 つのアーカイブ・ファイルに格納されており、ループバック・デバイスと Overlay ファイルシステムを利用することで追加可能にしている模様。
- 📂 Persist ディレクトリ
- ユーザーが追加・更新した差分のファイル群が置かれるディレクトリ。 削除については、パーミッション 0000 でサイズ 0 のファイルが置かれる模様。
- 📂 Storage ディレクトリ
- パッケージマネージャーの作業領域や保管領域。 後述する『ArchLinux簡易パッケージ管理コマンド』を使ってパッケージを追加する場合に、一時的な ファイルの保存や、変換したPorteusモジュール(.xzmファイル)が置かれる場所。
英語版でも使うつもりなら、加えて Extern_en も作っておく。
次に、第1 パーティション (たぶん、sdb1)の porteus.cfg に書かれた UUID を変更する。公式に詳しく解説してあるので、ここでは手動のやり方は割愛させていただく。替わりに、自動で手っ取り早くやる方法を載せておく。
ターミナルを起動して、以下のように打つ。
(事前に sdb1 で本当にあっているのかは重々確認すること! 特に HDD/SDD/USBメモリをたくさん付けてデラックスなデスクトップ PC を使っている、うらやましい限りのおまえ。お前さんのことだよ!)
$ cd /mnt/sdb1/boot/syslinux
$ sudo sed --in-place=.bak -r -e 's/^(APPEND retry copy2ram)/#\1/' -e 's/^#(APPEND retry copy2ram.*UUID)/\1/' porteus.cfg
$ sudo sed --in-place -re "s|\\\$uuid/|$(lsblk -o UUID /dev/sdb2 | sed -n 2p)/|g" porteus.cfg
ここでパスワードを聞かれるが aporaudio と入力する。
以降、 sudo コマンドを使う場合は全て同じだ。
なお、初回の sudo 利用時には「ちゃんと講習受けましたよね?」みたいな俺ちゃんのズッ友 スパイディ を想起するメッセージが表示されるので 深く心に刻みこむ こと。
完了したら、完成だ。
【補足】
なお、万一、これでダメそうだったらバックアップを取ってあるので、以下のコマンドで編集前の初期状態に戻すことができるぞ。
$ sudo mv porteus.cfg.bak porteus.cfg
戻したら、今度は手動で編集してみよう。 vim が使える達人はそれで。使えない人は GUI のテキストエディタ leafpad で編集しよう。以下のようにコマンドを打つ。
$ sudo leafpad porteus.cfg
● USBメモリーで再起動
DVD-R は抜いておく。
USBメモリーは挿さった状態にしておく。
これで F2 を押しながら PC を再起動して再び BIOS/UEFI の設定画面を出す。あとは起動順位を調整して USBメモリー が一番上か DVDドライブ の次、二番目に来るようにする。(既になっているなら、そのままで良い)
また、今度は UEFI にちゃんと対応できているはずなので BIOS/UEFI の「レガシー互換性モード or CSM サポート」については OFF にしてしまっても良い。
うまくいけば DVD-R で起動したときと同じ画面が表示され、起動できるはずだ。 軽く使ってみて電源断までやってから再起動してみるとよい。
操作した内容がちゃんと保持されているか確認しよう。
なお、起動時には次のような syslinux のメニューが表示される。
- xfce
通常の起動。Xfce4 の日本語化されたデスクトップ環境が表示される。 - xfce_en
英語版起動。上記と同様だが、英語版。 - PLoP BootManager
Plop ブート マネージャーを実行。
そのままでは USB ポートを使ったメディアからは起動できない仕様にしてある F**k'in (おっと!下品ですまん) メーカーカスタム BIOS を使用してしまっている機種向け。起動可能なメディア(CD, DVD, フロッピーディスクなど)とこのブートマネージャーを組み合わせることで起動させることができる。
「DVD の方では起動できたが、USBメモリーからは起動できなかった」という場合に、DVD で起動してこのメニューを選択すれば、もしかしたら起動できるかもしれない。俺ちゃんはすんなり起動できたので試していない。 - Boot from the first hd
一番目の HDD から起動を試みる。例えば内蔵HDD に Windows が入っているなら それが起動する。たぶん。
■ 基本的な設定
日本語化の設定については最初からされている。
日本語入力についても Fcitx + Mozc の日本語IME が使用できる。ただし、Fcitx はなぜか ver.4系 だが。
ネットワークへの接続は NetworkManager が担っている。有線LAN なら何もしなくとも接続される。
無線LAN の場合は画面右上のネットワーク接続アイコンから「利用可能なネットワーク」で接続が可能だ。SSID を隠蔽(ステルス)にしている場合は「非表示 Wi-Fi ネットワークに接続する」を選ぶ。SSID、パスワードなどを適宜入力すれば完了だ。
あと、 DVD 起動時に気づいたと思うが、デフォルトでは日本にいるみんなからすると、時間が 9時間進んだ状態で起動すると思う。
「やべ!俺ちゃん未来に来ちゃった!?」 とか一瞬思ってしまうが、違う。タイムリープしてないので安心せよ。
これは PC の 内蔵時計(RTC) が 世界協定時間(UTC)であると仮定して起動してしまうため。一般的な Windows がプリインストールされた PC では、RTC はローカルタイム(つまり日本標準時)がセットされている。これと、いわゆるタイムゾーンの設定が正しくされていないので、時間がずれてしまっているのだ。起動してから timedatectl コマンドを使って、正しい日時をセットする。例えば、以下のように。
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo timedatectl set-local-rtc yes
$ sudo timedatectl set-time "`date +'%Y-%m-%d %H:%M:%S' -d 'now -9 hours'`"
代わりにNTPサーバーと同期するように設定しても良い。
以下に例だけ簡潔に示す。
$ sudo -E vim /etc/systemd/timesyncd.conf
$ sudo grep -v '^#' /etc/systemd/timesyncd.conf
[Time]
NTP=ntp.nict.jp
FallbackNTP=ntp.u-tokyo.ac.jp ntp.jst.mfeed.ad.jp
PollIntervalMinSec=1d
PollIntervalMaxSec=7d
ConnectionRetrySec=60
SaveIntervalSec=infinity
$ sudo timedatectl set-ntp true
$ timedatectl status
■ パッケージマネージャーの使用
● デフォルトでインストールされているソフトウェア
APoraudio には最初から以下のようなソフトウェアが入っている。
音楽系が強めだが、なかなかセンスの良いセレクト。
ただ、ブラウザやファイルマネージャーなどは無駄にかぶっているソフトも多い。
不要なら、簡単にアンインストールすることもできるので安心だ。
◆ インターネット
Chromium Webブラウザ。Google Chrome の OSS版。
Firefox Webブラウザ。ver.107.0 日本語版。
NetSurf Webブラウザ。
HexChat チャットクライアント。
Transmission BitTorrent を用いたダウンローダー。
◆ システム
Systemd 新しい基幹システム。
XFCE4デスクトップ 軽量かつ高機能なデスクトップ。
Xfwm4 ウィンドウマネージャー。
Thunar ファイルマネージャー。
PCManFM ファイルマネージャー。
emelFM2 2ペインのファイルマネージャー。
MidnightCommander TUIファイルマネージャー。
NetworkManager ネットワーク接続の管理。
Clipman クリップボードマネージャー。
hardinfo システム情報とベンチマーク。
smbclient Windwosとのファイル共有。
Fcitx-Mozc 多言語入力IME と Google日本語入力の OSS版。
cronie タスクスケジューラー。クーロンの亜種・後継版。
GParted GUI パーティション・エディター。
htop TUIのタスクマネージャー。
XFCE4-terminal タブ型ターミナル。
UXTerm Unicode対応版Xterm。
◆ アクセサリ
GCalculator 電卓。16進数計算なども可能な高機能計算機。
Notes デスクトップ付箋。
◆ 音楽
DeadBeef 音楽プレーヤー。
Audacious 音楽プレーヤー。
MPD 音楽プレーヤー。サービスとして動作。
PipeWire 低遅延オーディオサーバー。
KonaHQSS Kona Linux 由来の高音質サウンドシステム。
◆ グラフィックス
GPicView イメージビューワー。各種画像の表示。
MtPaint 軽量の画像編集。いわゆる、お絵かきソフト。
GIMP 重量級の画像編集ソフト。a.k.a. ポスト Photoshop。
◆ マルチメディア
VLC メディアプレーヤー。
MPV メディアプレーヤー。
Xfburn CD-R/DVD-R 焼き付けソフト。
◆ オフィス
AbiWord ワープロ。
GnuMeric 表計算。
ePDFViewer PDFビューワー。デフォでは日本語未対応。
◆ テキストエディタ
LeafPad 簡易テキストエディタ。
Geany 統合IDEタイプのGUIテキストエディタ。
vim-8.2 TUI高機能エディタ。ただし、かなり削ってある超簡易版。
◆ プログラミング
Devel GCC, AutoMake, AutoConf, Bison/Flex など開発環境一式。
Python3 人気のある汎用プログラミング・スクリプト言語。
zenity/yad スクリプト言語用GUIダイアログ作成キット。
あとはゲームがいくつか。
他にも色々入っているが、筆者はあまり馴染みがないので割愛する。
なお、初期状態だと Xfburn などはエラーが出てまともに使えなかったりする。よく使うアプリケーションはちゃんと使えるか、チェックしておくとよいだろう。
● その他のソフトウェアを追加したい場合
上記で満足できない場合、 APorteus 由来のパッケージマネージャー・プログラムを利用して追加のソフトウェアをインストールすることができる。
これには次の 2 つの方法がある。
(1) 追加パッケージ取得
(2) ArchLinux簡易パッケージ管理コマンド
以下それぞれをかんたんに解説しよう。
(1) 追加パッケージ取得
いくつかの有名なパッケージの中から選んで追加インストールする方法。
下記のようなソフトウェアがある。
- ブラウザ
- Firefox
- SeaMonky
- PaleMoon
- Google-Chrome
- Opera
- SlimJet
- Vivaldi
- Brave
- ネットワーク
- Thunderbird
- Discord
- Google-Earth
- Skype64
- Zoom
- フォント
- 台湾(中国語)フォント。何種類かあるが割愛。
- その他
- 無し
各ソフトの公式ページから最新版が取ってこられて、変換されるらしい。
(Arch っぽいアイコンだが、ArchLinux のパッケージではない。むしろ Debian)
これの使い方は簡単で、作業用ファイルが作られるディレクトリを指定して、あとは好きなパッケージを選んで OK ボタンを押すだけ。
Zoom で試したが https://cdn.zoom.us/ から Debian パッケージがダウンロードされ一度ディレクトリに展開されてバイナリをストリップし squashfs にまとめられて xzmファイルにしているらしかった。
(ちなみに、ストリップするのにかなり時間がかかっていた)
完成したファイルは 004-zoom_adm64.xzm 。
作業中にできた中間ファイルはすべて削除され、これだけが指定したディレクトリに残る。あとはこれを /mnt/sdb2/Extern なり、 /mnt/sdb1/porteus/modules なりに移動させて再起動すればインストールできる。
Firefox などのブラウザを最新版に差し替えたいときは /mnt/sdb1/porteus/modulesに移動して、そこに元々あった旧版のブラウザは削除してしまうとよいだろう。DVD を作ってあるなら、いつでもそこからコピーしてくれば復旧できるし。
簡単なのだが、インストールできるパッケージが極めて少ないのが難点。
(2) ArchLinux簡易パッケージ管理コマンド
こちらは ArchLinux のリポジトリからパッケージを取得してきて Porteus モジュール形式(.xzm ファイル)に変換する機能を持つパッケージマネージャーだ。
AUR と multilib は使えないものの、 Arch Linux のほとんどのパッケージをダウンロードして利用することができる。
といっても "簡易" とあるように、他のディストリビューションで言う pacman, apt, synaptics, dnf のようなバイナリの本格的なパッケージマネージャとはかなり異なる。
CUI で動作するバックエンド・スクリプトを、 gtk-dialog で作った GUI からも操作できるようにラッピングしただけといった感じ。
バックエンドは選べるようだが、主に archSPM というスクリプト群が担う。
これらは APoraudio のものというより、元となった APorteus のものだ。
やや複雑でわかりにくいと感じたので、次項で これの使い方を詳しく解説してゆこう。
● ArchLinux簡易パッケージ管理コマンドの使用方法
起動すると、パスなどを指定する設定画面が表示される。
分かる範囲で、各項目を解説しておく。
[収容場所]
取得したパッケージの保管場所。また、それから生成した Porteusモジュール
が置かれる場所。生成中の一時ファイルもここの下に作られる。
通常は前項で作っておいた /mnt/sdb2/Storage ディレクトリを指定する。
(デフォルト)
[サイト]
ArchLinux のパッケージを取得するのに使うリポジトリを指定する。
ここでは地域は "Japan" のまま。
ミラーサイトは信頼と実績の北陸先端科学技術大学の jaist を指定した。
[実行場所]
これはよくわからないが archSPM コマンドを実行する場所という意味っぽい。
初期状態は /home/aporaudio だが、最後に結果が表示されるときに、ここが
参照されているようなので /mnt/sdb2/Storage とかのほうが良いだろう。
ls してるだけみたいなので、どうでもいいと言えばいいけど。
[コマンド]
バックエンドのコマンドを選択できる。
初期状態のまま archSPM にしておいた。
これで OK ボタンを押すと、次の画面になる。
これは先ほど選択したバックエンドのコマンドに応じて画面が変わるようだ。
デフォルトの archSPM ではこのようになる。
特にここでは項目は変更しないでそのままとした。
オプション項目について、分かる範囲で解説しておこう。
- 共通ライブラリ収容基本モジュール番号群
- 最も基本的な Porteus の根幹をなしているモジュールについての番号を指す。 /mnt/sdb1/porteus/base/ を見てもらうと番号が付いたモジュールが格納され ているのに気づくだろう。これのことらしい。 おそらく 000 はカーネル。001 は OS の基幹部分。002 は X-Window System。 003 は XFCE。あと 004 はアプリケーション。005 は ローカライゼーション つまり日本語化関連となっているようだ(たぶん)。 特に変更する必要はない。そのままでよい。
- 基本モジュール収容ディレクトリ
- /mnt/live/memory/images がデフォルトのようだ。これは基本モジュール群 や Extern に置いた xzm ファイルがループバック・デバイスとしてマウント されるのだが、そのマウントポイントの大元となるディレクトリ。 こちらもそのままでよい。
OK ボタンを押すと、次の画面に遷移する。
右側の「実行手順」に使い方が書いてある。
右下、最下段の方の「?」ボタンを押すといつでもこの画面が表示される。
要約すると、使い方は以下のようになる。
autoR は再帰的に依存関係を解決するオプション。通常、依存関係が解決されない方が嬉しいといったことは ほぼないと思うので、これ一択でよいだろう。
【注意】…と、思っていたのだが、
autoR だと無駄に不要なライブラリまでダウンロードされる問題があるようだ。
なので、実際には使い分ける必要がある。結論としては基本的に auto をチェックして、それでダメな場合には autoR 。あきらかに依存パッケージがない場合や、依存関係を自動的に解決できていない時などは どちらもチェックを付けない、というのが良さそうだった。
これについて詳細は次節「■ モジュール追加の問題点」で詳しく解説する。
「ダウンロード」ボタンを押すとダウンロードが開始し、依存関係にあるパッケージと共にダウンロードされる。その後 Porteusモジュール形式(.xzm) に変換される。変換されたモジュールは [収容場所] で指定したディレクトリに置かれる。
[収容場所] に Storage を指定している場合は、完成したモジュールファイル(xzm) を Extern ディレクトリに移しておこう。
例えば、ターミナルでやるには以下のようにすればよい。
$ cd /mnt/sdb2/Extern
$ sudo mv ../Storage/*.xzm ./
再起動後に自動的に読み込まれ、使えるようになる。5
なお、コピー後には Storage ディレクトリ直下の xzm ファイルやディレクトリについてはすべて削除してしまっても良い。なくても動く。
だが、続けて他のパッケージもインストールしたいなら、残しておいてもいいだろう。特によく利用されているライブラリなどは他のパッケージを入れるときにも依存関係で再びダウンロードされることになるかもしれないので、残しておくほうが無難。無駄なネットワークトラフィックだけを避けたいなら、 Arch Linux のパッケージをキャッシュしている APKG_CACHE ディレクトリのファイルだけ残しておくとよいだろう。
● モジュールは併合も可能
なお、依存関係にあるモジュールがいくつもある場合、それらを含めたひとつのファイルに併合することもできる。これにはまず、左上の "all" を押して "MODULE" に変更する。
すると左側に今まで入手したすべてのパッケージが一覧表示される。
この中から、依存関係を含めて併合したいパッケージを 1 つ選ぶ。
そして下の "併合" ボタンを押す。
(その前に auto か autoR にチェックが付いていることを確認すること)
これで依存関係モジュールが再帰的に展開されて 1つのファイルにまとめられる。6 この際に必要最低限と思われる構成に変えられるらしい。即ちドキュメント類や、不要なライブラリについても削られるようだ。7
例えば、俺ちゃんはお気に入りのコマンド grc をダウンロードしてきたものを併合してみた。
このように併合後のファイルが grc/grc.xzm として新たに作られる。
これだけを Extern ディレクトリに移せば、動作する。
● 他のボタンは何?
その他のボタンの簡単な用途を分かる範囲で紹介しておく。
色々誤解があるかもしれないので、参考程度にしてほしい。
■ モジュール追加の問題点
モジュールを Extern に置いて再起動しても、エラーが発生してしまい、うまく読み込めないときがある。しかもそうなるパターンがいくつかある。
これについてここでは解説してゆく。
● OverlayFS マウントのエラー
Extern に置いたモジュールは Porteus, APorteus, APoraudio の基本モジュール群と共に Overlay ファイルシステムとしてシステム起動時に読み込まれて rootOV という名前で / にマウントされる。
しかし、このとき、 mount コマンドが次のようなエラーを吐いて止まる。
mount: mounting rootOV on /union failed: Invalid argument
どうやらこれは mount コマンドのオプションとして、上述の基本モジュール群 + Extern へと置いたモジュール のループバック・デバイスが指定されているのだが、それが長すぎるために起きているらしい。正常に起動した際に mount コマンドを打ってみると、その長さに驚くだろう。
※ 併合モジュールとして作った grc.xzm だけを Extern に置き実行した時の例。なんと -o オプションの引数だけで 4122 バイトもある!
Extern に置いたモジュールの名前が短く、1 つしかない場合はエラーにならないが、複数置いたり、名前が長かったりするとエラーになる。
いくつか試してみた結果を載せておく。
○ Extern/grc.xzm
○ Extern/tree.xzm
× Extern/grc.xzm, Extern/tree.xzm
× Extern/w3m-0.5.3.git20230713_1-x86_64-1.xzm
× Extern/ttf-mplus-nerd-3.2.0-noarch-1.xzm
これに関しては APoraudio のモジュール群をひとつに併合することによって一応の解決をした。少し長くなるので後日別の記事で紹介する。
● 依存ライブラリの参照エラー その1
名前が短くても、別のエラーが出る場合がある。
例えば w3m を併合したモジュール w3m.xzm のみを置いたときには以下のようなエラーになってしまった。
/usr/lib/systemd: /lib/libc.so.6: version `GLIBC_2.38' not found (required by /lib/libaudit.so.1)
これは libaudit.so.1 が参照している libc.so.6 のバージョンが、期待している 2.38 ではなく、 2.36 であるため。
libc のような基幹モジュールは通常 /mnt/sdb1/porteus/base/ 以下のモジュールにまとめられているが、これらのバージョンが古いのだ。
これを書いている現在は 2024年4月であるが、APoraudio 1.1.2 が作られたのは 2023年5月なので一年くらいの差がある。この間に更新されたということだろう。
しかし、実は ここでの問題はそっちではない。
参照元 libaudit.so.1 の方にある。
このライブラリは audit-4.0.1-x86_64-2 パッケージとして w3m などと一緒にダウンロードされて xzm に変換されたもの。(更にそれを併合している)
しかし、これ自体、全く同じバージョンが既にあるため、本来はダウンロードする必要がないパッケージなのだ。
audit はセキュリティ監査モジュール。基幹モジュールの一つであり、 Arch Linux では多くのパッケージがこれに潜在的に依存している。当然 APorteus の基幹モジュールにも組み込まれており、 /mnt/sdb1/porteus/base/001-z.core.xzm に含まれている。しかし、なぜか autoR を指定してダウンロードしようとすると、このパッケージが何度もインストールされようとする。
【後日追記】
後日なんとなくデバッグしてみた。結果、 auto, autoR を使用していると、 ldd を使用してバイナリに埋め込まれた参照を調べて必要なライブラリなどを判断しているらしいことがわかった。
しかし、それなら既にある /lib/libaudit.so.1.0.0 を無視し audit-4.0.1-x86_64-2パッケージを再インストールした理由がよくわからない。
おそらく、このパッケージを必要最低限と思われるものに削ったときに、今回必要ななんらかのライブラリなどのファイルが欠落してしまい、新たに入れるパッケージではそれが必要だったために再度インストールされたのかもしれない。
その場合も既にある /lib/libaudit.so.1.0.0 を再度パッケージに含める必要は全くないのだが、なぜか含めてしまっている。このため、新しい方の libaudit.so.1.0.0では参照先の libc.so.6 のバージョンが上がってしまっていてエラーを引き起こすのだと思われる。何かがバグっている。
● 依存ライブラリの参照エラー その2
上述の問題は audit の xzm ファイルを Extern に置かずに、起動させればとりあえずは起動時のエラー停止は解消する。
しかし、起動後に実際にそのコマンドを使おうとすると、同様の参照エラー問題が起きてしまう。
aporaudio@porteus:~$ w3m
w3m: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by w3m)
w3m: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by /usr/lib/libgc.so.1)
aporaudio@porteus:~$ whois yahoo.com
whois: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by whois)
aporaudio@porteus:~$ vim
vim: /usr/lib/libc.so.6: version `GLIBC_2.38' not found (required by vim)
vim: /usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by vim)
aporaudio@porteus:~$
これは当然ながら audit 以外のパッケージについても同様に起きうる。
C言語で組まれたものは全部 libc.so.6 にリンクしており、これらが参照しているのが最新版のリポジトリでは(これを執筆時の2024/04時点で) ver.2.38 だからである。
これを考慮すると、やはり glibc パッケージを最新版に差し替えるしか無い。とりあえず、パッケージマネージャーで(auto, autoR のチェックを外して)単体で glibc をダウンロードして xzm モジュールを作成して、 Extern ディレクトリに放り込めば動作するようにはなる。
…が、本来は基幹モジュールの方を最新版に更新するほうがよいだろう。
ただし、
それは glibc のような基幹モジュールが更新される度に行わなければならない。
これは大きな問題である。8
昔のバージョンを保存してくれている Arch Linux Archive というサイトがあるのだが、そこのある時点でのスナップショットを代わりにリポジトリとして使うくらいしか、良さそうな解決方法が思い浮かばない…。
やはりポリシーの違う、他のディストリビューションのパッケージを流用するのが土台無理な話なのかもしれない。
なお、この種のエラーは libc だけではなく libc++ の方でも起こる。
以下のようなエラーになる。
foo: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by foo)
こちらも gcc-libs パッケージをインストールすることで解決する。
● コロンが入ったパッケージ名のエラー
さらに別のエラーが起きることもある。
例えば、 bind-9.18.25-x86_64-1 パッケージを併合せずに Extern に置いたときだが、このソフトウェアの依存関係には jemalloc-1:5.3.0-x86_64-3 というファイル名にコロン(:) が入ってしまっている、よろしくないパッケージがある。
これが問題を引き起こすようで、以下のようなメッセージが表示され、やはり起動途中で止まってしまう。
^ Cannot read jemalloc-1:5.3.0-x86_64-3.xzm - corrupted modules?
モジュールがぶっ壊れているんじゃないかとのメッセージだが、違う。
これはおそらく mount コマンドのオプションとして xzm ファイルから作成したループバック・デバイスを指定しているのだが、その際に : が区切り名を表すために起きている。
ctags, minizip なども同じく : がパッケージファイル名に含まれるので問題を起こす。
■ その他の問題点
● 無線LANがぶつぶつ切れる
無線LANが度々、疎通が取れなくなったり速度が低下する症状がみられた。
同じ WAN でも、有線LAN を通すと安定して通信できることから、無線の不具合であることは疑いようがない。
ウチの 某N社製ルーター の出来が最悪なので、そのせいもあるのだが…。
それでも普段使いしている Arch Linux に比べて落ちる率が異常に高いので調べてみた。
すると、まず MTU の値が何故か 1280 に設定されていた。
以下のファイルに書いてあるので、WAN側が光回線の場合は 1500、SIM や Wi-MAX などの場合には 1440 などに設定し直すとよいだろう。
/etc/aporaudio/mtu
再起動せずに すぐに手動でやりたいなら以下。ただし、こちらは一時的な変更。
$ sudo ip link set dev wlan0 mtr 1500 qlen 1000
また、dmesg を見ると以下のようなエラーメッセージが出てしまっていた。
platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
cfg80211: failed to load regulatory.db
これは 無線LAN に対する各国の規制内容をデータベース化したファイルが見つからず、読み込めなかったというエラーである。
ご存知のように、無線は好き勝手に使用できるわけではなく、使用できる周波数帯や強度、利用方法などが電波法で定められている。これは国や地域により異なる。
それをまとめたのがこの Central Regulatory Domain Database (Linuxでのファイル名は requlatory.db) であって、これがないと規制のある国では 無線LAN を正しく運用する事ができないのだ。
Arch Linux では wireless-regdb パッケージがこれにあたる。
なお、古いカーネルだと CRDA (Central Regulatory Domain Agent) というパッケージも必要だった。これは上記データベースを読み込んて扱うためのエージェントである。だが、最近のカーネルなら自力で読み込むことができるため、不要になっている。
wireless-regdb パッケージをダウンロードしてきて Extra に入れれば解決する。が、最新バージョンではなく、使用しているカーネルのバージョンに合わせたバージョンをダウンロードしてくる必要があった。
これについても Extern に入れるより、基幹モジュールに入れてしまうほうが良い気がする。規制がない国では不要なのでオプション扱いになっているのかもしれないが…。あるいは、想定がラップトップでの使用ではなく、有線接続されたデスクトップなのかもしれないが…。
● パッケージマネージャーが毎回「更新」が必要で、しかも遅い
ArchLinux簡易パッケージ管理コマンドを立ち上げた後すぐに使えないのが不満。初めに必ず「更新」ボタンを押す必要がある。
目的のパッケージを検索して「ダウンロード」ボタンをいきなり押しても動作しない。
更新すること自体はいいのだが、例えば パッケージA を ダウンロード→インストールした後、一度終了して、数分も経たないうちにもう一度起動して パッケージB をダウンロードしようとする時にまで「更新」が必要になる。
しかも それがかなり遅い。
「更新」ボタンを押すと、まず ArchLinux のパッケージ情報を取得してくるのだが、これについては更新されていなければ無駄に重複ダウンロードしたりしないようにはできている模様だ。しかし、その後の工程はスキップされずに再度実行されてしまう。
具体的には「lib検索用とkey検索用のデータベースを生成します」という表示の工程。上記のパッケージ情報を元に archextra--spm--x86_64-1.xzm ファイルを作るという工程なのだが、これにすごい時間がかかる。
毎回、これを行わなければならない理由がよくわからないが…。
● activate/deactivate コマンドが使えない
Porteus には Extra ディレクトリ(というか、changes チートコードで指定するディレクトリ)に拡張モジュールを配置するやり方以外にも、モジュールを オン・ザ・フライ(即時的)で使う方法がある。それが activate/deactivate コマンドだ。これらは /usr/local/bin にあるにはあるのだが、なぜか無効化されてしまっている。
Activate という名前に変更されてしまっており activate はそれを指すシンボリックリンクとなっている。が、なぜかブートシーケンス中に rm コマンドでこれを削除して使えなくしているようだ。
無理やり使うには、
# ln -s /usr/local/bin/Activate /usr/local/bin/activate
としてシンボリックリンクを再生成すれば使える。
しかし、なぜこんな便利なコマンドが無効化されているのか?かなり疑問だ。
【後日追記】
どうやらこれは Overlayファイルシステム を使っているためらしい。Poruteus では AuFS を使っていて、動的にレイヤーを追加できるが OverlayFS ではそれができない。代わりにシンボリックリンクを使うことで、擬似的に追加機能を実装しているが、追加したファイルによっては、 deactivate の際などに参照の問題が生じることがあるようだ。おそらく、Porteus ユーザーが Poruteus の機能と同等と期待して実行すると、それとは異なり不完全なので使えなくしてあるということなのだと思う。
● ストレージデバイスの認識が一定しない
APoraudio で Thunar ファイルマネージャーなどを開くと、HDD や SSD, USBメモリーといったストレージデバイスが自動的にマウントされているのが確認できる。
どうやら initrd と udev rules を用いて自動マウントしているようだが、なぜかこれが正常にマウントされていないことがあるようだ。
しかも、その状況は起動ごとに異なる。
例えば、 /dev/sdb1 〜 3 にパーティションを分割した USBメモリー 上に APoraudioをインストールして /dev/sda1 〜 7 までのパーティションを分割したHDDを搭載した PC に 挿して起動した場合だが、 Thunar 上ですべてのパーティションのアイコンが出ない。
まず UEFI が使用する GPT パーティションである sdb1 や sda1 が出ない。これはまだわかるのだが、他の ext4, vfat, fat32, ntfs パーティションも出る場合と出ない場合があり、まちまちな状態になってしまっているのだ。
しかし、例えば sdb7 のアイコンが出ていない場合でも、ターミナルから /mnt/sdb7などを確認するとちゃんとマウントされていたりする。不思議な挙動だ。
initrd では起動時にデバイスの接続状況が確認され、その状況に応じて /etc/fstab が自動的に書き換えられ、自動的にマウントされるという工程を取るようだ。
さらに initrd の後を引き継いで systemd + udev が起動した際に udev rules の方に書かれたスクリプトによって /etc/fstab の内容が書き換えられ、アイコンの変更や表示を指定している模様だ。
このあたりを踏み込んで Hack した工程を後日、別記事で紹介しようと思う。
■ 問題が多発で気力減退
…というわけで、どうも まだバグフィックスが大量に必要なようだ。
それも問題点は APoraudio というよりは、その元となっている APorteus にあるように思える。そちらに関しては俺ちゃんは全然よく知らないのだが。
現時点では、デフォルトのままではパッケージを追加して使うのはかなり難しいと言わざるを得ないだろう。
少なくとも素人向きではない。
…だが、持ち運べて RAM 上で動作する Xfce 環境は魅力的で、どうにも惜しいのでちょっと暇を見ていじってみている。その結果、そこそこ使えるようになったので、近く追っかけ記事として公開しようと思っている。
以上。
-
この点、後でよく考えると APorteus か Porteus でも良かった気もする。
APoruteus は上述の (1) 〜 (2), Porteus は (1) 〜 (3) を除けば、似たようなメリットだからだ。それらも後々よく考えてみるとそんなにアドバンテージではない。結局、格好良くしたいなら壁紙や外観を変えればいいし、日本語化もちょっと手間だろうけどできるし、 Arch のパッケージを使うことには後述するがパッケージの賞味期限の問題が発生するし…。あと、使用者やコミュニティが少なく、かつ公式が特異なので、俺ちゃん的には問題解決の助けにはあまりならなかったし。結局 Arch Linux Wiki と英語の Poruteus 公式フォーラムの方ばかりが役に立った。 ↩ -
別に USB メモリーにこだわらなくとも、HDD や SSD でもいいが。
というか、 サスペンド(スリープ) や ハイバネーション(休止状態) 機能を使いたいなら、内臓の HDD や SSD にしておいたほうがいいかもしれない。マシンによるが USB インターフェイスからの起動自体が、サスペンドやハイバネーションからの復帰時、再接続に時間を要する場合が多く、上手く 認識→復帰 できないことが多いためだ。 ↩ -
高速スタートアップ
BIOS/UEFI とは別に Windows はデフォルトで「高速スタートアップ」という いわゆるハイバネーション(休止状態)をシャットダウン代わりにしている。 Linux から読み書き可能な形で Windows のドライブを使うにはこの機能をオフにしておく必要がある。 GUI, CUI によるやり方があるので各自調べてほしい。例えば CUI だと、『Windows PowerShell(管理者)』を起動 -> powercfg /hibernate off と入力してから、普通にシャットダウンすればよい。 ↩ -
レガシー互換モード or CSMサポート
本当は作った起動 DVD は UEFI に対応しているようなので、三番目のこの項目は ON にしなくてもいいはずなんだが、なぜか俺ちゃんの 機種/環境 では認識しなかった。 ↩ -
使えるようになる…はず、なのだが、使えないことが多い。
というか、再起動時に途中で止まってしまう。致命的なバグがあるようだ。
これに関しては次節「■ モジュール追加の問題点」で説明する。 ↩ -
だが、なぜかちゃんと全部併合されないことがあるようだ。
俺ちゃんは vim-9.2 を併合しようとしたのだが、なぜか依存パッケージの vim-runtime や audit は併合されるものの、肝心の vim-9.2 がまったく含まれていない xzm ファイルが生成されてしまった。こちらもなにかバグがあるのかもしれないし、ただ単に俺ちゃんの使い方が悪いのかもしれない。しかし、どうも archSPM 関連は情報が少なく、本家の Porteus/APorteus でも掲示板で簡単に説明されているだけのようだった。ソースを追って見るしか無いのかもしれない。あるいは、手動でマージするか。
▶ 後日追記:追ってみて解決した。長くなるので別記事として後日追加しようと思う。 ↩ -
この際、 README や ライセンスの明記書類なども削られてしまう。。
この動作はライセンス違反にならないのか、かなり怪しい。再頒布には当たらないが…。よって企業ではこのディストリビューションは利用しない方が無難と言っていいだろう。これが Porteus, APoruteus でも同様なら、それらについても同じことが言えそうだが、どうなっているのか疑問。 Porteus は空港とか駅にある KIOSK 端末採用のものもあるみたいだし。。違反してるはずはないとは思うが。 ↩ -
このようなバージョン違いが起きるのは、ある意味宿命と行っていいだろう。
原因の根底にあるのは Arch Linux パッケージと ライブUSB というある程度固定したバージョンを前提に作られたディストリビューションとの相性の悪さにあるのだと思う。 Arch Linux はロングリリースを採用しており、リポジトリは常に最新のパッケージが置かれる状況にあるのだが、これは別の言い方をすれば、すぐに過去のバージョンはリポジトリから削除されてしまい、いつまでも過去のバージョンを当てにしている(つまり更新の薄い)ソフトウェアがあった場合にはすぐ互換性が失われてしまう恐れが高いことを意味している。
APoraudio 1.1.2 について言えば 2022-11-28 頃に作られた APorteus を元としているようで、その時点では最新だった glibc 2.36 も俺ちゃんが本稿を書いている 2024/04 の時点では最新は glibc 2.39-1 になってしまっているのだ。そしてリポジトリにあるソフトウェアのほとんどが、その最新バージョンを期待するようになってしまっている。つまり、audit や glibc 依存のソフトウェアは、 w3m に限らず、そのままだと全て参照エラーを起こしてしまうだろう。 ↩