2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

デスクトップ向け FreeBSD 派生ディストリビューション MidnightBSD に苦戦する話

Last updated at Posted at 2019-05-11

当方執筆の技術情報に関するライセンス、免責事項、禁止事項


#MidnightBSD
https://www.midnightbsd.org/
Screenshot_2019-05-06 MidnightBSD.png
MidnightBSD is a FreeBSD derived Operating System. A critical goal of the project is to create an easy to use desktop environment with graphical ports management, and system configuration using GNUstep. The vast majority of the operating system will maintain a BSD license. Certain software packages use other licenses such as X.org, GCC, and GNUstep.

※ ロゴ画像は公式サイトより

デスクトップ向けのBSDディストリビューションを訪ねるシリーズ、最後は MidnightBSD です。しかし何やら障害発生中の様子。

#News and Articles
###2019/05/16
今は日本のミラーから落とせなくなっているようです。
indexの更新とミラーへの反映にタイムラグがあるみたい。

mport config set mirror_region us
jp ミラーがダメな時は us ミラーで。

###2019/05/13
#####LINUX.COM に記事を発見
MidnightBSD Could Be Your Gateway to FreeBSD | Jack Wallen | May 11, 2018
https://www.linux.com/learn/intro-to-linux/2018/5/midnightbsd-could-be-your-gateway-freebsd

#####更新キターーーーーー
An additional 234 packages are now available for amd64 1.1 after fixes to a few broken ports. | 3:29 - 2019年5月12日
https://twitter.com/midnightbsd/status/1127521079193407488

日本のミラーが復活しています。mport config set mirror_region jpで有効化。
パッケージ gnome-desktop がインストール可能に。
パッケージ gnustep もインストール出来ました。

#ミラーサイトとか
ざっと見たところ、日本語入力関連パッケージは見当たりません。日本語入力を可能にするには少し作業が必要かも。

###the status of MidnightBSD mirrors
https://www.midnightbsd.org/mirmon/

###pub.allbsd.org
https://pub.allbsd.org/MidnightBSD/mports/packages/amd64/1.1/
###ftp3.midnightbsd.org
ftp://ftp3.midnightbsd.org/pub/MidnightBSD/mports/packages/amd64/1.1/

###日本の Ver1.1 インストール CD ミラー
https://pub.allbsd.org/MidnightBSD/releases/amd64/ISO-IMAGES/1.1/
ftp://ftp3.midnightbsd.org/pub/MidnightBSD/releases/amd64/ISO-IMAGES/1.1/

#参考
リリースノート
https://www.midnightbsd.org/notes/

ドキュメンテーション
https://www.midnightbsd.org/documentation/

#試行錯誤の始まり - indexが壊れてるっぽい?
###うがぁーーー

# mport config set mirror_region jp
# mport index
# mport install midnightbsd-desktop
mport: Package midnightbsd-desktop not found in the index.
# mport install gnome-desktop
mport: Package gnome-desktop not found in the index.

midnightbsd-desktop がインストール出来ないことにより、LiveCD でのデスクトップ環境が立ち上がらないようです。

###色々試したところ、Windowmaker のメタパッケージが生きていました。

# mport install windowmaker-desktop
# mport install xorg-libraries
# mport install xorg


xorg-librariesを別途インストールする必要はないようでした。いくつかのパッケージのダウンロードに失敗してプロセスがコケたのが原因っぽいです。その場合は再度 mport を実行してやると大丈夫でした。

GUI環境のインストール例

mport install xorg mlogin windowmaker-desktop droid-fonts-ttf

mport install xorg mlogind windowmaker-desktop droid-fonts-ttf

###タイプミス!
typoしてました。mloginではなく、mlogindです。失礼しました。

###公式フォーラムでの類似事例の報告
I can't install xorg
http://forum.midnightbsd.org/I-can-t-install-xorg-td80.html

#Xが立ち上がらない
深夜03.jpg

現在VirtualBoxに入れて試していますが、Xが起動せず。

New to FreeBSD. Startx fails with "Cannot run in framebuffer mode.". Help!
https://forums.freebsd.org/threads/new-to-freebsd-startx-fails-with-cannot-run-in-framebuffer-mode-help.68882/
↑こちらの方と似たようなエラーです。フレームバッファデバイスにアクセス出来ないでいて、
dmesg | grep drmとしてやっても何もなし。

深夜02.jpg

vgapci0 ってデバイスは存在するので、xorg.conf でそれを指定すれば良いのかな?もしくは GuestAdditions を導入するか。

深夜04.jpg

