2020/01/23(木)Raspberry Pi 3 Model B+ FreeBSD12.1 その他の情報

雑多な情報を、書き残しておきます。

・FreeBSD RaspBerry Pi 3 は FreeBSD/ARM 対応プロジェクトの一環で開発作業が続けられており、
 位置づけは、Tire 2 となっています。
 従って、Tire 1 サポート(i386、amd64 が該当)のみとなっている FreeBSD UPDATE は使えません。

・FreeBSD/ARM 対応プロジェクトは、Tire 1 に乗せる準備が進められている模様。
 FreeBSD が組み込み機器用途で使用できる最初のプラットフォームになれるかも。

・FreeBSD における GPIO 制御は、gpioctl コマンドが使用できます。
 Perl には、これと同じことを Perl スクリプトで行うための Device::BCM2835 なるモジュールや、
 RPi::Pin、WiringPi::API などありますが、FreeBSD12.1 ではどれも使えません。

 以下のような感じでピン情報を取得します(例):
  $result = qx(gpioctl -l) ;
  chomp ($result) ;
  my @iostat = split("\n",$result) ;

  foreach my $getpin (@iostat) {
    $getpin =~ /\Apin\s(\d+):\s+(\d)/ ;
    next if ($pinnum ne $1) ;
    $lvlstat = $2 ;
    last ;
  }
# $pinnum に文字列でピン番号を与え、$lvlstat に 0か1 が入ります。
# 0 がL、1 がHです。

2020/01/23(木)Raspberry Pi 3 Model B+ に FreeBSD12.1 をインストール (3)

次は、任意でユーザ環境の設定です。
.cshrc や .profile でお好みな環境をセットアップしますが、ここは個人の好みの部分なので、
説明省略。

筆者の環境では、基本的に Perl5 を使いたいので、
このあと、ports にてパッケージインストールを行います。
以下のような感じで root ユーザにて導入します:
# cd /usr
# mkdir ports
# portsnap fetch extract
# cd /usr/ports/editors/vim-console
# make install
# make clean

# cd /usr/ports/misc/lv
# make install
# make clean

# cd /usr/ports/ports-mgmt/portupgrade
# make install
# make clean
portupgrade のインストールにて、依存するパッケージとして、ruby や Perl がインストールされます。

途中、青地画面で、インストールオプションの選択画面が何度か出るが、適当にデフォルト値に任せずに、必ず内容を確認して作業しましょう。

2020/01/23(木)Raspberry Pi 3 Model B+ に FreeBSD12.1 をインストール (2)

起動ができるようになったら、次の段階として、設定を行います。
/etc/rc.conf に最初に記述されている、イーサネット関連のデフォルト設定値は、
ifconfig_DEFAULT="DHCP"
となっています。
この状態で起動すると、DHCPネゴシエーションで通知された参照用DNS設定ファイル /etc/resolv.conf が自動生成されています。
当然のことながら、LAN上にDHCPサーバが無い場合、このファイルは自動生成されません。

筆者の場合は以下のようになりました:
search deverop.basekernel.ne.jp
nameserver xxx.xxx.xxx.xxx
nameserver yyy.yyy.yyy.yyy
#セキュリティ対策上、IPアドレスは伏せてあります。

見てのとおり、IPv4 で機能しています。
適宜変更が必要かもしれません。

先ずは、ユーザ名 freebsd の削除・変更と、root パスワードの変更。
初期値は、ユーザ名 freebsd パスワード freebsd でログインでき、root のパスワードは、root なので、変更すべきです。(メンテナンスを簡単に始められるようにこうなっている)

先ず、ユーザ名 freebsd を削除して、新たに任意のユーザ名を追加、root のパスワードは変更しましょう。
更に、/etc/group の wheel 行に、root ユーザになれるように 新たに追加した任意のユーザ名を追加し、ユーザ名 freebsd は削除することを忘れないように。

次に /etc/rc.conf の変更。以下のようにします:
hostname="bypass_ctl"
defaultrouter="172.16.15.1"
ifconfig_ue0="inet 172.16.15.188 netmask 0xffffff00"

ntpd_enable="YES"
ntpd_sync_on_start="YES"

