NomadBSDを試す 第一話
今日は2021年6月17日です。
今週は、DELL Latitude 3340でNomadBSDを試すという遊びを楽しんでいます。
NomadBSDは……ハードドライブにインストールせずともUSBメモリからライブ起動できるFreeBSDの派生物だそうです。(https://nomadbsd.org/)
しかも、OpenboxとはいえデスクトップGUI環境がついていて、Webブラウザ(Firefox)もLibreOfficeもPCMan File ManagerもLeafpad Text Editorもプリインストール済み??
素晴らしすぎる。 (バカにしてはいけません。 Openboxはいいんですよ。)
ハードディスクにインストールせずに、あなたのPCでFreeBSDを走らせたらX.orgが起動するか、スピーカーから音が出るか、ビデオがヌルヌルと再生できるか、ネットワークがつながるか、Wi-Fiが使えるか、タッチパッドが使えるか、動作確認できるんですか?
夢のようですね。
ちなみに、デスクトップフレンドリーな割と箱から出してGUIもすぐ使えるFreeBSDというのは、ちょっと昔からいくつかありました。
PC-BSDとかTrueOSとかUbuntuBSDとかGhostBSDとかFreeSBIEとか。 ダメですね。 死屍累々です。
どれも開発休止か終了です。(追記:GhostBSDはまだ生きているようです。 失礼しました。 おかしいな、もうやめだ、という告知を読んだ記憶があるのですが。 夢だったのか、作られた記憶なのか。)
なんとなく、時間ができたので遊んでみました。 ブートするUSBメモリには、Toshibaの32GB USBペンドライブを使用。 USB3.0対応です。
最初に、DELL Latitude 3340のHDDにインストール済みのUbuntu 20.04 LTSを使います。 まずはNomadBSDの公式Handbookletに従ってUSBメモリにOSイメージを書き込み。
ダウンロードしたのはnomadbsd-130R-20210508.amd64.img
最初は公式Handbookletどおりに古典的なddコマンドを使いました。
# lzma -d nomadbsd-x.y.z.img.lzma # dd bs=1M if=nomadbsd-x.y.z.img of=/dev/sdX conv=fsync
OSのイメージを書き込むデバイスファイルの名前(/dev/sdナントカ)の部分は、ご自分のシステムで何回も確認してください。 自己責任ですよ。 間違えて大事なシステムの起動パーティションを消してしまっても、私は責任を持てません。
NomadBSDのブートイメージファイルは4GB以上あるので、USBメモリへの書き込みにも割と時間がかかります。 気長に行きましょう。
ライブ起動用USBメモリが出来上がりました。 が、何故かUSBメモリからDELL Latitude 3340をブートしようとすると、「OSイメージがない」というようなことを言われます。
便利なFreeBSD派生物登場、というニュースがあったときは、その後の展開としてよくあることです。
諦めようかと思いました。
が、 今のインターネットにはbalena Etcherというのがあって、これがUSBメモリへのOS書き込みの際、書き込み後に検証もしてくれるというのですね。 エンジニアがなんと言おうとddコマンドでは、ブートしないUSBメモリを作ってしまうことは時々あるそうです。
5年前だったら、未熟者はUNetbootinを使うところです。 Unetbootinもけっこう見た目が古臭くなっていますねえ。
ものは試しとUbuntu用balena Etcherを公式からダウンロードして、試しました。 すると、なんと一発で有効なUSBメモリが作れたではありませんか。
結局ddコマンドではバイナリイメージの書き込みに失敗していたということです。
起動してみるとNomadBSDの初回ブートはこんな感じです。





カーネルが読み込まれています。FreeBSDのカーネルです。かっこいいですね。



もしかして、ネットワークインターフェイスまで進んでいる? しかも接続中? FreeBSDで?





鬼門。キーボードの設定。 Japaneseですけど、PC98とかいまどき言われても困ります。 












NomadBSDセットアップが終わって再起動中。悪い予感がする。FreeBSDのセットアップがこんなに簡単でいいわけがない。 Qアノンの陰謀だ。(笑)



















夢じゃない。 本当にいきなりWi-Fiが動いている。 FreeBSDで???







プリインストール済みのアプリケーション。クローズアップ。 VLCとかmpvとか。夢でも見ているのではないか。 すごいぞNomadBSD。









VLCプリインストールなので、Openboxでビデオも再生可能。(スクリーンショット画像は大人の事情で加工しています)





screenfetchコマンドを打ったところ。 すごいやNomadBSD
別のPC(4Kディスプレイのラップトップ、hpのSpectre X360)でUSBメモリからブートすると、こんな感じです。
あっさりと4KディスプレイでFreeBSDのデスクトップ環境が立ち上がっています。 感動しました。
上のスクリーンショットは、リサイズされています。クリックすると外部のイメージホスティングサイトに保存してある、本当の4Kの画像を表示します。
スマートフォン&モバイル回線でアクセス中の方は、うかつにクリックしない方がいいです。
NomadBSDは素晴らしい、ということで、簡単にセットアップ(ライブブートしたUSBメモリにシステムファイルは入ったままなので、インストールしたとはいいにくい)した結果の、設定ファイル類を後学のために残しておきます。
/boot/loader.confの中身。
# graphics_enable="YES" # beastie_theme="/boot/themes/default/theme.conf" loader_logo="nomadbsd" loader_brand="nomadbsd" loader_menu_frame="none" loader_menu_title="Welcome to NomadBSD" loader_menu_title_align="left" ums_load="YES" aio_load="YES" hint.pcm.0.eq="1" hint.pcm.1.eq="1" hint.pcm.2.eq="1" hint.pcm.3.eq="1" hint.pcm.4.eq="1" hint.pcm.5.eq="1" hint.pcm.6.eq="1" hint.pcm.7.eq="1" hint.pcm.8.eq="1" hint.pcm.9.eq="1" hw.snd.vpc_autoreset=0 hw.syscons.bell=0 hw.usb.no_pf=1 hw.usb.no_boot_wait=0 hw.usb.no_shutdown_wait=1 hw.psm.synaptics_support=1 hw.psm.trackpoint_support=1 kern.cam.scsi_delay=10000 # Use new virtual terminal driver hw.vga.textmode=1 kern.vty=vt # Make sure to wait for the root device to appear before trying root mount vfs.root_mount_always_wait=1
/etc/rc.confの中身
allscreens_flags=”green” bsdstats_enable=”NO” clear_tmp_X=”NO” cupsd_enable=”YES” dbus_enable=”YES” devfs_system_ruleset=”desktopuser” dsbdriverd_enable=”YES” dsbmd_enable=”YES” entropy_file=”NO” hostname=”NomadBSD” kld_list=”cuse4bsd” ldconfig_insecure=”YES” local_startup=”/usr.local.etc/rc.d” lpd_enable=”NO” ntpd_enable=”YES” ntpd_sync_on_start=”YES” powerdxx_enable=”YES” savecore_enable=”NO” sendmail_enable=”NO” sendmail_msp_queue_enable=”NO” sendmail_outbound_enable=”NO” sendmail_submit_enable=”NO” setup_mouse_enable=”YES” syslogd_enable=”YES” update_motd=”NO” webcamd_enable=”YES” economy_cx_lowest=”C2″ performance_cx_lowest=”C2″ initgfx_enable=”YES” slim_enable=”YES” init_vbox_enable=”YES” avahi_daemon_enable=”YES” ipv6_activate_all_interfaces=”YES” ackfwl_enable=”YES” load_iichid_enable=”YES” keymap=”” initgfx_kmods=”/boot/modules/i915kms.ko” ifconfig_em0=”DHCP” ifconfig_em0_ipv6=”inet6 accept_rtadv” wlans_iwm0=”wlan0″ create_args_wlan0=”down country JP” ifconfig_wlan0=”up scan WPA DHCP” ifconfig_wlan0_ipv6=”inet6 accept_rtadv” ifconfig_ue0=”DHCP” ifconfig_ue0_ipv6=”inet6 accept_rtadv”
/etc/sysctl.confの中身。
# $FreeBSD: src/etc/sysctl.conf,v 1.8.34.1 2009/08/03 08:13:06 kensmith Exp $ # # This file is read when going to multi-user and its contents piped thru # ``sysctl'' to adjust kernel values. ``man 5 sysctl.conf'' for details. # # Uncomment this to prevent users from seeing information about processes that # are being run under another UID. #security.bsd.see_other_uids=0 # Allow users to mount devices vfs.usermount=1 vfs.vmiodirenable=0 vfs.read_max=16 vfs.write_behind=0 kern.maxvnodes=60000 # Sync files, directories and metadata every 15/14/13 sec. This performs better # than mounting / with -osync but fsck is still possible after crashes. kern.filedelay=15 kern.dirdelay=14 kern.metadelay=13 # Disable creating *.core files kern.coredump=0 # Disable bell kern.vt.enable_bell=0 # Improve responsiveness on high work load. kern.sched.preempt_thresh=224 # Runtime of each thread before rescheduling in units of 10ms. kern.sched.slice=3 # A table of 100000 file descriptors should be enough for desktop system. kern.maxfiles=100000 kern.evdev.rcpt_mask=12 # Good sound sampling quality hw.snd.feeder_rate_quality=3 # Max. number of virtual channels hw.snd.maxautovchans=32 # Improve write speed a little bit vfs.lorunningspace=1048576 vfs.hirunningspace=5242880 # Fixes an iterrupt problem on MacBook Air dev.hdac.0.polling=1 dev.hdac.1.polling=1 dev.hdac.2.polling=1 dev.hdac.3.polling=1 dev.hdac.4.polling=1 dev.hdac.5.polling=1
/etc/fstabの中身(USBメモリからのライブ起動ですから、ちょっと風変わりかもしれません)。
/dev/label/nomadroot / ufs rw,noatime 1 1 tmpfs /tmp tmpfs rw,mode=1777 0 0 tmpfs /var/log tmpfs rw 0 0 proc /proc procfs rw 0 0 /dev/label/nomaddata /data ufs rw,noatime 1 1 /data/compat /compat nullfs rw,late 0 0 /data/var/tmp /var/tmp nullfs rw,late 0 0 /data/var/db /var/db nullfs rw,late 0 0 /data/usr/ports /usr/ports nullfs rw,late 0 0
/usr/local/etc/X11/xorg.conf.d/10-input-keyboard.confの中身。
Section "InputClass" Identifier "Keyboard0" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "libinput" Option "XkbRules" "evdev" Option "XkbLayout" "nec_vndr/jp" Option "XkbVariant" "" Option "XkbOptions" "terminate:ctrl_alt_bksp" EndSection
# いや、”XkbLayout” “nec_vndr/jp”って…PC98のキーボードなんて使ってませんよ。(笑)
# セットアップの時ちゃんとOADGって選択したのに、なぜPC98に戻しちゃうかな…。 バグ?
# 悪い予感がする。(Star Wars)
/usr/local/etc/X11/xorg.conf.d/10-input-touchpad.confの中身。
Section "InputClass" Identifier "Touchpad" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Driver "libinput" Option "MiddleEmulation" "on" Option "DisableWhileTyping" "on" EndSection
/usr/local/etc/X11/xorg.conf.d/00-video-initgfx.confの中身。
Section "Device"
Identifier "Intel Graphics"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSection
~/.xinitrcの中身。
#!/bin/sh export EDITOR=vim . ~/.xprofile [ -z "$1" -o "$1" = "default" ] && exec ck-launch-session openbox-session exec ck-launch-session "$1"
~/.xprofileの中身。
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/nomad/bin
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_FONT_DPI=96
#
# Some display managers don't source the login files /etc/login.conf and
# ~/.login_conf. Make sure the environment variables defined in those files
# are set.
#
for e in $(env -L $(whoami); env -U $(whoami)); do
export "$e"
done
#
# If not set to "unix", gvfs will use bsdisks which fails to unmount volumes
# mounted on directories it does not expect.
#
export GIO_USE_VOLUME_MONITOR=unix
xrdb ~/.Xresources
uid=$(id -u)
#
# Check if ~/.cache is a symbolic link to a directory owned by the user.
# If the link's target is not a directory or does not exist, create a
# directory owned by the user under /tmp, and make ~/.cache a symbolic
# link to it.
#
if [ -L ~/.cache ]; then
if [ -d ~/.cache ]; then
ownerid=$(stat -L -f %u ~/.cache)
if [ "${ownerid}" != "${uid}" ]; then
recreate_cache=1
fi
else
recreate_cache=1
fi
if [ "${recreate_cache}" = "1" ]; then
user=$(whoami)
unlink ~/.cache
cachedir=$(mktemp -d /tmp/${user}.XXXXXX)
ln -s ${cachedir} ~/.cache
fi
fi
#
# Kill dbus services from a previous session in order to prevent hangs.
#
for s in 15 9; do
for p in dbus-launch gvfsd-fuse; do
pgrep -U ${uid} -q $p && pkill -$s $p
done
done
eval $(dbus-launch --sh-syntax)
# Apply screen settings from DSBDisplaySettings
~/.config/DSB/dsbds.sh
# Apply screen settings from ArandR
~/.screenlayout/default.sh
tpquirk
enable_tapping
~/.config/xkbdmap.sh
~/.config/xkbdmap.shの中身。
# setxkbmap -rules evdev -layout "nec_vndr/jp" -variant "" # #
bsdinfoコマンドの結果。
nomad@NomadBSD:~% bsdinfo
100010100111110111000 00
100001100101011110100000011111001000010001Hostname: NomadBSD
100011011001111100000011100010010110110001Bootmethod: BIOS
100111001111101110110100110111100111010011OS: FreeBSD amd64
10000000001101100110101111001100110011110 Version: 13.0-RELEASE
111001001001100110111001110010000111100101CPU: Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz
011010100000100001000001011100000110011111RAM: 1404M / 16272M
000110100010001100010100111000010000110101Processes: 90
11010111000010111100110010001110110101001 Shell: csh
010100010010111101101111101100000000011111Uptime: 0:04
11001000111011001001001111000100100100111
00010111000010100010010001101001111001110
010100010111001000110011100101011011101
00001110010000001100111100000110100101
00001000001000100101010111111011111
1011011110010010110000101011101
011000011001110110010100000
00000101100000000
nomad@NomadBSD:~%
nomad@NomadBSD:~% freebsd-version
13.0-RELEASE
nomad@NomadBSD:~% uname -a
FreeBSD NomadBSD 13.0-RELEASE FreeBSD 13.0-RELEASE #0: Tue May 4 21:43:29 UTC 2021 root@NomadBSD:/usr/obj/usr/src/amd64.amd64/sys/NOMADBSD amd64
nomad@NomadBSD:~%
screenfetchコマンドの結果。
nomad@NomadBSD:~% screenfetch
nomad@NomadBSD
``` ` OS: FreeBSD
` `.....---.......--.``` -/ Kernel: amd64 FreeBSD 13.0-RELEASE
+o .--` /y:` +. Uptime: 41m
yo`:. :o `+- Packages: 792
y/ -/` -o/ Shell: csh (Astron)
.- ::/sy+:. Resolution: 1366x768
/ `-- / WM: OpenBox
`: :` WM Theme: 8
`: :` GTK Theme: Adapta [GTK3]
/ / Icon Theme: Papirus
.- -. Font: Droid Sans 12
-- -. Disk: 39G / 195G (21%)
`:` `:` CPU: Intel Core i5-4210U @ 1.70GHz
.-- `--. GPU: Haswell-ULT Integrated Graphics Controller
.---.....----. RAM: 1549MiB / 16384MiB
nomad@NomadBSD:~%
問題点と今後の改善テーマ
(1)
そもそもインストーラの挙動がおかしかったのですが、日本語キーボードの設定がなんだかおかしいです。 今どきなんですか、NECとかPC98とか。(笑)オワコンにもほどがある。
vim使って設定ファイルいじって、普通の日本語キーボードにしないといけません。 実際、どうも端末でパイプが使えないようです。 | が入力できない。
ページャーが使えないと、割と不便です。
(2)
日本語のインプット環境ができていません。
uim-mozcかfcitx-mozcをインストールする予定。
(3)
日本語スクリーンフォントが「ギリギリ」とか「なんか微妙」な世界です。
NotoかMiguをインストールする予定です。
ヒノトリホンヤクの代表(私のことですが)はFreeBSDのインストールとセットアップだけなら百戦錬磨のベテランです。
なにしろ、自宅にはいまだに1997年発行の「FreeBSDフルコース」という入門書があるくらいです。
当時のFreeBSDのバージョンなんか、2.2-RELEASEですよ。 インストーラのブートがフロッピーディスクで、データがCD-ROMだった頃の神話です。
インストールだけなら何十回もやりました。
PC-BSDもTrueOSもUbuntuBSDもGhostBSDもFREESBIEも、みなお試し済みです。
そんな私が言うのだから、多少は説得力があってもいいと思います。
NomadBSDはすごくいいです。 USBからブートできて、HDDを犠牲にしないでもFreeBSDを試すことができます。
LibreOfficeまでプレインストールされていて、すぐに使えます。
ちょっとしたUSBメモリ(8GBくらい)さえあればあなたのPCでFreeBSDを使ってみることができます。
ぜひお試しを。
NomadBSD簡単に使えて感動したので第二話に続きます。