/var/log/Xorg.0.log を眺めると Xorg は VirtualBox を認識できているけど、GuestAddition 由来のフレームバッファデバイスがないからフォールバックしようとしてコケてる。なんだか実機で試す方が簡単に動きそうデス。

###VESAでも動かない
梃子でも動かない。
VirtualBox_MidnightBSD_12_05_2019_10_12_22.png

vesaドライバでも動かない、いよいよおかしい。

参考
Xorg, Radeon and KMS problems - freebsd-x11 mailing list
https://lists.freebsd.org/pipermail/freebsd-x11/2014-July/014826.html

類似する事例が SlackWare であるそうで、VirtualBox で BIOS ではなく UEFI ブートすると VESA ドライバが(EE) VESA(0): V_BIOS address 0x0 out of rangeと音を上げるようです。

出典
VirtualBoxにUEFIでインストールしたらXorgサーバーが起動しない時の対処法 - クロの思考ノート
http://note.kurodigi.com/virtualbox-xorg-trouble/

###とりあえずBIOSに設定して再インストールする

BIOSに設定して mport を初期設定したが、現時刻の index には xorg も mlogin mlogind も windowmaker-desktop も見つからない。そこで、

# mport install xorg-server

で何とかXサーバーを入れてみる。

startx が見つからないので xorg-apps を追加

vesa ドライバが見つからないので xorg-drivers を追加しようとして、インデックスにないとエラー。

何度目かの index 更新で日本のミラーのパッケージを上手く落とせなくなったので、ミラーを us に変更。

色々足りないので次のインデックスの更新を待つ。

###i386用だった
手元のBIOS用MidnightBSDインストールCDがi386用だったことに気づく。
amd64用なら少し状況が変わるか?

###amd64用を試す
BIOS用、かつamd64用だと

mport install xorg mlogin windowmaker-desktop droid-fonts-ttf

# mport install xorg mlogind windowmaker-desktop droid-fonts-ttf

に成功する(on usミラー)。

###タイプミス!
typoしてました。mloginではなく、mlogindです。失礼しました。

#Xを起動出来ました!
ここまで長かった。

###wdm
VirtualBox_MidnightBSD_12_05_2019_14_27_01.png
・ウィンドウマネージャの起動に成功。
#####WindowMaker
VirtualBox_MidnightBSD_12_05_2019_14_18_07.png
・ja_JP.UTF-8で起動出来ました。

###mlogind
VirtualBox_MidnightBSD_12_05_2019_12_55_51.png
・ウィンドウマネージャやデスクトップ環境の呼び出し方は未確認。
#####設定ファイル
/usr/local/etc/mlogind.conf
※ 試行錯誤中

###slim
mlogindのベースとなったログインマネージャ(のはず)
出典
MidnightBSD 1.0 now available
https://www.reddit.com/r/BSD/comments/9nkoiv/midnightbsd_10_now_available/

~/.xinitrc を読んで実行してくれるので、ここに起動したいウィンドウマネージャを書いてしまう。
※ 2019年5月14日現在、/usr/local/share/xsessions/ 以下のエントリを参照出来るものの起動出来ないので、その回避策デス。(本来はF1キーで起動するウィンドウマネージャやデスクトップ環境を切り替え)

#####設定ファイル
/usr/local/etc/slim.conf

#Desktop環境の構築

###共通 - アプリケーションメニュー生成
#####MenuMaker
http://menumaker.sourceforge.net/

######インストール

# mport install menumaker

######設定例(一般ユーザーで行う)

$ mmaker fluxbox

既にあるメニューを置き換える場合

$ mmaker -f fluxbox

######メニューを生成可能なウィンドウマネージャ

WindowMaker
Deskmenu
BlackBox
FluxBox
IceWM
PekWM
OpenBox
Xfce4

###共通 - Failed to open"/etc/machine-id": No such file or directory
dbus-uuidgen --ensureを使うと良さそう。他にはsetup-machine-idとか。

# dbus-uuidgen --ensure

※ このコマンドだけでO.K.でした。

もしくは
# dbus-uuidgen --ensure=/etc/machine-id
※ どうなんだろ、これ。

あるいは
# setup-machine-id

/etc 以下にあんまり設定ファイルを置きたくない。よって、/var/lib/dbus/machine-id から /usr/local/etc/machine-id にシンボリックリンクを張って、さらにそこから /etc/machine-id にリンクを貼ると良いか? を生成。

####出典
dbus-uuidgen - dbus.freedesktop.org
https://dbus.freedesktop.org/doc/dbus-uuidgen.1.html