inetd_enable="YES"
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
growfs_enable="YES"

keymap="jp.kbd"
ホスト名、IPアドレスやネットマスク、デフォルトルータあたりの設定は、使用中のネットワークポリシーに合わせます。
/etc/ntp.conf はデフォルト値でも大丈夫ですが、ネットワーク内に公開NTPサーバがある場合や、指定されている場合は、そのサーバを設定します。

基本インストールの最後に、タイムゾーンの設定です。
日本時間の指定は、以下のコマンドを root ユーザにて実行します:
# tzsetup /usr/share/zoneinfo/Asia/Tokyo
一度設定すれば、次回の起動以後もこのタイムゾーンで動作します。
設定の最後に
# shutdown -r now
で、再起動します。

2020/01/23(木)Raspberry Pi 3 Model B+ に FreeBSD12.1 をインストール (1)

2020/01/23 3:55 電子工作
以前に比べれば、格段に対応精度は上がっている模様。
ですが、デバイスドライバの関係で無線インタフェースはサポート外です。
とはいえ、今のところはこれで充分だったりするんですが。。

20200123.jpg


今回、Raspberry Pi は、LANインタフェースとNTPによる時刻管理をする役目と、GPIO に接続するハードウェアの制御インタフェースに用います。
何のハードウェア制御かは、企業秘密事項に該当するのでお話することはできません。

ここではいつもの「自分メモ」用に FreeBSD 12.1 を Raspberry PI 3 Model B+ にインストールする手法を記録していきます。
因みに昨今では Raspberry Pi 4 が出現していますが、まだ FreeBSD は対応していない模様。

1)RaspBerry Pi 3 対応の FreeBSD インストールイメージファイル取得
https://download.freebsd.org/ftp/releases/arm64/aarch64/ISO-IMAGES/12.1/
Raspberry Pi 3 用の FreeBSD-12.1-RELEASE-arm64-aarch64-RPI3.img.xz をダウンロードしましょう。

2)取得したイメージを MicroSD カードへ書き込む
  Micro SD カードは、32GByte ものを強くお勧めです。
https://www.balena.io/etcher/ (balenaEtcher,Win版/Mac版有り)
  以前のように、別のFreeBSD マシン等で DD コマンドを使う必要性もなく、
  誤って MicroSD カード以外のドライブに書き込んでしまうことを防ぐ機能もあるようです。
  
  このソフトウェアをインストールして、起動してから MicroSDカードへ書き込みますが、
  使い方については説明不要なほど簡単に判るかなと思います。

3)RaspBerry Pi に USBキーボード、HDMIディスプレイ、LANケーブルを挿し込む。
  最後にMicroUSB 電源コードを差し込む。この時、電源は入れないこと。

4)作成した MicroSD ブートカードを RaspBerry Pi 3 のMicroSD カードスロットへ挿し込み、
  ここで電源ON。

5)1分~2分程度で、起動完了します。「Login:」プロンプトが表示されたら、起動完了です。
  以下のような感じで dmesg が表示されます:
−−−<<BOOT>>−−−
Copyright (c) 1992-2019 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.1-RELEASE r354233 GENERIC arm64
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
VT(efifb): resolution 656x416
KLD file umodem.ko is missing dependencies
Starting CPU 1 (1)
Starting CPU 2 (2)
Starting CPU 3 (3)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
random: unblocking device.
random: entropy device external interface
MAP 39f4a000 mode 2 pages 1
MAP 39f4f000 mode 2 pages 1
MAP 3b350000 mode 2 pages 16
MAP 3f100000 mode 1 pages 1
kbd0 at kbdmux0
ofwbus0:
simplebus0: on ofwbus0
ofw_clkbus0: on ofwbus0
clk_fixed0: on ofw_clkbus0
clk_fixed1: on ofw_clkbus0
regfix0: on ofwbus0
regfix1: on ofwbus0
psci0: on ofwbus0
lintc0: mem 0x40000000-0x400000ff on simplebus0
intc0: mem 0x7e00b200-0x7e00b3ff irq 20 on simplebus0
gpio0: <BCM2708/2835 GPIO controller> mem 0x7e200000-0x7e2000b3 irq 23,24 on simplebus0
gpiobus0: on gpio0
generic_timer0: irq 0,1,2,3 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 19200000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 19200000 Hz quality 1000
usb_nop_xceiv0: on ofwbus0
bcm_dma0: mem 0x7e007000-0x7e007eff irq 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19 o
n simplebus0
bcmwd0: <BCM2708/2835 Watchdog> mem 0x7e100000-0x7e100027 on simplebus0
bcmrng0: mem 0x7e104000-0x7e10400f irq 21 on simplebus0
mbox0: mem 0x7e00b880-0x7e00b8bf irq 22 on simplebus0
gpioc0: on gpio0
uart0: <PrimeCell UART (PL011)> mem 0x7e201000-0x7e201fff irq 25 on simplebus0
uart0: console (115200,n,8,1)
spi0: <BCM2708/2835 SPI controller> mem 0x7e204000-0x7e204fff irq 27 on simplebus0
spibus0: on spi0
spibus0: at cs 0 mode 0
spibus0: at cs 1 mode 0
iichb0: <BCM2708/2835 BSC controller> mem 0x7e804000-0x7e804fff irq 40 on simplebus0
bcm283x_dwcotg0: <DWC OTG 2.0 integrated USB controller (bcm283x)> mem 0x7e980000-0x7e98ffff,0x7e006000-0x7e
006fff irq 46,47 on simplebus0
usbus0 on bcm283x_dwcotg0
sdhci_bcm0: <Broadcom 2708 SDHCI controller> mem 0x7e300000-0x7e3000ff irq 49 on simplebus0
mmc0: <MMC/SD bus> on sdhci_bcm0
fb0: on simplebus0
fbd0 on fb0
VT: Replacing driver "efifb" with new "fb".
fb0: 656x416(656x416@0,0) 24bpp
fb0: fbswap: 1, pitch 1968, base 0x3eb33000, screen_size 818688
pmu0: irq 53 on simplebus0
cpulist0: on ofwbus0
cpu0: on cpulist0
bcm2835_cpufreq0: on cpu0
cpu1: on cpulist0
cpu2: on cpulist0
cpu3: on cpulist0
gpioled0: on ofwbus0
gpioled0: failed to map pin
cryptosoft0:
Timecounters tick every 1.000 msec
iicbus0: on iichb0
iic0: <I2C generic I/O> on iicbus0
usbus0: 480Mbps High Speed USB v2.0
ugen0.1: at usbus0
uhub0: <DWCOTG OTG Root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
mmcsd0: 32GB <SDHC USDU1 2.0 SN 401D09C1 MFG 04/2019 by 116 J`> at mmc0 50.0MHz/4bit/65535-block
bcm2835_cpufreq0: ARM 600MHz, Core 250MHz, SDRAM 400MHz, Turbo OFF
mbox0: mbox response error
bcm2835_cpufreq0: can't set clock rate (id=4)
Release APs...done
CPU 0: ARM Cortex-A53 r0p4 affinity: 0
Trying to mount root from ufs:/dev/ufs/rootfs [rw]...
Instruction Set Attributes 0 =
Instruction Set Attributes 1 = <>
Processor Features 0 = <AdvSIMD,Float,EL3 32,EL2 32,EL1 32,EL0 32>
Processor Features 1 = <0>
Memory Model Features 0 = <4k Granule,64k Granule,S/NS Mem,MixedEndian,16bit ASID,1TB PA>
Memory Model Features 1 = <>
Memory Model Features 2 = <32b CCIDX,48b VA>
Debug Features 0 = <2 CTX Breakpoints,4 Watchpoints,6 Breakpoints,PMUv3,Debug v8>
Debug Features 1 = <0>
Auxiliary Features 0 = <0>
Auxiliary Features 1 = <0>
CPU 1: ARM Cortex-A53 r0p4 affinity: 1
CPU 2: ARM Cortex-A53 r0p4 affinity: 2
CPU 3: ARM Cortex-A53 r0p4 affinity: 3
WARNING: / was not properly dismounted
Warning: no time-of-day clock registered, system time will not be set accurately
uhub0: 1 port with 1 removable, self powered
ugen0.2: <vendor 0x0424 product 0x2514> at usbus0
uhub1 on uhub0
uhub1: <vendor 0x0424 product 0x2514, class 9/0, rev 2.00/b.b3, addr 2> on usbus0
uhub1: MTT enabled
uhub1: 4 ports with 3 removable, self powered
ugen0.3: <vendor 0x0424 product 0x2514> at usbus0
uhub2 on uhub1
uhub2: <vendor 0x0424 product 0x2514, class 9/0, rev 2.00/b.b3, addr 3> on usbus0
uhub2: MTT enabled
uhub2: 3 ports with 2 removable, self powered
ugen0.4: <vendor 0x0424 product 0x7800> at usbus0
muge0 on uhub2
muge0: <vendor 0x0424 product 0x7800, rev 2.10/3.00, addr 4> on usbus0
muge0: Chip ID 0x7800 rev 0002
miibus0: on muge0
ukphy0: <Generic IEEE 802.3u media interface> PHY 1 on miibus0
ukphy0: none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1
000baseT-FDX-master, auto
ue0: on muge0
ue0: Ethernet address: b8:27:eb:cd:66:49
lo0: link state changed to UP
muge0: Chip ID 0x7800 rev 0002
ue0: link state changed to DOWN
ue0: link state changed to UP
Security policy loaded: MAC/ntpd (mac_ntpd)

2019/08/16(金)少なくとも Passenger Ver 5 以降は、FreeBSD11.3 ではコンパイル不能

2019/08/16 21:57 サーバ運営・管理
発端は、ruby を2.4系から 2.5系にアップデートしたことに始まります。
redmime を一部のプロジェクトで運用していますが、これを Apache で動作させるために、Passenger という連携モジュールが必要。

今回はこれにハマりました。現状の最新版 Passenger-6.0.2 でも同様です。

先ず、 redmine の動作に必要な ruby ライブラリをインストール後、最後にこのモジュールのインストール作業を行います。
通常、redmine をインストールしたディレクトリにて、
# gem install passenger
# passenger-install-apache2-module
とやるんですが、これがどうも上手く行かない。調べると、上記手順を実施する前に、
# setenv APXS2 '/usr/local/apache2/bin/apxs'
# setenv PATH '/bin:/usr/local/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/pgsql/bin:/usr/local/apache2/bin'
といった、環境変数の設定が必要な模様。
ソースコードから Apache をインストールした場合、passenger インストーラがApache を確認できないらしい。
これで、
# gem install passenger
は、上手く行きます。しかし、
# passenger-install-apache2-module
は、途中でコンパイルエラーになります。こんな感じ:
/usr/include/c++/v1/string_view:771:37: note: 'Passenger::ApiAccountUtils::string_view' declared here
typedef basic_string_view string_view;
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.
rake aborted!
Command failed with status (1): [c++ -o buildout/support-binaries/WatchdogMain.o -Isrc/agent -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Wno-ambiguous-member-template -Isrc/cxx_supportlib/vendor-copy/libuv/include -Isrc/cxx_supportlib/vendor-copy/websocketpp -I/usr/local/include -DHAS_CURL_EASY_RESET -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -Wno-ambiguous-member-template -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -g -fno-limit-debug-info -Wno-unused-local-typedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -c src/agent/Watchdog/WatchdogMain.cpp]

Tasks: TOP => apache2 => buildout/support-binaries/PassengerAgent => buildout/support-binaries/WatchdogMain.o
調べると、どうも C++17 からでないと、サポートしていない構文を使っている模様。
C++17 をコンパイラに強制させて解決するには、こうします:
# setenv EXTRA_CXXFLAGS '-std=c++17'
要するに、上記の環境変数にて、追加のコンパイラオプションを設定し、再度
# passenger-install-apache2-module
と、するのです。ですが、これで解決するはずが、別の場所でエラーが出ました。こんな感じ:
pedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -std=c++17 -c src/cxx_supportlib/IOTools/IOUtils.cpp
src/cxx_supportlib/IOTools/IOUtils.cpp:288:3: error: use of undeclared identifier 'random_shuffle'
random_shuffle(result.begin(), result.end());
^
1 error generated.
rake aborted!
Command failed with status (1): [c++ -o buildout/apache2/module_libpassenger_common/IOTools/IOUtils.o -Isrc/cxx_supportlib -Isrc/cxx_supportlib/vendor-copy -Isrc/cxx_supportlib/vendor-modified -Isrc/cxx_supportlib/vendor-modified/libev -Wno-ambiguous-member-template -Isrc/cxx_supportlib/vendor-copy/libuv/include -O -fPIC -I/usr/local/apache2/include -I/usr/local/apache2/include -I/usr/local/apache2/include -D_REENTRANT -I/usr/local/include -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-long-long -Wno-missing-field-initializers -Wno-ambiguous-member-template -fvisibility=hidden -DVISIBILITY_ATTRIBUTE_SUPPORTED -DHAVE_ACCEPT4 -DHAS_SFENCE -DHAS_LFENCE -DPASSENGER_DEBUG -DBOOST_DISABLE_ASSERTS -g -fno-limit-debug-info -Wno-unused-local-typedefs -Wno-format-nonliteral -DHAS_UNORDERED_MAP -std=c++17 -c src/cxx_supportlib/IOTools/IOUtils.cpp]

Tasks: TOP => apache2 => buildout/apache2/mod_passenger.so => buildout/apache2/module_libpassenger_common/IOTools/IOUtils.o
ん~、、調べると、この random_shuffle という関数は C++17では「廃止」されたらしい。
なのでエラーになるのです。これには困った・・・というか、バグの類でしょう。。

結局、3箇所修正することで、コンパイルできます。
/usr/local/lib/ruby/gems/2.5/gems/passenger-6.0.2/src/cxx_supportlib/IOTools/IOUtils.cpp
   37 #include <algorithm>
   38 #include <string>
   39 #include <vector>
+  40 #include <random>
   41 #include <sys/socket.h>
   42 #include <sys/types.h>

  287         freeaddrinfo(res);
  288         if (shuffle) {
  289 //              random_shuffle(result.begin(), result.end());
+ 290                 std::shuffle(result.begin(), result.end(),std::mt19937());
  291         }
  292         return result;
  293 }
/usr/local/lib/ruby/gems/2.5/gems/passenger-6.0.2/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp
 65 #ifdef _WEBSOCKETPP_CPP11_MEMORY_
 66     using std::shared_ptr;
 67     using std::weak_ptr;
 68 //    using std::auto_ptr;
 69     using std::enable_shared_from_this;
 70     using std::static_pointer_cast;
 71     using std::make_shared;
 72     using std::unique_ptr;
ソースコード修正後、
# setenv EXTRA_CXXFLAGS '-std=c++17'
# passenger-install-apache2-module
とすることで、使用できるモジュールが出来上がるようです。

2019/07/12(金)FreeBSD11/FreeBSD12 にて無償利用可能なサーバ証明書 Let's Encrypt を使う

2019/07/12 17:39 サーバ運営・管理
他のFreeBSD バージョンでも恐らく使用可能です。
Let's Encrypt は、有効期間90日(自動延長可能)な無償サーバ証明書です。
FreeBSD におけるやり方について、余り情報が書かれていないので、ここで提示しておきます。

これを使うには、先ずは使用するサーバにて、管理ツールのようなものをインストールします:
FreeBSD Ports においては、 securiry/py-certbot をインストールします。
#Python を使用したスクリプトなので、依存関係で Python 本体と、動作に必要な python モジュールが
#インストールされます。

インストールが終わったら、Apache や nginx を一旦停止して、
# certbot certonly --standalone -d 《FQDN名》-m 《通知電子メールアドレス》
のようにコマンドを入力します。
#このスクリプトが一時的に http サーバになるため、ポート番号が競合するからのようです。

《FQDN名》は、証明書発行申請するときのコモン名。例えば https://server.example.com/ のサーバ証明書が欲しければ、 ここに server.example.com と記述します。

《通知電子メールアドレス》は、何かある場合に連絡が入る電子メールアドレスを指定します。
実在する電子メールアドレスを指定します。
証明書の期限が間近になった場合などに連絡が入るようです。

コマンドの実行が始まると、先ず、下記のメッセージが表示されます:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
使用条件・契約条件を許諾するか否かの問いです。Agree のA を入力します。
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
次に、各種の連絡を電子メールで送るけれど、本当に良いか? という趣旨の問いです。
これも Yes の Y を入力します。
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for server.example.com
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/usr/local/etc/letsencrypt/live/server.example.com/fullchain.pem
Your key file has been saved at:
/usr/local/etc/letsencrypt/live/server.example.com/privkey.pem
Your cert will expire on 2019-10-10. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /usr/local/etc/letsencrypt. You should
make a secure backup of this folder now. This configuration
directory will also contain certificates and private keys obtained
by Certbot so making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
上記で、'Congratulation' のメッセージが含まれていたら、作成は成功です。
正直なところ、少し判り難いです。
上記例では有効期限は 2019/10/10 だと言っています。

失敗しているような場合は、再度、
# certbot certonly --standalone -d 《FQDN名》-m 《通知電子メールアドレス》
上記のコマンドを入力してみましょう。
但し、FQDN名がDNSで正引き出来ないと、上手く行かないみたいです。

Apache には以下の要領で設定します (要所を抜粋):
SSLCACertificateFile /usr/local/etc/letsencrypt/live/server.example.com/chain.pem
SSLCertificateFile /usr/local/etc/letsencrypt/live/server.example.com/cert.pem
SSLCertificateKeyFile /usr/local/etc/letsencrypt/live/server.example.com/privkey.pem
 'server.example.com' の部分を、使用するFQDN に合わせて変更します。

最後に自動更新させるには、以下を、crontab に追加します:
0 6,21 * * * /usr/local/bin/certbot renew --agree-tos --webroot -w
/home/webroot/server.example.com/public --renew-by-default
&& /usr/local/etc/rc.d/apache2 restart
#表示の便宜上3行に分けているが、実際に適用の際は半角スペースで区切って1行にすること。
 -w のあとのフルパスは、該当 FQDN におけるドキュメントルート絶対パスを指定します。

1日2回の更新チェックが推奨されているようです。

URL変更のお知らせ

2018/12/20 4:29 雑多なトピック
はんかくさい日報のURLを https://www.basekernel.jp/cgi-bin/adiary/adiary.cgi/basekrnl/ 配下に変更しました。
旧URLからは、上記の新URL配下へ自動転送されます。

ブックマークやリンクされている場合は、お手数おかけしますが上記URLへの変更をお願いします。
尚、サブドメイン hankakusai.basekernel.co.jp は、 2019/07/15 に廃止します。

2019/06/05(水)Postfix にて Cyrus SASL 認証のセットアップ

2019/06/05 17:31 サーバ運営・管理
自分メモ。
以前は管理の都合上、ソースコードから構築していたが、最近はFreeBSD でも Ports から導入する方が確実。
最近の FreeBSD では、素の Cyrus-SASL ソースコードでは色々面倒なことのほうが多い。

security/cyrus-sasl-2.1.27
security/cyrus-sasl-saslauthd-2.1.27_1

の2つを Ports からインストールします。
その後で、SMTP 認証にCyrus SASL を使えるように Postfix をセットアップします。
Postfix は、Ports ではなく、ソースコードから構築しないと、管理上却って面倒。

root で先ずはこんな感じで環境設定:
# setenv CPPFLAGS '-I/usr/local/include -I/usr/local/include/db5 -I/usr/include -I/usr/local/include/sasl'
# setenv LDFLAGS '-L/usr/local/lib -L/usr/local/lib/db5 -L/usr/lib'
# setenv LD_LIBRARY_PATH '/usr/local/lib /usr/local/lib/db5 /usr/lib'
これやらないと、当方の環境ではコンパイル自体が上手く行かないんです。

続いて root で make ファイル生成
(画面上では見やすいように複数行にしているが、実際は半角スペースで区切って1行にしてください):
# make -f Makefile.init makefiles
  'CCARGS=-DUSE_TLS -DUSE_SASL_AUTH -DUSE_CYRUS_SASL
             -I/usr/local/include -I/usr/local/include/sasl -I/usr/include/openssl'
  'AUXLIBS=-L/usr/lib -lssl -lcrypto
       -L/usr/local/lib -lsasl2 -licudata -licui18n -licuio -licutest -licutu -licuuc
       -L/usr/local/lib/db5 -ldb'
これが上手く出来れば、あとは普通に
# make
# make install
# rehash
とすれば、Cyrus SASL 認証サポート対応の Postfix が出来るはず。

続いて設定:
下記の内容で、 /usr/local/lib/saal2/smtpd.conf のテキストファイルを作成:
pwcheck_method: auxprop
この設定は、cyrus SASL 独自で認証ユーザを管理することを意味します。
サーバ自身にユーザアカウントを追加せずに済むので、このメールアドレス管理方法はお勧めです。
以下でメールアドレスを設定・管理できます:
# saslpasswd2 -c -u example.com xxxxuser (ユーザ新規追加)
# saslpasswd2 -d -u example.com xxxxuser (ユーザの削除)
# sasldblistusers2            (登録ユーザの確認)
ここで、example.com は実際に使用するドメイン名、 xxxxuser は、メールアドレスの@マークの左側を指定します。
ユーザ新規追加の際のみ、設定するパスワード入力を促されます。2回同じパスワードを入力するようになります。
/usr/local/etc/sasldb2 に登録されます。このファイルのパーミッションは 644 にしておきます。

更に、/etc/postfix/main.cf に下記の設定追加:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = cyrus
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain

smtpd_relay_restrictions = permit_mynetworks,
                           permit_sasl_authenticated,
                           defer_unauth_destination

smtpd_recipient_restrictions = permit_mynetworks,
                               permit_sasl_authenticated,
                               reject_unauth_destination

smtpd_helo_restrictions = permit_mynetworks,
                          permit_sasl_authenticated,
                          reject_unauth_destination
最後に自動起動の設定です。/etc/rc.conf に
saslauthd_enable="YES"
saslauthd_flags="-a pam"
の2行を追加しておきましょう。
最後に、サーバを再起動するか、 /usr/local/etc/rc.d/saslauthd start で、認証デーモンをスタート出来たら設定完了。

2019/05/11(土)帯域不足が明らか・・・〔車載動画〕

2019/05/11 19:11 雑多なトピック
今日の未明、6本の車載動画をアップしたのですが、下記はそのうちの2本。
 

所々、画質劣化が起きるのは既知の問題なのですが、この2つはそれが酷い。
原因はハッキリしていて、小枝が沢山あるような細かい画になると、Youtube の配信ビットレートでは情報量が過多になるので、その分画質落として削るのです。

なので、オリジナルを用意しました。(※ Chrome でしか再生出来ません。)
ただ、動画のビットレート見ると 25Mbps 程度になっていて、スムーズな再生は困難な環境が多そうです。逆に言うと mp4 では、25Mbps 必要なんですよ。。。
〔手稲山往還 上り〕https://www.asahi-net.or.jp/~nz7k-tkhs/20190504_teine_up.html
〔手稲山往還 下り〕https://www.asahi-net.or.jp/~nz7k-tkhs/20190504_teine_down.html

あと、上記2つは、
合法的にダウンロード再生してもよいように、クリエイティブコモンズライセンスにしました。2次加工もご自由にどーぞ。


ほんと、ユーザサイドではどうしようもできないので、改善して欲しい。

2019/04/17(水)新元号の対応

弊社の現在公開しているページ( https://www.basekernel.co.jp/ )にて確認作業していたので、ひょっとしたら見た人がいたかもしれませんが・・・
#限りなくゼロに近いと思っているが。。

20190417_1.png

20190417_2.png

20190417_3.png

20190417_4.png

20190417_5.png


ま、こんな感じにしました。西暦2019年は、4/30,5/2 も祝日法に基づくと、
西暦2019年限定で休日になります。

ちなみに今年と来年は、オリンピックもあり、特例の祝日が結構あるんです。
OK キャンセル 確認 その他