Plamo 7.0 リリース後も環境に合わせたり、MLでの質問の回答を載せたりと更新を続けています。
更新履歴
- 2022-02-09: ca_certificate パッケージの部分で、CA証明書の更新処理を自動で行うようになったことを追記しています。glibc のバージョンを現状に合わせました(内容は変わっていません)
- 2021-09-15: elogind を導入しました。詳細は Plamo Linux の elogind 対応 をご覧ください。
- 2020-03-07: PHP を Apache から使う場合の注意点を追記しました
- 2019-05-06: 令和対応パッチを当てましたw)
- 2019-02-25: glibc 2.26 → 2.28 へ update されたのでセクションタイトル変更。内容は変わっていません
glibc 2.33
基本はこれまでと変化はありませんが、ロケールの部分が少し変わっています。
(あまり理解していないので以下は間違ってるかも)
Plamo-6.x までは /usr/share/locale
以下にすべての関連ファイルがそろっていましたが、イマドキは /usr/share/locale
は各種ソフトウェアのメッセージカタログが置かれているだけで、システム上で定義されている(使える)ロケールは /usr/share/i18n
のデータを元に localedef
コマンドを実行すると、/usr/lib/locale/locale-archive
ファイルに保存されるようです。
glibc では、コンパイル後のインストール時に
$ make localedata/install-locales
と実行すると、localedata/SUPPORTED
ファイルに定義されているロケールに対して localedef
コマンドが実行されます。このファイルにはデフォルトでは glibc がサポートしている全ロケールが書かれていますが、Plamo では全部は不要ですので、
SUPPORTED-LOCALES=\
C.UTF-8/UTF-8 \
en_US.UTF-8/UTF-8 \
ja_JP.EUC-JP/EUC-JP \
ja_JP.UTF-8/UTF-8 \
というファイルに差し替えて make localedata/install-locales
を実行しています。なお、C.UTF-8
は標準では含まれていませんので、パッチを適用しています(Red Hat系、Debian/Ubuntu、Slackware 辺りには同様のパッチが当たっているようです)。
このように作られたパッケージをインストールすると、
$ locale -a
C
C.utf8
POSIX
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
japanese
とかは /usr/share/locale/locale.alias
ファイル辺りからエイリアスとして作られるのでしょうか。
2.28 B4 パッケージで令和対応しました (^^)
$ date +%Ex
令和元年05月06日
起動時処理・デーモン起動
これまでは起動時の処理は /etc/rc.S、/etc/rc.M、/etc/rc.inet{1,2} などで BSD 的に書かれていました。以前良くあった /etc/init.d などに置かれる起動スクリプトは rc.M から呼ばれていましたが、Plamo 7.0 では、以前のメジャーなディストリビューションが採用していた /etc/rc.d/init.d 以下にスクリプトを置き、/etc/rc${runlevel}.d/ 以下に起動順に並ぶようなシンボリックリンクが置かれる形式になりました(LFS/BLFSの起動スクリプトを採用しています)。
起動する、しないは、CentOS6 や以前の Debian なんかのようにコマンドで /etc/rc.d/rc${runlevel}/ 以下のリンクを動的に生成するのではありません。リンクはパッケージに含まれていますが、その先の /etc/rc.d/init.d/ 以下のスクリプトに実行権限があるかないかによって決まります。
全員が起動して使うわけでもないだろう、というデーモンについては、起動スクリプトをインストールはするものの、実行権を付けていませんので必要に応じて chmod
コマンドで /etc/rc.d/init.d/
以下のスクリプトに実行権をつけてください。
キーボード設定
Plamo-6.2 までは /etc/rc.d/rc.keymap みたいなファイルを呼んでいたと思いますが、7.0 からは /etc/rc.d/init.d/console ファイルでキーボードを設定します(他にコンソールフォントも設定できるようです)。
日本語キーボード(jp106)の場合、/etc/sysconfig/console
ファイルを次のような内容で作成すれば OK です。
KEYMAP="jp106"
Plamo 7.0 リリース時点で、インストーラで日本語キーボードを選んだ場合(そしてオプションのキーバインド(CtrlとCapsLockを逆にするとを選択した場合)、インストーラがこの設定を行ってくれるはずです。
run ディレクトリ
実行時の可変データを置くディレクトリは、イマドキの FHS に従って /run
になりました。パッケージでも必要に応じて configure オプションでそちらを指定しています。
/run
は tmpfs です。/var/run
は /run
へのリンクになっています。
$ ls -l /var/run
lrwxrwxrwx 1 root root 4 1月 12日 20:30 /var/run -> /run/
$ cat /proc/self/mounts | grep run
tmpfs /run tmpfs rw,relatime 0 0
まだ決め打ちで /var/run を向いてるソフトウェアもありますね。
ご自分でパッケージを作ったり、何かインストールする際に /var/run
のリンクを消してしまったり、普通にディレクトリにしてしまったりすると色々と問題が生じますので注意が必要です。
elogind
elogind を導入しました。これは udev と同様に、systemd からログインセッション管理関連の機能を抜き出したもので、ConsoleKit2 を置き換えるものです。
特に使うに当たっては注意する点はないですが、詳細についてまとめてありますのでご覧ください。
pam
/etc/pam.d 以下は従来とは大きく変わりました。システム共通の include 用のファイルとして
- system-account
- system-auth
- system-password
- system-session
の 4 ファイルがあります。以前のようにデフォルトの system-auth
に全エントリを書いてそれを参照する方式ではありませんのでご注意を。plamo-default
ファイルもありません。
デフォルトのパスワードは sha512 で生成されます(system-password
ファイルを参照してください)。
この 4 つのファイルを必要に応じて include します。
account include system-account
auth include system-auth
password include system-password
session include system-session
カーネルモジュール
起動時に読み込ませたいカーネルモジュールがある場合は /etc/sysconfig/modules
ファイルにモジュール名を書きます。
コンソールログがうざい
Linux カーネルでデフォルトで設定されているコンソールログのレベルがそれなりにたくさんのログが表示されるようになっているためのようです。
起動後に
dmesg -n 1
のように調整するか、カーネルの起動パラメータに
loglevel=1
を追加してみてください。
eudev
udev は今や systemd に統合されていますので、systemd を使っていない Plamo では gentoo 由来の eudev を使用しています。
複数の NIC がある場合
Plamo マシンで複数 NIC があるってケースはあまりないのかもしれませんが…
Plamo-6.x のときの udev では、標準でインストールされるファイルの中に NIC に与えられる名前が起動するたびに変わらないようにするために /lib/udev/rules.d/75-persistent-net-generator.rules
というルールが、/etc/udev/rules.d/70-persistent-net.rules
が存在しない場合にはこのファイルを生成して、常に特定の NIC には特定の名前が割り当たるようになっていました(CentOS 6なんかでもそうでした)。
eudev になってからそのような処理を行うルールはなさそうですので、LFS では udev-lfs という LFS カスタムのルールやスクリプトをまとめたものを準備しています。
Plamo-7.0 でも、この udev-lfs のファイルをインストールするようにしてあります(55-lfs.rules だけはインストールしてません)。
ただ、前述の 70-persistent-net.rules
ファイルを生成するような処理は含まれていませんので、複数 NIC を使っている場合は手動でスクリプトを実行して、このファイルを作る必要があります(いまのところ)。
sh /lib/udev/init-net-rules.sh
ただ、今の eudev では、カーネルが付与する NIC の名前 eth*、wlan* をルールの中で決めるのはちゃんと動かないようですので(よく理解してないけどたぶん)、複数 NIC があって、固定した名前を使いたい場合は、上で紹介したコマンドで生成した /etc/udev/rules.d/70-persistent-net.rules
ファイルで指定する名前は、例えば net0
、net1
など、バッティングしない名前にするのが良いようです。
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="(MAC Address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="net0"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="(MAC Address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="net1"
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="(MAC Address)", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="net2"
Plamo ではデフォルトではカーネルの起動パラメータで net.ifnames=0
というのを指定しています。これが指定されていると、/lib/udev/rules.d/80-net-name-slot.rules
内の処理はスキップされますので、上記のように指定すると、対応する MAC Address に対応して net0
、net1
、net2
で起動してくるはずです。
起動パラメータで net.ifnames=0
を指定する代わりに
touch /etc/udev/rules.d/80-net-name.slot.rules
とすると、/lib/udev
にある方のルールが /etd/udev
の方のファイルで上書きされますので同じように動くはずです。
Network I/F デバイス名を変えた場合は /etc/sysconfig/ifconfig.*
ファイルの名前と中身も変えるのをお忘れなく。
Predictable Network Interface Names
もしくは起動パラメータで net.ifname=0
を指定せず、/etc/udev/rules.d/80-net-name.slot.rules
も作成せずに起動すると Predictable Network Interface Names
と呼ばれる規則性があり、かならず一意に名前が決まる方法で名前が決まって起動してきます。ただ enp1s1
とか覚えにくい名前なので使いづらい気がするなあ。
network
ネットワークインターフェースの設定は lfs/blfs の方法に従うようになりました。
DHCPの場合(dhclient)
例えば eth1 を DHCP で設定したい場合、/etc/sysconfig/ifconfig.eth1
を
ONBOOT="yes"
IFACE="eth1"
SERVICE="dhclient"
のように書けば eth1 を dhclient を使って DHCP で設定してくれます。
dhclient は /sbin/dhclient-script
を呼びますが、 /etc/dhclient-enter-hooks
スクリプトを準備しておくと、 resolve.conf
ファイルを作成する関数を定義した直後にこのスクリプトが呼ばれます。
私はこの /etc/dhclient-enter-hooks
の中身を以下のようにして /etc/resolv.conf
ファイルを dhclient が生成(書き換え)しないようにしています。
make_resolv_conf() { :; }
dhclient-scirpt の処理終了直前に /etc/dhclient-exit-hooks
スクリプトが呼ばれます。
dhclient-script には、/etc/dhclient-enter-hooks.d/
、 /etc/dhclient-exit-hooks.d/
以下に存在する実行ファイルを実行するような処理が書かれていますが、Plamo 7.0 の run-parts コマンドが、 dhclient-script での呼び方と非互換なので動きません(しかもrun-partsコマンドはlibpaperパッケージに含まれているので必ずしもあるわけではない)。
固定IPアドレスの場合
eth0 を固定 IP アドレスで設定する場合、以下のような /etc/sysconfig/ifconfig.eth0
ファイルを作成します(基本はインストール時に質問に答えると作ってくれるはず)。
ONBOOT=yes
IFACE=eth0
SERVICE=ipv4-static
IP=192.168.1.2
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
bridge の場合
ブリッジ br0 を作成し、物理インターフェース eth0 に接続したい場合は、以下のように /etc/sysconfig/ifconfig.br0
を作成します(blfsのbridge-utilsページのパクりです)。
ONBOOT=yes
IFACE=br0
SERVICE="bridge ipv4-static" # Space separated
IP=192.168.1.32
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=192.168.1.255
CHECK_LINK=no # Don't check before bridge is created
STP=no # Spanning tree protocol, default no
INTERFACE_COMPONENTS="eth0" # Add to IFACE, space separated devices
IP_FORWARD=true
無線LAN
wpa_supplicant をインストールすると、サンプルとして /etc/sysconfig/ifconfig_wlan0-sample
をインストールしますので、中を DHCP か static かに応じて編集し、例えば /etc/sysconfig/ifconfig.wlan0
として保存します。
続いてSSID、パスフレーズなどの情報を書いた設定ファイルを以下のように /etc/sysconfig/wpa_supplicant-wlan0.conf
に作成します。
wpa_passphrase SSID SECRET_PASSWORD > /etc/sysconfig/wpa_supplicant-wlan0.conf
/etc/sysconfig/ifconfig.wlan0
のサフィックス(wlan0
)の部分と設定ファイル /etc/sysconfig/wpa_supplicant-wlan0.conf
の -
と .conf
に挟まれた部分が一致していることが重要です。
詳しくは
をご覧ください。(スクリプトをみる限りではファイル名の wlan0
みたいな文字列と実際のインターフェース名は違っていても OK っぽいです。ifconfig.* ファイルの IFACE 変数が一致していれば)
acpid
次のリリースでハンドラースクリプトを変更しました。
2019-02-06 KATOH Yasufumi
* acpid 2.0.31
すべてのイベントを取得し、ハンドラーに渡すようにした。
ハンドラーはログ出力のみを行うようにしてある
(plamo/05_ext/acpid-2.0.31-x86_64-B3.txz)
電源ボタンを押すとか、ノートPCの蓋を閉じるなどのイベントが発生すると、すべてのイベントを /etc/acpi/handler.sh
で捕捉するようにしました。
引数で色々なパラメーターが取得できます。シェルスクリプトになっていますので、これをサンプルに必要なイベントをキャッチして必要な処理を行ってください。
デフォルトのスクリプトは logger
コマンドでログを出力する処理のみ行っています。
筆者は Xfce4 の「電源管理」で必要な設定を行っており、acpid のハンドラで処理をするとどうやら両方が働いてサスペンドからの復帰がうまくいかない感じなので、デフォルトのログ出力のみ行うようにしています。
詳しくは ArchLinux の Wiki が参考になるでしょう。
perl
Perlの site_{lib,arch} と vendor_{lib,arch} をきちっとわけてみました。公式パッケージではパスに perl のバージョン番号が入りません。
perl 5.24.0 パッケージ作成時には以下のようにオプションを与えています。
if [ $arch = "x86_64" ]; then
arch_opts="-Dcccdlflags='-fPIC'"
else
arch_opts=""
fi
:(snip)
sh Configure \
-des \
-Dprefix=/usr \
-Dvendorprefix=/usr \
-Dprivlib=/usr/share/perl5/core_perl \
-Darchlib=/usr/${libdir}/perl5 \
-Dsitelib=/usr/share/perl5/site_perl \
-Dsitearch=/usr/${libdir}/perl5/site_perl \
-Dvendorlib=/usr/share/perl5/vendor_perl \
-Dvendorarch=/usr/${libdir}/perl5/vendor_perl \
-Dman1dir=/usr/share/man/man1 \
-Dman3dir=/usr/share/man/man3 \
-Dpager="/usr/bin/less -isR" \
-Dcc='gcc -isystem /usr/include' \
-Dlddlflags="-shared ${LDFLAGS}" \
-Dldflags="${LDFLAGS}" \
-Dusethreads \
${arch_opts} \
-Duseshrplib
perl module のパッケージ作成の際は
perl Makefile.PL INSTALLDIRS=vendor
のように実行しています。
Python
Python は 3 がデフォルトです。
$ ls -l /usr/bin/python
lrwxrwxrwx 1 root root 7 1月 12日 18:43 /usr/bin/python -> python3*
Python モジュール作成の際は
- 2, 3 用のモジュールがひとつのパッケージに同梱可能であれば同梱(実行コマンドがなくライブラリコードのみの場合なんかがこれに当たるかな?)
- 2, 3 用は分けて作る必要がある場合は python2_(package), python3_(package) のような名前でパッケージを作るようにしています(全部当てはまるとは限らないけど)
- パッケージ作成の際は
/usr/bin/python
ではなく、なるべく/usr/bin/python2
、/usr/bin/python3
を指定するようにしています。
iptables
/etc/rc.d/init.d/iptables
スクリプトは blfs バージョンを元にカスタマイズしています。オプションとして取れる引数の種類を増やしました。
$ ./iptables help
Usage: ./iptables {start|stop|clear|lock|status|status6|save}
-
start
は起動時に実行されるものです。/etc/sysconfig
直下に:-
iptables
ファイルがあればiptables-restore /etc/sysconfig/iptables
を実行します -
ip6tables
ファイルがあればip6tables-restore /etc/sysconfif/ip6tables
を実行します
-
-
stop
とclear
は同じ処理です。INPUT、OUTPUT、FORWARDING のポリシーを ACCEPT に設定し、Flush を行い、チェーンを削除します(iptables が設定されない状態になります)。IPv4、v6 両方に適用されます -
lock
は INPUT、OUTPUT、FORWARDING のポリシーを DROP に設定し、Flush を行い、チェーンを削除します(ローカルからはアクセスできます)。IPv4、v6 両方に適用されます -
save
は現在のルールを/etc/sysconfig/iptables
、/etc/sysconfig/ip6tables
にそれぞれ保存します(ip{,6}tables-save
を呼んでいるだけです) -
status
は IPv4 向けに設定されているルールを、status6
は IPv6 向けに設定されているルールを表示します
BLFS で使われる /etc/rc.d/rc.iptables
ファイルは使いません。
Firefox/Thunderbird
これまで通り Firefox は unofficial で作成していますので "Nighty" で作成されています。
ただ、適用する日本語リソースをちょっといじって、ブラウザ名は "Plamo Browser" となるようにしてあります。
ただ、「Plamo Browser について」というメニューを選択すると、"Nighty" と出てきます(これは画像なのかな?)。このダイアログ中のリンクをクリックすると、mozilla のページに飛びます。
Thunderbird も "Plamo Mailer" という名前が表示されます。
Google Chrome
google chrome や chrominium はパッケージとしては提供されませんが、chrome のオフィシャルなパッケージをダウンロードしてきて、Plamo パッケージに変換するスクリプトを次のように配布しています。
rpm コマンドがインストールされている環境であれば、rpm パッケージからバージョンを抜き出してパッケージに設定します。rpm コマンドがない環境で実行すると、バージョン番号は stable_current
となります。
各種サーバプログラム
Plamo 7.0 では一部の人しか使わないであろうサーバプログラムについては開発の優先度を下げていました(というつもりで私はパッケージを作っていた)。
とりあえず私が必要とするであろうサーバプログラムは作りましたがテストは不十分です。
Apache httpd
Web サーバは従来通り Apache httpd です。nghttp2 パッケージを 03_libs
に含めてあり、これを有効にして mod_http2 を作成してありますので HTTP/2 にも対応できます。ただし全くテストしていません。
PHP
従来の cli, modules 版に加え、--enable-cgi --enable-fpm
を指定した CGI 版も同梱しています。BLFS の起動スクリプトも同梱しています。Apache で mod_proxy_fcgi を有効にすると例えば次のように設定したりして使えるでしょう。
Apache module 版は NTS 版としてビルドしていますので Apache の MPM は prefork でお使いください。event MPM などで使う場合は fpm をお使いください。
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/srv/httpd/htdocs/$1
PHP の configure オプションについては phpinfo()
でご確認ください。ビルドスクリプト でどのような configure オプション付けているのかはちょっと見づらいと思うので。
bind / DNS 関連
bind は dig
などのクライアントコマンドのみインストールする bind_tools
パッケージになりました。サーバプログラムはパッケージを作成していません。
Plamo で DNS の権威サーバを運用する人はほとんどいないでしょうけど、サーバプログラムとしては nsd のパッケージを準備しました。デフォルトでは設定ファイルなどはインストールされませんので、すべて自分で設定する必要があります。
キャッシュサーバは unbound パッケージを準備しています。こちらは起動させれば最低限の設定で起動するような設定ファイルにしてあります。
bind のように権威サーバとキャッシュサーバを同居させたい場合は工夫が必要です。
その他
- DB エンジンは mariadb を作成してあります
- Mail 関係は postfix, dovecot を作成しているのでとりあえずサーバは運用できるはず。ただし、この辺りもテストが不十分です
音楽プレーヤー
個人的にはこれまで Rhythmbox を使ってきましたが、気分を変えて lollypop パッケージを作ってみました。問題なく動いています。
フォント
TrueType/OpenType フォントはこじまさん作成のパッケージとして
- B&H Lucida
- Liberation
- Dejavu
- Migu
- MiguMix
あたりが基本的なフォントとして入っているところに、Google の
- Noto
- NotoCJK
を入れています。Noto フォントシリーズは全部入れるととんでもないことになるので、基本的なアルファベット系のフォントだけ選んで入れています。
もしかしたらVLゴシックあたりも入れるかも(Noto の Mono フォントが細すぎて見づらい…)
日本語入力
uim に加えて fcitx のパッケージを作成しました。ibus、scim は作りません。
fcitx に対する日本語入力エンジンは mozc を準備しています。emacs から使う場合は XIM でも使えますが、ちょっと使いづらいので、mozc.el と mozc_emacs_helper をインストールしますので、そちらで使うのが良いと思います。
Emacs は XIM を使わないように
Emacs*useXIM: false
と .Xdefaults
や .Xresources
で指定すると良いでしょう。
fcitx
adduser
コマンドでユーザを作成する際に fcitx
を指定しても ~/.xinitrc
や ~/.xsession
内で静的に指定されている uim が起動しますので、fcitx
を使う場合はコメントアウトしてください。(adduser コマンドでそのあたりも処理しようかと思ったけど面倒だったのでやめたのと、あまり完璧にやるよりは自分で調整するのが Plamo らしいと思ったので)
fcitx を使用するように設定し、最初に Desktop 環境を起動した場合は、キーボードが英語キーボードの設定になっているようです。
他に runlevel 5 で起動したり、もしかすると runlevel 3 で起動した場合も fcitx が起動するようになっていると同様かもしれません。
日本語キーボードを使う場合は「+」ボタンを押し、「キーボード - 日本語」を選択して追加します。
そして「キーボード - 英語」を削除し、「キーボード - 日本語」を一番上に持っていけば OK です。
(筆者は英語キーボードを使っているのでこのあたり間違えていたらご報告ください)
emacsでの日本語入力
adduser
コマンドでユーザ登録すると、/etc/template/Default
以下のファイルがホームディレクトリにコピーされます。この時、$HOME/.emacs.d/site-start.d/
以下に emacs の日本語入力関係のファイルが3つコピーされます。
- uim.el
- mozc_el
- skk_el
このうち、そのままの状態で読み込まれるのは .el
で終わるファイルだけなので uim.el
が読み込まれます。もし Desktop 環境で fcitx を使っている場合は mozc
を使うと良いでしょう。
$ cd ~/.emacs.d/site-start.d
$ mv uim.el uim_el (uimの設定が読み込まれないようにする)
$ mv mozc_el mozc.el (mozcの設定が読み込まれるようにする)
mozc_el
の中にはサンプル設定が書かれているので必要に応じてコメントを外したり、設定を追加したりしてください。
(ちなみに ~/.emacs.d/site-start.d 以下のファイルでデフォルトでは読み込まないファイルが他にもいくつかディレクトリには存在するはずです)
現時点では、もうひとつ mozc 用の設定ファイルとして mozc-el_el
というファイルがありますが、これは不要ですので消しても OK です(fcitx_mozc パッケージを作り直す時に消します)。
CA証明書
curl や wget で使う信頼する root CA の証明書群は、Plamo-6.2 以前は openssl コマンドに含まれていました。
しかし、Plamo-7.0 では ca_certificate
という独立したパッケージとなりました。これは mozilla からダウンロードした rootCA の証明書データ(firefoxなどで使われるnss内のものです)を元に、使えるデータに変換を行っています。
この変換を行うのが
スクリプトです。
このスクリプトは
$ sudo make-ca -g
というように -g
オプションを付けると mozilla のサーバに繋いで最新の root CA 証明書のデータファイルを取得し、ホスト上の証明書データを更新します。
現在のパッケージでは /etc/cron.weekly/update-cacert.sh
というスクリプトがインストールされるようになっており、このスクリプトの中身が make-ca -g
を実行するようになっています。(2022-02-09更新)
lightdm
ここしばらくは Plamo は runlevel 3 で、コンソールログインした後に startx
コマンドで X を起動するのが通常で、runlevel 5 の調整はほとんどされていなかったと思います。
今回、少しモダンに(というか今や普通ですが)runlevel 5 で起動してディスプレイマネージャ経由でログインできるように調整してみました。デフォルトは runlevel 3 ですが、たまには気分を変えて runlevel 5 で起動してみてはいかがでしょう?
lightdm 起動時はセッションラッパーとして /usr/bin/lightdm-session
が実行されます。この中で設定ファイルとして、
/etc/profile
$HOME/.profile
/etc/xprofile
$HOME/.xprofile
-
/etc/X11/app-defaults/xinitrc./
以下のスクリプト -
$HOME/.xsession
(実行権がついている場合のみ)
を順に読み込みの記述を実行します。adduser
でコピーされる $HOME 以下のファイルでは、.xprofile
を準備していますので、この中で起動時に設定したい環境変数を設定します。具体的には LANG やインプットメソッド方面の、従来は .xinitrc
で実行していたことを実行すれば良いでしょう。
つまり、.xprofile
は、.xinitrc
の最後でデスクトップ環境を起動する記述がありますが、その部分だけ除いた記述になります。
他に
-
/etc/X11/Xresources
,$HOME/.Xresources
があれば xrdb を実行する -
/etc/X11/Xmodmap
,$HOME/.Xmodmap
があれば xmodmap を実行する
という処理が行われます。
私は普段 2 画面環境なのですが、何も設定しないと lightdm のログインダイアログがどっか行ってしまったり、表示が変だったりしますので、/etc/lightdm/lightdm.conf
に以下のような設定をしています(左側に HDMI、右側に VGA のモニタ)。
[Seat:*]
display-setup-script=xrandr --output HDMI1 --primary --left-of VGA1
lightdm-gtk-greeter を使っていますので、/etc/lightdm/lightdm-gtk-greeter.conf
でログインダイアログを設定します。
[greeter]
active-monitor=0
libvirt, qemu
Plamo 7.0 リリース時点の libvirt, qemu ではローカルに VM を作るには色々と足りていませんでした。パッケージを更新、追加していますのでパッケージを更新してください。contrib/virtualization
以下のパッケージすべてが必要なはずです(contrib/network/ 以下の ebtables 含め)。
すべて更新すると Windows も動きます。
virt-manager
これは contrib パッケージですし、あまり使う人はいないかもしれませんが、6.x のころから kvm や libvirt などとともに contrib に置いてあって、私は仕事で使っています。最近は kvm + libvirt は別に準備した Ubuntu マシンに構築し、virt-manager を使ってリモートの libvirt を操作しています。
Plamo 7.0 用の virt-manager を作成するにあたって、ちょっと Plamo 用のパッチを適用してみました。
libosinfo
virt-manager を使って VM を作成する際に、OS を指定しますが、OS/Distribution の一覧は libosinfo というライブラリを使って取得します。この OS などの DB は libosinfoの公式サイトのリリースディレクトリ に osinfo-db-(日付).tar.gz のように置かれています。
ダウンロードして見てみると、単に XML ファイルがディレクトリに分類されて収録されているだけでした。そこで Plamo 用の XML ファイルを他のディストリビューションのファイルをコピーして変更してでっち上げました。
$ osinfo-query os
短縮 ID | 名前 | バージョン | ID
----------------------+----------------------------------------------------+----------+-----------------------------------------
: (snip)
opensuse42.1 | openSUSE Leap 42.1 | 42.1 | http://opensuse.org/opensuse/42.1
opensuse42.2 | openSUSE Leap 42.2 | 42.2 | http://opensuse.org/opensuse/42.2
opensusetumbleweed | openSUSE Tumbleweed | tumbleweed | http://opensuse.org/opensuse/tumbleweed
plamo6.2 | Plamo 6.2 | 6.2 | http://plamolinux.org/plamo/6.2
plamo7.0 | Plamo 7.0 | 7.0_20180220 | http://plamolinux.org/plamo/7.0
rhel-atomic-7.0 | Red Hat Enterprise Linux Atomic Host 7.0 | 7.0 | http://redhat.com/rhel-atomic/7.0
rhel-atomic-7.1 | Red Hat Enterprise Linux Atomic Host 7.1 | 7.1 | http://redhat.com/rhel-atomic/7.1
rhel-atomic-7.2 | Red Hat Enterprise Linux Atomic Host 7.2 |
: (snip)
というような感じで Plamo もリストアップされます。
virt-manager
virt-manage の VM 作成時の OS 一覧は、"Linux" を選択するとメジャーなディストリビューションが一覧されますが、「すべての OS オプションの表示」を選ぶと、ディストリビューションがグループ分けされてメニュー表示されます。
この中に Plamo というグループを作ってみました。このグループはコードに直に書かれていました。
これで Plamo から "Plamo 7.0" を選択すると、あらかじめ定義されたリソース値を指定した状態で VM 作成画面が現れます。
これだけだとまあ見た目だけの問題ですが、一応 Plamo 7.0 を選択すると、デフォルトのでディスクは virtio ディスクに、デフォルトの NIC は virtio-net になるように osinfo の DB を調整してあります。これがないと IDE で rt8139 とかで作られて遅いので、一度 VM 作成前に定義し直さないとだめで意外に面倒です。