Missing /etc/machine-id on FreeBSD/TrueOS/DragonFly BSD et al - Stack Exchange
https://unix.stackexchange.com/questions/396052/missing-etc-machine-id-on-freebsd-trueos-dragonfly-bsd-et-al

It is OK to change /etc/machine-id? - Stack Exchange
https://unix.stackexchange.com/questions/402999/it-is-ok-to-change-etc-machine-id

###共通 - 壁紙画像の設定
####xloadimage

$ xloadimage -onroot -fullscreen 画像データのパス

/usr/local/etc/xloadimagerc で /usr/local/share/wallpapers を指定しておくとwallpapers 内の画像データをファイル名だけで指定出来て便利。フルパスを省ける画像のリストはxloadimage -listで確認出来る。

###共通 - 視覚効果の有効化
お好みで

xcompmgr

compiz

compton

###Window Maker(+GNUstep)

####Window Maker
VirtualBox_MidnightBSD_16_05_2019_13_44_53_windowmaker.png

# mport install windowmaker-desktop

####Window Maker + GNUstep

# mport install windowmaker-desktop
# mport install gnustep

###BlackBox

VirtualBox_MidnightBSD_16_05_2019_13_59_14.png

# mport install blackbox

###FluxBox

VirtualBox_MidnightBSD_16_05_2019_14_46_47_fluxbox.png

# mport install fluxbox

###IceWM

VirtualBox_MidnightBSD_15_05_2019_21_32_08_icewm.png

# mport install icewm

###OpenBox

VirtualBox_MidnightBSD_16_05_2019_14_56_23_openbox.png

# mport install openbox

###GNOME3

gnome-session が dbus のエラーで立ち上がらない(2019/05/14)
Failed to open"/etc/machine-id": No such file or directory
# dbus-uuidgen --ensure で O.K.

# mport install gnome3

※ パッケージが生きている場合はこれで。

mport install gnome-desktop
mport install gnome-session

・proc のマウントが必要。
・上記ふたつを入れても色々足りなくてセッションが起動できない。
・他にgnome-sessionも必要っぽい。あとはprocのマウントとか。
・自分は gnome-shell をビルドしようとして evolution-data-server のビルドで止まってしまっているけど、/usr/mports/x11 のメタパッケージ gnome3(もしくはgnome3-lite)のビルドが通れば gnome 環境を一式揃えられそう。

###Xfce4
VirtualBox_MidnightBSD_17_05_2019_00_48_59_xfce4.png

dbus のエラーで立ち上がらない(2019/05/14)
Failed to open"/etc/machine-id": No such file or directory
# dbus-uuidgen --ensure で O.K.

# mport install xfce4

 ※パッケージが生きている場合はこれで。

mport install xfce4-session

xfce4-desktop xfce4 パッケージは現在 mport でインストール出来ない(2019/05/13)
※ /usr/mports からのビルドについては現在検証中。mport install xfce4 と出来れば一番簡単なんだけど。

ビルド時のオプションを少し工夫する必要があるが、

# cd /usr/mports/x11-wm/xfce4
# make install clean

 ※ ビルドを行うならマシンパワーとHDD容量に余裕があるのが望ましい。

###midnightbsd-desktop

####ビルド

# cd /usr/mports/core/midnightbsd-desktop/
# make install clean

・dialog4portsのビルドでコケるので、事前に mport install dialog4ports でパッケージを導入しておく。
・今のところ midori のビルド&インストールに関連して webkit-gtk3 のビルドで挫折中。
・どこかでコケるので、中々完走出来ない。svnlite で最新版 mport を入れると変わるか?

###enlightenment DR17
VirtualBox_MidnightBSD_15_05_2019_19_31_43.png

####ビルド

# cd /usr/mports/x11-wm/enlightenment
# make MAKE_JOBS_UNSAFE=yes install clean

# make install clean
MAKE_JOBS_UNSAFE=yes が必要だった。

build時、-fPIC オプションを渡してやる必要がある。今回はMakefileに少し書き足した。

install プロセスがこける。 midnightbsd○○○ が生成されているのに freebsd○○○ を探しにいって「そんなファイルねーよ」となっている。

FAKE_DESTDIR中に必要なファイルは全て生成されているため、 FAKE_DESTDIR に移動し cp -r local /usr/ として、野良インストールすることで E17 を起動することは出来た。

課題:
原因の発見とインストールプロセスの適正化。
システムトレイ用にstalonetrayを用意。

Art Works

MidnightBSD Art Project
https://www.midnightbsd.org/art/
###midnightbsd-backgrounds パッケージ
VirtualBox_MidnightBSD_15_05_2019_19_29_31.png

