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簡単に使えて感動したので第二話に続きます。