Arch Linux ArmにUPNPメディアレンダラーを立てるのこと
以前、Raspberry Pi上にUPNPメディアレンダラーを立てる記事を書いた。
nagamitsu1976.hatenadiary.jp
これと同じことをArch Linux Armでやった時、
gmrender-resurrectのビルドに多少手間取ったので記録を残しておく。
GMRenderのビルド
クローン
GitHubからソースを取得する。
https://github.com/hzeller/gmrender-resurrect.git
依存ライブラリのインストール
Arch Linux AURにgmrender-resurrect-gitとして登録されていたので、
依存関係はここを見て確認した。
https://aur.archlinux.org/packages/gmrender-resurrect-git
見たところ、必要なパッケージはlibupnp、gst-plugin-good, gst-plugin-baseだったので、
これらをインストールした。
$ pacman -S libupnp # vlcをインストールしたから入ってた(多分) $ pacman -S gst-plugins-good $ pacman -S gst-plugins-base
ビルド
Configure, make, make installを実行。
$ ./autogen.sh $ ./configure $ make $ make install
テスト
gmrender-resurrectのReadmeを参照して、
手順通りに起動し、音声が再生できればOK。
Arch Linux Armでラジオを鳴らすのこと
以前、Raspberry PiでRadikoを聴く件について書いた。
nagamitsu1976.hatenadiary.jp
あれと同じことをArch Linux Armでやってみたら
存外ハマったので記録を残しておく。
ALSAの設定
音声出力設定
alsa-utilパッケージのインストールと/boot/config.txtに下記を設定する。
dtparam=audio=on hdmi_drive=2 # HDMIで音を出す場合に設定 audio_pwm_mode=2 # ステレオ端子で音を出す場合に設定
詳しくはArch Linux Armのサイトの手順を参照。
Raspberry Pi | Wiki | Arch Linux ARM
aplay -Lでデバイスが見つからない場合
root以外のユーザで上記の設定をしていても
デバイスが見つからないことがある。
その場合は、ユーザをaudioグループに追加するとデバイスが参照できる。
再起動でボリュームが初期値に戻る
Arch Linuxの時と同じ対処方法をとればOK。
$ sudo alsactl -f /var/lib/alsa/asound.state store $ sudo alsactl restore
SWFTools(swfextract)のビルド
Arch Linux Arm用にビルドされたSWFToolsが無いので、ソースからビルドする必要がある。
作業内容については、この記事を参考にした。
radikoの録音・再生(ArchLinux) | まっつんぶろぐ
ソースの取得
SWFToolsのサイトから最新ソースをダウンロード。
http://www.swftools.org/
依存ライブラリのインストール
SWFToolsのサイトから情報を引きたかったのだが、参照できなかったので、
先のブログ様の記事の通り、ライブラリをインストールした。
$ pacman -S pdflib zip fftw zziplib ruby
ビルド
ソースを展開してビルド開始。
先のブログ様の記事の通り、途中でエラーが発生し、ビルドが中断するが、
srcディレクトリ内を参照し、swfextract.oができていればOKとする。
$ ./Configure $ make # swfextractができていれば $ make install
Raspberry Piに Arch Linux Armをインストールするのこと
Arch Linux Arm on Raspberry Pi
RaspbianからArch Linux Armに載せ替えてみた。
GUIなどはインストールしなかった分、起動は早かった……ような気がする。
以下に手順を残しておく。
ガイドに従ってインストール
サイトの指示に従ってインストールする。
ガイドは作業PCがLinux前提で書いてあるけど、
Windowsだったらどうするんだろうなぁ。
Raspberry Pi | Arch Linux ARM
環境設定
以下はArch Linuxをインストールした時と同じ手順で行えた。
初期起動時点でsshdは起動しているのでリモートで作業できる。
nagamitsu1976.hatenadiary.jp
GW-900Dのドライバ導入
うちのRaspberry Piは初期型なのでWifiはドングルを使っている。
このドングルはドライバが用意されていないので、
ソースからビルドする必要があるのはRaspbianと変わらない。
ビルド環境の準備
ビルド環境とgitをインストール
$ pacman -S base-devel $ pacman -S linux-raspberrypi-headers $ pacman -S git
RTL8812au ドライバの作成&インストール
$ cd [適当なworking directory] $ git clone https://github.com/gnab/rtl8812au.git $ cd rtl8812au $ nano Makefile # ターゲットCPUをi386からarmに変更 $ make $ cp 8812au.ko /lib/modules/extramodules--raspberrypi/kernel/drivers/net/wireless/ $ depmod $ reboot
再起動したらlsmodとdmesgでドライバがロードされているか確認。*2
ip linkでネットワークインターフェイス名を確認し、wifiのI/Fが確認できればOK。
Pacmanフックの追加
カーネルが更新されるとwifiドライバもビルドし直しとなる。
手動ビルドも面倒なので、Pacmanフックを使って自動化してみる。
Pacmanフックを設定するには/etc/pacman.d/hooks配下にhookファイルを配置する。
Arch Linuxのwiki Pacmanフックの項を参考に作ってみたhookファイルはこんな感じ。
/etc/pacman.d/hooks/rtl8812au.hook …… [Trigger] Operation = Upgrade Type = Package Target = linux-raspberrypi Target = linux-raspberrypi-headers [Action] Depends = linux-raspberrypi-headers Depends = make Depends = gcc When = PostTransaction Exec = /usr/local/src/rtl8812au/8812au_make.sh ……
カーネルとカーネルヘッダの更新をトリガーとして、
それらが更新された後にExecで指定したmake用のシェルを実行する、
といった感じ。ドライバのビルドにはカーネルヘッダが必要なので
依存条件にカーネルヘッダが入れてある。*3
wpa_supplicantの設定
接続情報の設定
wpa_passphreseでssidのパスワードを自動生成しておく。
/etc/wpa_supplicant/wpa_supplicant-wlan0.confを新規作成し、以下の内容を記述する。
ctrl_interface=/run/wpa_supplicant update_config=1 network={ ssid="XXXXXXXXXXX" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP group=CCMP #psk="xxxxxxxxxxxxx" psk=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678901 scan_ssid=1 }
wpa_supplicant起動パラメータの編集
このまま起動するとこんな感じで、ドライバー未サポートのエラーが出る。
Successfully initialized wpa_supplicant nl80211: Driver does not support authentication/association or connect commands wlan0: Failed to initialize driver interface
Arch Linuxのwikiにあるwpa_supplicantの項に対処方法が書いてあるので、
wikiに従って対処する。
WPA supplicant - ArchWiki
$ nano /usr/lib/systemd/system/wpa_supplicant@.service …… # ExecStartの行の最後に「-Dnl80211,wext」を追加する。 ExecStart=/usr/bin/wpa_supplicant -c/etc/wpa_supplicant/wpa_supplicant-%I.conf -i%I -Dnl80211,wext ……
wpa suppliantサービスの有効化
wpa suppliantサービスの有効化を行う。
$ systemctl start wpa_supplicant@wlan0 $ systemctl status wpa_supplicant@wlan0 # ステータス確認で問題なければenableする。 $ systemctl enable wpa_supplicant@wlan0
IPアドレスの割り当て
IPアドレスはsystemd-networkdが管理しているようなので*4、以下を編集する。
ファイルの書き方はここを参照。*5
Ethernetポートの場合
/etc/systemd/network/eth0.networkを編集
[Match] Name=eth0 #[Network] #DHCP=yes [Address] Address=192.168.10.32/24 [Route] Gateway=192.168.10.1
Wifiの場合
/etc/systemd/network/wlan0.networkを編集。
ファイルがなければ/etc/systemd/network/eth0.networkをコピーしてリネームしてから編集する。
[Match] Name=wlan0 #[Network] #DHCP=yes [Address] Address=192.168.10.33/24 [Route] Gateway=192.168.10.1
systemd-networkdのリロード
systemd-networkdをリロードして、
ip aでIPアドレスが設定通りか確認する。
$ systemctl restart systemd-networkd
再起動
再起動して、ネットワークが自動起動すればOK。
Congraturations!
初期設定はこんな感じでおしまい。
Arch Linuxのインストール手順のこと その4
How to use AUR
Ubuntuで言うPPAみたいなもの。
AURのリポジトリにはソースが置いてあるので、
ダウンロードしてきて、ビルド、インストールすると認識すればいい。
手でやるのは面倒だと思うけど、そこはそれ、
パッケージ名を指定するだけで導入できるツールがある。
Yaourtの導入
ヨーグルトと読むらしい。
これを導入すれば、AURも簡単に導入できる。
package-queryのインストール
yaourtで必要なpackage-queryをインストールする。
適当なディレクトリを作ってそこにcloneして、手順に従ってビルドする。
$ mkdir ~/.local/share/aur $ cd aur $ git clone https://aur.archlinux.org/package-query.git $ cd package-query $ makepkg -si $ cd ..
yaourtのインストール
続いて、yaourtをcloneして、ビルドする。
ビルドが終われば導入完了。
$ git clone https://aur.archlinux.org/yaourt.git $ cd yaourt $ makepkg -si $ cd ..
実験: Mate Tweakのインストール
AURパッケージ導入の実験として、Mate Tweakをインストールしてみる。
Ubutu MateにあったMate TweakはArch LinuxではAURに分類されているので、
まずは、Arch LinuxのAURのページへ行き、Mate Tweakのパッケージ名を調べる。
いくつかあるが4つのうち3つは開発版だたりgtk2版だったりして違うようなので、
最上位にある「mate-tweak」をインストールしてみる。
$ yaourt -S mate-weak
手順としては上のコマンドを実行するだけ。
これで、ソースのダウンロードからビルド、インストールまで一括で行える。
コマンド実行中にビルドファイルの編集、ビルドされたパッケージの内容確認を聞かれるが
これは特にしなくても大抵は問題ない。
出来あったパッケージをインストールすれば、
コントロールセンターにMate Tweakが追加される。
Arch Linuxのインストール手順のこと その3
Customize Mate Desktop Environment
とりあえず、デスクトップが表示されたけれど、
まだ、機能が足りない。
というわけで、環境構築の続き。
GUIのフォントが文字化けしている場合なんかは、
外観の設定で好きなフォントを設定しておいてください。
IMEの設定
キーボードレイアウトの設定。
キーボードレイアウトが初期ではUSになっているので、
コントロールセンターからキーボード設定を呼び出して、
レイアウトの設定を行う。
日本語レイアウトを追加してUSレイアウトを削除する。
合わせてキーボードの型式も設定する。
インプットメソッドフレームワークのインストール
Ubuntu Mate 16.04でも採用されていたfcitx-mozcをインストールする。
$ sudo pacman -S fcitx-im fcitx-mozc fcitx-configtool
ホームディレクトリに.xprofileを作成し、下記を追加する。
$ nano ~/.xprolie …… export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx
一旦、ログオフし再ログインすると、fcitxが立ち上がる。
(通知スペースにキーボードのアイコンが出る)
fcitxの設定パネルからアドオンタブを開いて、advancedチェックをON。
Fcitx XIM Frontendを選択して、ダイアログのチェックボックスをONにする。
fcitxを再起動。
XDGユーザディレクトリの作成
XDGユーザディレクトリというのは、ユーザのホームディレクトリ配下にある
「デスクトップ」とか「ダウンロード」などのディレクトリのこと。
初期のMateではパッケージがインストールされていないので作られていない。
手順は以下の通り。
xdg-user-dirsパッケージのインストール
$ sudo packman -S xdg-user-dirs
xdg-user-dirs-updateの実行
デフォルトで良ければ、xdg-user-dirs-updateを実行する。
英語が良ければ、LC_ALL=C xdg-user-dirs-updateを実行する。
$ xdg-user-dirs-update or $ LC_ALL=C xdg-user-dirs-update
デフォルト以外のパスを使いたければ~/.config/user-dirs.dirsを作成し、
中身を記載してから、xdg-user-dirs-updateを実行する。
$ nano ~/.config/user-dirs.dirs …… XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOCUMENTS_DIR="$HOME/Documents" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_MUSIC_DIR="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_PUBLICSHARE_DIR="$HOME/Public" XDG_TEMPLATES_DIR="$HOME/.Templates" XDG_VIDEOS_DIR="$HOME/Videos"
gvfsマウントルールの追加
ファイルマネージャでディスクをマウントする際、認証を求められることがある。
それを回避するために以下の設定を行う。
storageグループにユーザを追加
$ usermod -aG storage [user-name]
10-enable-mount.rulesの作成
/etc/polkit-1/rules.d/10-enable-mount.rules
$ nano /etc/polkit-1/rules.d/10-enable-mount.rules # 下記を追加 polkit.addRule(function(action, subject) { if (action.id == "org.freedesktop.udisks2.filesystem-mount-system" && subject.isInGroup("storage")) { return polkit.Result.YES; } });
Congraturations!
日本語が入力できるようになれば、おめっとさん。
あとは自由にカスタマイズできるでしょう。
……って、ここで終わられても、まだAURを使ってない。
というわけで、その4へ続く。
Arch Linuxのインストール手順のこと その2
Install Mate Desktop on Arch Linux
その1の続き。
私はヘタレLinuxユーザーなのでGUIが無いと何もできません。
というわけで、GUI導入までの手順を残す。
LinuxデスクトップではダントツのMate推しなので、
Mate Desktopの導入となります。
CUI環境の整備
コンソールの文字化け対策
前回のインストール時にロケールをja_JP.UTF-8としたので、
今のコンソールではメッセージが化けまくっている。
そこで、tty環境(alt+ctrl+F1〜F6)ではLANG=Cとなるように、Bashの定義を追加する。
追加後、再度ログインすれば、メッセージは英語で表示される。
$ nano /etc/bash.bashrc …… #下記内容を末端に追加 # tty force LANG=C (tty|fgrep -q 'tty') && export LANG="C" ……
ちなみに、コンソールに日本語を表示する方法として、
fbtermとかKMSCONとかを導入するって方法があったけど、
どっちも試した結果、どちらもしっくり来なかった。
解像度とか、描画の美麗さ、反応速度とか色々。
で、結局、文字化けしなければ英語で十分、という判断になった。
タブ補完の強化
$ pacman -S bash-completion
multilibリポジトリの有効化
64bitOSなので32bitのライブラリは不要だけれど、
wineを使いたいので32bitライブラリもインストールできるように
multilibリポジトリを有効化しておく。
/etc/pacman.confの[multilib]の項目とパスを有効化
$ nano /etc/pacman.conf $ pacman -Syu
ユーザ追加
$ useradd -m -G wheel -s /bin/bash [username] $ passwd [username]
sudo設定の追加
sudoで権限委譲できるuserを追加する。
$ visudo …… # User privillege specificationの項に下記を追加((グループ全体を適用する方法もある。)) [username] ALL=(ALL) ALL ……
日本語フォントのインストール
これはお好みで。
$ pacman -S noto-fonts noto-fonts-cjk
GUI環境の構築
X Window Systemのインストール
$ pacman -S xorg-server xorg-apps xorg-server-xephyr
グラフィックドライバのインストール
$ lspci | grep -e VGA -e 3D
確認できたグラフィクカード(or チップ)に合わせてドライバをインストールする。
wikiのXorgの項目にインストールべきドライバについて記載がある。*1
うちのPCはnVidia GeForce GTS 250なのでnvidiaのレガシードライバをインストールした。
$ pacman -S nvidia-340xx nvidia-340xx-utils lib32-nvidia-340xx-utils
nvidia-settingsというツールでグラッフィクボードの状態を見たり、Xorgの設定が行えるのだが、
GUI表示させた場合、下記のパッケージが無いとエラーがでるので、
気になる場合はインストールしておく。
$ pacman -S gtk2 gtk-engines
nvidiaドライバが更新された時、initramfsのアップデートが必要となる。
ドライバ更新時のinitramfsの再作成を自動化するため、
/etc/pacman.d/hooks/nvidia.hookファイルを作成しておく。
$ nano /etc/pacman.d/hooks/nvidia-340xx.hook [Trigger] Operation=Install Operation=Upgrade Operation=Remove Type=Package Target=nvidia-340xx [Action] Depends=mkinitcpio When=PostTransaction Exec=/usr/bin/mkinitcpio -p linux
ディスプレイマネージャのインストール
ディスプレイマネージャにも色々あり、何を選ぶかは自由となっているが、
Ubuntu Mate 16.04で採用されていたLightDMを選んだ。
$ pacman -S lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings
あとで気づいたことだけど、Mate導入後にjournalログを見たらこんなエラーが出てた。
6月 20 11:04:19 catharina lightdm[479]: Error getting user list from org.freedesktop.Accounts: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Accounts was not provided by any .service files
ここに少しやり取りがあり、accountsserviceパッケージが無いと発生するらしいが、
動作には問題が無い模様。*2
でも、気になるのでインストールをしておく。
$ pacman -S accountsservice
MATEデスクトップのインストール
$ pacman -S mate mate-extra
ディスプレイマネージャの自動起動On
$ systemctl enable lightdm
コンポジットマネージャのインストール
ウィンドウ装飾のことらしいんだけど、
Mateで採用されているウィンドウマネージャのMarcoには、
ソフトウェアコンポジットの機能があるので、なにもしなくてもウィンドウの装飾は行われる。
とはいえ、これはLinux。
実はこの装飾を行うプログラムであるコンポジットマネージャも好きに選べる。
ということで、comptonというコンポジットマネージャも入れてみた。
$ packman -S compton
起動するには自動起動するアプリケーションに下記のように追加するだけ。
ただし、起動する際はMarcoのコンポジット機能をOFFにしておく必要がある。
$ compton -b
起動時NumLock On
ディスプレイマネージャ起動時にNumLockをOnにする方法。
デフォルトOffでも構わないのだけれど、
NumLockがOnのままログオフするとNumLockのランプがついているけれど、
内部ではNumLockがOFFという奇妙な状態になるので、
デフォルトOnとなるようにしておいた。
当然、ディスプレイマネージャによってやり方は異なる。
LightDMの場合は、numlockxパッケージをインストール後、
/etc/lightdm/lightdm.confを編集する。
$ pacman -S numlockx $ nano /etc/lightdm/lightdm.conf …… # greeter-setup-scriptの行を有効にしてnumlockxのコマンドを記述する [Seat:*] greeter-setup-script=/usr/bin/numlockx on ……
ネットワークマネージャのインストール
dhcpcdが動いているので今のままGUIを起動してもネットワークには繫がる。
ただ、Mateの通知パネルに通知が上がってこないのでわかりにくい。
そこで、ネットワーク設定をNetworkManagerにやらせることにする。
インストール
$ pacman -S networkmanager network-manager-applet gnome-keyring
NetworkManagerの自動起動On
$ systemctl enable NetworkManager
dhcpcdの自動起動Off
# systemctl disable dhcpcd
Windows Network 共有
ファイルマネージャ(caja)で共有サーバを覗くだけなら
gvfs-smbパッケージをインストールするだけでOK。
だめだったらsamba smbclient cifs-utilパッケージもインストールする。
$ pacman -S gvfs-smb # だめだったら後からこれもインストール。 $ pacman -S samba smbclient cifs-util
再起動
$ reboot
Congraturations!
再起動後、ログイン画面が出たらおめっとさん。
新しく作ったユーザでログインできたらおつかれさん。
……って、ここで投げ出されても、まだツラい。
というわけで、その3へ続く。
Arch Linuxのインストール手順のこと その1
Install Arch Linux
Ubuntu Mate 18.04がいまいちだったのでArch Linuxに入れ替えた。
Arch Linux公式サイトにはインストール手順やドキュメントが充実しているので、
基本は手順通りに行えば良いのだが、それでも迷うところがちらほらあった。
念のために、以下に手順を残す。
今回はBIOSモード、MBRにGRUBをインストールするレガシーなパターンです。
パーティション
UbuntuのLive CDで予め作成した。
とはいえ、LVMを使うのでGUI操作よりコンソール操作が多かった。
デバイス | マウントポイント | フォーマット | サイズ | 用途 |
/dev/mapper/mate--vg-lvswap | - | SWAP | 16G | スワップ |
/dev/mapper/mate--vg-lvroot | / | ext4 | 100G | ルート領域 |
/dev/sdb1 | /boot | ext2(boot ON) | 1G | ブート領域 |
/dev/mapper/mate--vg-lvfile | /usr/files/ | ext4 | 残り全部 | ユーザデータ用 |
インストールの準備
PCをUSBブートしてArch Linuxインストールメディアを起動。
メニューからインストーラーを起動。
キーボードレイアウトの設定
$ loadkeys jp106
ルートパーティションのマウント
$ mount /dev/mapper/mate--vg-lvroot /mnt
マウントポイントを作成
$ mkdir /mnt/boot $ mkdir -p /mnt/usr/files
残りパーティションのマウント
$ mount /dev/sdb1 /mnt/boot $ mount /dev/mapper/mate--vg-lvfile /mnt/usr/files
スワップ有効化
$ swapon /dev/mapper/mate--vg-lvswap
ネット接続の確認
wifi接続の場合、接続設定を行う必要があるので、
有線接続での作業が楽です。
wifi設定はOSインストール後なら、NetworkManagerを使うなりなんなりで、
手軽にできるからです。
$ ping www.google.com
システムクロックの変更
$ timedatectl set-ntp true
OSのインストール
ミラーの選択
mirrorlistファイルを開いてリストから国内のサーバーを検索する。
見つかった国内サーバーのURLをファイルの上位にカット&ペーストする。
国内のサーバーもいくつかあるので、
どんな順番にするかは下のページを見ると参考になる。
https://www.archlinux.jp/mirrors/status/
とはいえ、Jaistと 筑波大学のサイトを上位にすればいいと思う。
$ nano /etc/pacman.d/mirrorlist
ベースシステムのインストール
### $ pacstrap /mnt base base-devel [old] ### $ pacstrap /mnt base linux linux-firmware
fstabの生成
$ genfstab -U /mnt >> /mnt/etc/fstab
システム設定
以降は、システムの基本設定を行う。
タイムゾーン、ロケール、ホスト名などなど。
タイムゾーン設定
$ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime $ hwclock --systohc --utc
ロケール設定
/etc/locale.genを編集してからlocale-genを設定する。
有効にするのはen_US.UTF-8 UTF-8とja_JP.UTF-8 UTF-8でOK
$ nano /etc/locale.gen $ locale-gen
/etc/locale.confにロケールを定義する
$ echo LANG=ja_JP.UTF-8 > /etc/locale.conf
キーマップの設定
$ echo KEYMAP=jp106 > /etc/vconsole.conf
ホスト名の設定
$ echo myhostname > /etc/hostname $ nano /etc/hosts
同じ名前を/etc/hostsにも記載。
127.0.0.1 localhost ::1 localhost 127.0.1.1 myhostname.localdomain myhostname
ネットワーク設定
baseシステムではdhcpcdを使い、
あとでNetworkManagerをインストールして使う算段なので、
ここではdhcpcdを有効化する。
$ systemctl enable dhcpcd@[network-interface-name].service もしくは $ systemctl enable dhcpcd
initramfsの生成
lvmを使っている場合(ルートパーティションが論理ボリュームの場合)
/etc/mkinitcpio.confを編集する。
$ nano /etc/mkinitcpio.conf …… # HOOKSの行に[lvm2]を追加する。 HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck) …… # mkinitcpio -p linux
rootパスワード設定
$ passwd
ブートローダーの設定
最初に書いた通り、ここではBIOSモードでMBRにGRUBをインストールする。
exFatとNTFSのサポート
Windowsとのデュアルブートのために、exFatとNTFSを扱えるようにする。
デュアルブートでなくても入れておいたほうが無難か。
$ pacman -S exfat-utils ntfs-3g
再起動
exitで一旦抜けたあと、
ルートパーティションをアンマウントし再起動する。
ブート前にインストールメディアを抜いておくのを忘れずに。
$ exit $ umount -R /mnt $ reboot