独特のセンスが光る魅力的な壁紙。
/usr/local/share/wallpapers以下にインストールされるようである。

####インストール

# mport install midnightbsd-backgrounds

#日本語入力環境
###移植候補
mports 内に ibus があるので、ibus-〇〇〇 系の移植に挑戦してみる。

ソースコードは wget と url の手入力で入手した。

Anthy-9100hの野良ビルドに成功。
目下挑戦中の ibus-Anthy のビルドが通れば日本語入力環境が整うはず……Anthy-utf8が必要?

関連リンク
https://github.com/phuang/ibus-anthy
https://github.com/phuang/ibus-anthy/network/members
https://slackware.jp/packages/anthy.html
http://www.fenix.ne.jp/~G-HAL/soft/nosettle/anthy.html

他には ibus-skk も魅力的。あるいは、ibus-canna から魔改造 canna を使うのも面白そう。mozcは移植作業がやや骨だろうか。

###anthy + ibus-anthy

VirtualBox_MidnightBSD_19_05_2019_07_13_11_japanese_input.png

Anthy-9100h + ibus-anthy-1.2.7 の野良ビルドに成功。

####ibus-anthyのビルドに際して
野良ビルド時 ./configure で MidnightBSD なんて知らねーよボケェと怒られる時は

./configure --build=x86_64-pc-freebsd9

等、適当なfreebsdのバージョンを放り込んでやると良い。

swig-2.0.12 が必要。

ビルドした swig が「libstdc++.so.6 が見つからない」

ln -s /usr/local/lib/gcc6/libstdc++.so.6 /usr/local/lib/
※ibusビルド後に生成したリンクは削除。

ビルドしたswig が「/usr/include/anthy/anthy.h が見つからない」

ln -s /usr/local/include/anthy /usr/include/
(もしくはanthyソースコードのanthyフォルダを/usr/include/に放り込む)
※ibusビルド後に/usr/include/anthyは削除

※ swig はただ野良ビルドするだけではなく、いくつか適切にオプションを与える必要がありそう。
※ 最新版 mports では swig30 のみだが、1.1 のインストール CD には swig20 が入っているようである(容量圧迫時に横着して mports を削除 → 最新版をインストールとやってしまったのでswig20のビルドは未確認)。

ビルド中に
ibus-anthy-1.2.7/engine/anthy.xml
及び
ibus-anthy-1.2.7/setup/anthyprefs.py
の二つのファイルの生成(文字列置換)に失敗するので事前に *.in から Makefile に基づいて手入力で作成しておく。

#Webブラウザ及び各種インターネット関連アプリケーション

##Webブラウザ

###Chromium

ビルド

# cd /usr/mports/www/chromium && make install clean

###Epiphany

VirtualBox_MidnightBSD_20_05_2019_09_46_03_epiphany_2.png

ビルド

# cd /usr/mports/www/epiphany && make install clean

###Midori

ビルド

# cd /usr/mports/www/midori && make install clean

※ 自分の環境では webkit-gtk3 のビルドでコケる。

###Opera

# mport install linux-opera

※ 現時点ではいくつかの満たされない依存関係によりインストールが完了しない(2019/05/19)

※ linux-○○○ と命名されている Linux 版ソフトは linux-c6(CentOS 6)や linux-f10(Fedora 10) といった Linux 向けバイナリの互換環境のインストールが必要になる。依存パッケージが多いソフトは index の状態次第ではインストールに失敗することがあるようだ。

##インターネット統合アプリケーション

###Seamonkey

ビルド

# cd /usr/mports/www/seamonkey && make install clean

#/usr/mports 及び、「mports」について

###公式ドキュメントより引用(quoted from official documents)
Introduction

mports is the MidnightBSD ports collection. It contains hundreds of ported software applications ready to use on MidnightBSD. mports simplifies installing software packages on your desktop system.

In the future, mports will also include precompiled packages to speed up the installation process. An automated software update system is planned. There are a few precompiled software packages on the MidnightBSD FTP server.

Using mports

You can install mports during the installation of MidnightBSD. If you forgot to do so, you may download the latest mports by using svn. You can use

cd /usr
svn co http://svn.midnightbsd.org/svn/mports/trunk mports

もしくは svn をインストールせず svnlite を用いて

cd /usr
svnlite co http://svn.midnightbsd.org/svn/mports/trunk mports

Updating mports periodically is recommended. New versions of software and additional software are added all the time. Keeping up to date will help you maintain best security practices and possibly give you new features and functionality or bug fixes.

To install an mport, simply do the following:

cd /usr/mports

Pick a category from the file system list or use make search key=term where term is what you want to search for. Once you have the mport, you can type make install clean to install it and clean up the compiling mess.

It is recommended that you install mports/sysutils/portupgrade at your convenience. It will allow you to upgrade mports and install mports much easier. You can simply type portinstall portname to install a port called portname. It can speed up the process considerably.

To uninstall a port, simply goto the directory of the mport and type make deinstall

If you prefer to use packages, consult the mport command. It can install packages via mport install or remove packages via mport delete. You can use mport list to see what is currently installed.

※ portupgrade は MidnightBSD では廃止されたのか見当たりません。

Introduction(of The fake system)

The fake system is a large change for the mports system, which has caused many ports to destabilize. This document is intended to give developers an understanding of the issues that cause fake errors, and the knowledge to fix those errors.

The fake system goes through the following steps to install a port:

  1. The port is fetched, extracted, patched, configured, and built as normal. There are no changes to these parts of the system.
  2. The port is installed into a temporary directory called FAKE_DESTDIR. This is usually ${WRKDIR}/fake-inst-${ARCH}.
    The actual installs is done as follows:
    1. ${FAKE_DESTDIR}/${PREFIX} is created, and populated with the directory layout with mtree.

    2. The pre-fake target is called. This target runs in the normal environment.

    3. The pre-install target (if it exists) is called. This target does not run in a normal environment. Instead, several variables are prepended with the FAKE_DESTDIR. These variables are PREFIX, LINUXBASE, and KMODDIR. Note that PREFIX is used to define many other variables, so much so that almost all the variables used in an install target are faked. This means that a pre-install target can do something like:

      ${CP} myconfig ${PREFIX}/etc

      and it just works. If you need the real prefix it is available as TRUE_PREFIX.

    4. The pre-su-install target (if it exists) is called in the fake environment.

    5. By default the dist's makefile (the makefile down in WRKSRC) is called like this (simplified for clarity):

      make DESTDIR=${FAKE_DESTDIR} install

      However, if your port has a do-install target, this will be called instead in the fake environment.

    6. The post-install target (if it exists) is called in the fake environment.

    7. The post-fake target is called in the normal environment.

  3. A package is created from the files installed in FAKE_DESTDIR.
  4. This package is installed

###公式ドキュメント
mports Documentation
https://www.midnightbsd.org/documentation/mports/index.html

mports's Fake System
https://www.midnightbsd.org/documentation/mports/fake.html

###印象
#####興味深いパッケージ管理システム
触った感じは checkinstall --install=no に似ているように思う。バイナリパッケージ管理と ports 的ビルドシステムの統合がなされており面白い。現状 mports に存在しないアプリケーション(日本語入力環境など)については自前で ports から移植する必要がありそう。

mport コマンド

####パッケージインデックスの更新

# mport index

####パッケージのインストール

# mport install 〇〇〇

※〇〇〇にはパッケージ名が入る

mport GUIフロントエンド

####mport-manager
VirtualBox_MidnightBSD_15_05_2019_19_42_06.png

#####インストール

# mport install mport-manager

#####実行

端末エミュレータから

$ su
# mport-manager

#To Be Continued
###予告、もしくは予定

mports の作成、及びバグレポート

anthy、ibus-anthy、kasumi の mports の作成(freebsd の ports から移植が簡単か?)。
enlightenment の fake install 失敗の原因を見つけ MidnightBSD の開発に報告。

ブラウザ(& メーラー)の導入

今のところ wget しか入れてないので流石に不便。
firefox とか chromium とか入れたい。

#####MidnightBSD ルック&フィール カスタマイズ
######Enlightenment DR17 + 日本語入力環境 + 各種 EFL アプリ

Enlightenment 公式 EFL アプリ一覧

######GNUstep + 日本語入力環境 + 各種 GNUstep アプリ
MidnightBSD が志向する GNUstep なデスクトップ環境の構築にも少し触ってみたい。
見た目のダサさに定評?がある GNUstep だけど、最近は色々魅力的な theme があるみたい。

Themes - GNUstepWiki
http://wiki.gnustep.org/index.php/Themes

Sleek.theme が好きっス。

GNUstep Application Project - GAP

#達成済み
デスクトップ環境の起動まで辿り着きたい。

ディスプレイマネージャでmlogindを利用したい。
 ↓
代替として slim + .xinitrc で運用可能でした。

パッケージ midnightbsd-backgrounds を試してみたい。

日本語入力環境の導入

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?