2026年8月12日水曜日

MUNIN を使って計算機を監視する

サーバーはLinux Mint,監視対象は Alma Linux 8 です.

クライアント(監視される)側の設定

 

サーバー(監視)側の設定

 

あとはブラウザで http://localhost/munin に接続するとよい.なぜか FireFox ではだめで Chrome でないといけなかった.(http接続ができない?)

いろいろはまったこと

munin-node を入れるのだが,nothing provides perl(Digest::SHA1) と言われてしまう.
→PowerTools のリポジトリを有効にすればよいらしい.

 

ブラウザで http://localhost/munin/ にアクセスしても "Unable to connect" と表示される.また手動で munin を動かしてもプラグインがないと言われる.
 
→ Firewall-cmd でポートを開けていない.空ける設定にしたあと firewall-cmd reload していない

Telnet で接続を試しても "connection closed by foreign host" と表示され接続が閉じられる.
→munin-node 側の /etc/munin-node.conf が間違っていた.具体的には munin サーバーの IP アドレスが間違っていた

追記:RHEL9 で MUNIN を使う

epel 入れる必要がありました.

 

2026年8月5日水曜日

VNC を AlmaLinux 8.10 に導入したときにはまったこと

・ポートを空ける

% firewall-cmd --permanent --add-port=5901/tcp
% firewall-cmd --reload
% firewall-cmd --list-all

・Polkitの設定を変更

カラーマネジメントとパッケージマネジメントの更新を全ユーザに対し許可する.
% sudo vi /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.debian.apt.*;io.snapcraft.*;org.freedesktop.packagekit.*;com.ubuntu.update-notifier.*
ResultAny=no
ResultInactive=no
ResultActive=yes


2026年8月4日火曜日

Xfce のデフォルトターミナルを変える

 Xfce のデフォルトターミナルは [メニュー]→[設定]→[デフォルトアプリケーション] で変更できる.こうするとデスクトップ右クリックで「端末で開く」のデフォルトを変える事ができる.よく忘れるのでメモ.



Linux Mint 21.2 Victoria Xfce Edition を使っているのだが,Terminalの選択肢が悩ましい.
  • デフォルトの Xfce Terminal はものすごく重い.ログが大量に出たり,Window を掴んでグリグリすると xrdp の CPU 使用率が100%になりすべてがカクカクしだす.(Intel N97 が非力説もある)
  • Gnome-terminal は軽量なのだが,一日経つとプロファイルが初期化されてしまう.Window を触った瞬間に黒背景が白背景になるので一瞬でムスカにされてしまう.
なので Kitty にしてみた.設定が奥深くてよくわからないのだけれど,ひとまずなんとか使えそうだ.

(1) ssh 接続先で backspace や Ctrl-U が効かない
正確には消えるが画面にログが残る.ログイン先の環境変数を 
% TERM=xterm
にする.





















2026年8月3日月曜日

RHEL9.7 に Virtuoso Studio を入れる

インストール先は RedHat Enterprisse Linux Server 9.7 です.Virtuoso のバイナリを起動して,表示される不足しているシェアードライブラリを入れていく.結局以下を入れればよかったよ.
 
ところが
 
Qt の xcb 関係のエラーが出た.プラグインが使っている共有ライブラリがそろっているか ldd で調べればよいらしい.
 
ここで "not found" になっているシェアードライブラリを入れればよい.dnf provides で聞いて回った結果以下を入れればよかったよ.
 
こういうのってバージョン依存を回避するために CAD のバイナリに入っているものじゃないんだね.

2026年8月2日日曜日

Cadence のライセンスサーバーを立てる

 インストール先は RedHat Enterprisse Linux Server 9.7 です.tcsh ksh が必要です.

Licesnseセットアップ

LUC25.01.002/doc/license/Cadence_License_Server_Diagnostics_Utilities.html を見ながらやってみる.

ユーザーアカウント cdsmgr を作成することが推奨されているみたい.
% sudo useradd cdsmgr
% sudo passwd cdsmgr

LUC25.01.002/share/license 以下にライセンスサーバー関係のバイナリがあるみたい../lic_config を起動する.-xを付けないとデフォルト,-xを付けるとカスタムできるらしいが,挙動は変わらない気がする...
% cd LUC25.01.002/share/license 
% ./lic_config 

(1) 最初にCadenceツールのインストールディレクトリを聞いてくる.デフォルトにする.
(2) ここにtools を作るか聞いてくる.作らせる.

ところがホスト ID (MACアドレス) は正しく認識できているのに,ライセンスファイルがここにないと表示される.lic_config を見ると,"^license."をライセンスファイルとして認識するらしい,がもらったライセンスファイルは"License_*"だ.名前を書きかえる.

% mv License_なんちゃら.txt license.dat.2027.dat
% ./lic_config 

今度はライセンスファイルを認識したが,「Validなものは SERVER,DAEMON,FEATUREしかないはずでこのライセンスファイルはおかしい」と言ってくる.たしかにライセンスファイルには行頭が"USE_SERVER"で始まっている箇所がある.これもらったものなんだけれど...

lic_config を見ると "$linetype" != "USE_SERVER" かつ "$linetype" != "#" and  "$linecont" == "1" の条件でエラーメッセージを出して異常終了するらしい.goto error をコメントアウトして継続させてしまおう.
% vi lic_config
# goto error <- コメントアウト
% ./lic_config
....
You have just configured the license files and the daemon startup script. 
と表示された,セットアップはできたみたい.いいのか.

Lisence 登録

lic_config によってデーモンの起動ファイルができているので,rc.lic を /etc にコピーする.rc.lic は書き換えられているのでマニュアルの指示に手動で書き換える必要は無い.
% sudo cp re.lic /etc/re.lic
(マニュアルは rclic.sample を /etc/rc.lic にコピーしろとあるが間違いなはず)

所有者を変える
% sudo chown cdsmgr /etc/re.lic

パーミッションを変える
% sudo chmod 6744 /etc/rc.lic

inittabに登録する
% sudo echo "cds::once:sh /etc/rc.lic" >> /etc/inittab

Lisence 起動

ユーザー cdsmgr になって実行する
% su cdsmgr
%  /etc/rc.lic 

2026年8月1日土曜日

Synopsys のライセンスサーバーを立てる

 Synopsys のライセンスサーバーを Linux Mint で立てます.RHEL 系しか保証されていないけれど,結果的には全く問題なかったよ.

Synopsys Common Licensing を入れるためにまず Synopsis Installer を入れる.ダウンロードしたバイナリに実行権限を付け,実行.
% chmod +x SynopsysInsterller.run
% ./SynopsysInsterller.run
実行中にインストールディレクトリを聞かれるので指定する.

次に,Synopsys Installer を使って Synopsys Common Licensing を入れる.
% ./installer/installer
バイナリのダウンロード先,インストール先のルートディレクトリ,Site IDを入れる.

Synopsys Common Licensing を使ってライセンスサーバーを立てる.ライセンスファイルを開き,hostname1 を置換してライセンスサーバーの名前にする.
% sed -e "s/hostname1/servername/gc" license_org.txt > ~/synopsys/license.txt

ライセンスファイルは scl_root/admin/license に配置する.
% ln -s ~/synopsys/license.txt scl_root/admin/license

ライセンスサーバー起動
% scl_root/linux64/bin/lmgrd -c scl_root/admin/license/license.txt

FlexNet が起動した.止めてみよう.
% scl_root/linux64/bin/lmdown -c scl_root/admin/license/license.txt
このベンダーのライセンス止めていいのか聞いてくるので y で止める.

ここからは Keysight を参考にする.ライセンスサーバーをサービスとして登録する.systemctl に登録するためのファイルを作成する.
 
% sudo vim /lib/systemd/system/synopsis-license.service

multi-user モードで起動させるので,systemd の所定の位置にスタティックリンクを張る.
% sudo ln -s /lib/systemd/system/synopsys-license.service /etc/systemd/system/multi-user.target.wants/synopsys-license.service

有効にする.
% sudo systemctl daemon-reload
% sudo systemctl enable synopsys-license.service
% sudo systemctl start synopsys-license.service
% sudo systemctl status synopsys-license.service

これで  active (running)  になっていればOK.

環境変数を設定して,
export SNPDLMD_LICENSE_FILE=27030@servername
この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行時にライセンスが正常に見えていればOK.

2026年7月31日金曜日

Keysight のライセンスサーバーを立てる

Keysight のライセンスを取り上げられてしまったので,個別にライセンスサーバーを立てることになってしまった.

ここでは LinuxMint に立てることにする.FlexNet のライセンスサーバーをKeysightダウンロードする.解凍した物の中に PDF があるので基本的にはその PDF 通りに設定すればよい.

ライセンスファイルを確認する.ここで
SERVER this_host MACADDRESS 27009
の MACADDRESS がマシンの MAC アドレスと一致しているか確認する.ケースインセンシティブ.27009 はポート番号で,27000~27009 の値となっている.

今回のライセンスはフローティングとのことだが,ライセンスファイルは PDF の "Example 5: Floating license (borrowable)" の様に floating と書かれていないが大丈夫みたい.
VENDOR_STRING=005056905d85 vendor_info="DESCRIPTION=MyProduct, floating, permanent license
 (MYFEATURE1 coun" \

ライセンスファイルを所定の位置に配置する.Linuxの場合
/var/opt/keysight/licensing/licenses/server
の server がライセンスファイル.なおマニュアルのパスは誤字っている.

試しにライセンスサーバーを起動してみる.
% ./lmgrd -c /var/opt/keysight/licensing/licenses/server -l

この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行する時に,ライセンスが正常に見えていればひとまずOK.
ライセンスサーバーをシャットダウンしよう.
% ./lmutil lmdown -c /var/opt/keysight/licensing/licenses/server

ライセンスサーバーをサービスとして登録する.
systemctl に登録するためのファイルを作成する.
% sudo vim /lib/systemd/system/keysight-license.service

 


multi-user モードで起動させるので,systemd の所定の位置にスタティックリンクを張る.
% sudo ln -s /lib/systemd/system/keysight-license.service /etc/systemd/system/multi-user.target.wants/keysight-license.service

有効にする.
% sudo systemctl daemon-reload
% sudo systemctl enable keysight-license.service
% sudo systemctl start keysight-license.service
% sudo systemctl status keysight-license.service

これで active (running) になっていればOK.
この状態で別の terminal を開いて,
% ./lmutil lmstat -a
を実行する時に,ライセンスが正常に見えていればOK.

クライアントからの Listen を許可するために Firewall に許可を出す.LinuxMint は ufw を使う.
% sudo ufw status
ここで 27009 が開いていない場合,ポートを開放する.
% sudo ufw allow 27009

ただ私の環境ではこれではだめで,思い切ってFirewallを切らないとだめだった.
% sudo ufw disable

クライアントは,環境変数 AGILEESOFT_LICENSE_FILEを指定してやればよい.
% export AGILEESOFT_LICENSE_FILE=<port>@<ipaddr> 
この状態で lmstat でライセンスが見えたら OK.
% lmstat -a 


2026年3月4日水曜日

Calibre をサポート外 OS で動かしたい (その2)

Calibre は OS ごとにバイナリが最適化されている(とういう事になっている)が,最適でない OS でも手持ちの Calibre を動かしたい.しかし,Calibre 実行時に calibre_vco で実行環境のチェックが入ってしまい,最適でないと
% calibrewb
Invalid operating system environment
と表示されて実行できない.

Calibre の実行環境は
${MGC_HOME}/pkgs/icv_calenv.aoi/pvt/calibre_host_info
でチェックされているので,RHEL7 系と仮装したいのであれば,本ファイルを編集し最終行 (test -n うんぬん) 直前に2行
OS_VENDOR=redhat
OS_MAJOR_REV=7
test -n ....
と書いてやればチェックをすり抜ける事ができる.

このサイトの人は RHEL 系でない Ubuntu で各種 CAD を動かそうとしているので勇者過ぎる.

そういえば昔似たようななことをしたなぁ,と思ったらしていた.
今回は AlmaLinux8 (RHEL8系) で aoi バイナリ (RHEL7) を動かそうとしているので,/etc/lsb-release 編集はできないなぁ.

2026年3月3日火曜日

IIC-OSIC環境を使ってLibreLaneを実行する:RISC-Vを動かしてみよう (2026年2月版)

前回まではチュートリアルだったので,今回は応用編として RISC-V コアを実装してみよう.使う題材は Harris&Harris の RISC-V コア,これは SystemVerilog で書かれているので,Verilog に実装しなおしてみる.

RISC-V コアの準備


主な変更点は,
・RISC-V コアとテストベンチを分離,命名ルールを simulate.sh に合わせる([回路].v,[回路]_tb.v)
・入出力ポートの定義を Verilog に変更
・logic を適切に wire に
・always_comb,always_ff を適切に変更
・一部 case 文を always から function に
・メモリのアラインメントが不親切だったので明示的にした.具体的には
rd = RAM[a[31:2]];
rd = RAM[{2'b0,a[31:2]}];
へ MSB側 をゼロ埋め.

はまったのはジャンプ命令が正しく動かなかったり,always 文で書いた組み合わせ回路のセンシティブビットの指定が不十分だったり,という点であった.Verilog 素人なので2~3日ぐらいかかった.こんなやつが授業で Verilog 教えるってマジ?

シミュレーションが正しく動くと,テストベンチでは DataAdr = 100 の時に WriteData が 25 であるか判定し,正しければ "Simulation succeeded",正しく終了しない場合は "Simulation failed" と表示される.

$ cd kvic_226007_ws25-main/verilog/tb
$ sh simulate.sh riscv_top


Yosysによる合成


src ディレクトリに移動し,yosys_stats.sh を実行してみる.
$ cd ../src
$ ln -s ../tb/riscv_top.txt # 命令メモリの中身をリンク
$ sh yosys_stats.sh riscv_top

実行するとログが出てくる.

 

まあまあな数のセルが使われている.一番大きいのはDFFベースのメモリだろう.

LibreLaneによる配置配線


実行前に変更すべきなのは config.json と pin_order.cfg.それぞれ config.json は次の通り,
 
 pin_order.cfg は次の通り変更する.
 
この地点で試しに実行してみたら,合成の地点で

 
と規定のサイズ (160 um x 100 um = 16000 um^2)を超えてしまい,

 
Utilizationでかすぎ,と失敗してしまう.なので config.json 中の面積を
0 0 160 100
から
0 0 320 300
として,合成時の Utilization が 40% 程度にしてみた.そのほかの制約は変えず,Sky130 対象に合成制約 20 ns = 50 MHz とし LibreLane を実行してみる.

$ ./run_librelane.sh

しばらく待つと処理が終わり,OpenROAD での配置配線結果が出力される.


レイアウトを見るとポートは East と West に固めたはずが他にも配置されてしまっている.DRC/LVS はパスしたが,Antenna 違反が発生していた.

 

使われたセルの統計データは次の通りであった.

 
DFF (dfxtp_1,dfrtp_1,dfrtp_2) が820個しかないのは,命令メモリが ROM になって最適化されてしまったためと思われる.おそらくゲートがVDD/VSS に接続されてしまったのでアンテナ違反が発生しているのだろう.このあたりはきちんとしたメモリがほしいものだ.

2026年3月2日月曜日

IIC-OSIC環境を使ってLibreLaneを実行する:チュートリアルを動かしてみよう (2026年2月版)

IIC-OSIC の環境を使って LibreLane による配置配線を試みる.

IIC-OSIC のインストール

基本的には土谷先生の方法でよい.

IIC-OSIC ツールの実行

基本的には公式ビデオを参考にすればよいのだが,いろいろ不完全なので補足を入れていく.

まずは Tutorial ファイルをダウンロードする.動画のスライド p17 のファイルをダウンロードする.


このとき Docker 内に最終的にファイルを置かないといけないので,Docker 内の Ubuntu でFireFox などでダウンロードするか,
C:\Users\[ユーザー名]\eda\designs
に Explorer からアクセスすると Ubuntu の起動時のディレクトリにアクセスできる.

Verilog シミュレーションと yosys による合成

verilog ディレクトリに移動する
$ cd /foss/designs/kvic_336007_ws25-main/verilog

シミュレーションは tb ディレクトリで実行する.
$ cd tb
$ sh ./simulate.sh counter

simulate.sh の引数である [回路名] に対し,verilog/src/[回路名].v,verilog/tb/[回路名]_tb.vを探し,verilator で LINT,iverilog で Verilog シミュレーション,波形ファイル生成([回路名]_tb.vcd),gtkwave で波形を表示できる.



3 bit カウンターとして動いている事を確認する.

次に合成する.src ディレクトリの yosys_stats.sh を実行する.
$ cd ../src
$ sh ./yosys_stats.sh counter

実行すると,yosys にょって
read_verilog 
proc (process をnetlistに変換)
opt (簡単な最適化)
flatten (階層展開)
techmap (テクノロジマッピング)
stat (回路の統計情報表示)
が実行される.ただしここでのテクノロジマッピングは特定のプロセスライブラリではなくyosys の持つ仮想ライブラリで合成されるようだ.

LibreLaneによる配置配線

次に LibreLane で配置配線を行う.
$ cd ../../librelane

run_librelane.sh に実行権限を与えて実行してみる.
$ chmod +x run_librelane.sh
$ ./run_librelane.sh

run_librelane.sh では,テクノロジライブラリを指定 (sky130A),LibreLane による実行,LibreLane の実行結果を OpenROAD で開く.


LibreLane の全体設定ファイルは config.json で,回路名,Verilog 記述の場所,シリコン面積,SDC などの設定,IO ピンの順番などを指定できる.
(逆に言うと,この程度しかカスタマイズの余地はないのか)

実行結果は runs/RUN_[日付]_[時間]/ 内部に処理ステップに沿って以下のように格納される.
 

最終的に出力されるものは final に格納される.
例えば最終的なGDSを見たければ runs/RUN_[日付]_[時間]/final/klayout_gds にアクセスするとよい.
$ klayout runs/RUN_2026-01-30_08-00-21/final/klayout_gds/tt_um_counter_top.klayout.gds


回路のPPA,QoR,DRC/LVSなどの統計は  runs/RUN_[日付]_[時間]/final/metrics.csv に書かれている.
$ cat runs/RUN_2026-01-30_08-00-21/final/metrics.csv 

 

2026年1月30日金曜日

卒論前に物が壊れるジンクス

卒論のシーズンは何かとものが壊れがちで一般的には学生のパソコンが壊れるのだが,今回新たに「教員室の蛍光灯がきちんと点かなくなる」事態が発生した.しかも事務室の閉室後の金曜夕方に,である.


写真だとよくわからないけれど,実際は暗くてとても作業できない.卒論とはかくも過酷な挑戦なわけである.
(えーん暗いよー)

2025年11月30日日曜日

X11 connection rejected because of wrong authenticationと表示され GUI アプリケーションが立ち上がらない

IC Compiler II などにGUIアプリケーションを起動しようとすると,"X11 connection rejected because of wrong authentication" と表示されて GUI が立ち上がらない事が起きた.

% icc2_shell -gui
(icc2_shell が立ち上がる)
X11 connection rejected because of wrong authentication.
Cannot initialize GUI.
The connection to X-server 'localhost:10.0' is broken or refused.
Please check the value of the DISPLAY environment variable.
For this session, the tcl command 'setenv' can be used to set the value of the DISPLAY variable,
then the command 'gui_start' is used to start the GUI.
icc2_shell > 

これを解決するためには,以下を設定すればよいらしい.
% export XAUTHORITY=$HOME/.Xauthority

Xauthority は XServer の認証の際に xauth が使用する Cookie に資格情報を保存するために使用されるらしい.xauth は Xauthority と $DISPLAY 変数を用いて X の接続を行う.

stackexchange の説明では,Snapを用いるアプリケーションはHOME="$SNAP_USER_DATA" を設定するためこれが X が想定する Xauthority ファイルの場所と干渉する,とのことである.IC Compiler II がSnapで作られているとは思わないが,似たような現象が起きているのだろう.


じゃあ Xauthority どうやってつくるの?というとこれはsshログイン時に自動で作成されるらしい.

2025年11月29日土曜日

Virtuoso (IC618.170) で標準ライブラリが見えない

 表題の通りで,IC618.170 に乗り換えたら,
Cannot find file '$(compute:THIS_TOOL_INST_ROOT)/share/cdssetup/cds.lib'.
と CIW に表示されて標準ライブラリ (ahdlLib, analogLib, など) が見つからない.

IC618 と見比べていると,IC618 の cds.lib は
'$(compute:THIS_TOOL_INST_ROOT)/share/cdssetup/cds.lib'.
にあり,IC618.170 のそれは
'$(compute:THIS_TOOL_INST_ROOT)/share/cdssetup/dfII/cds.lib'.
にある事がわかった.

どーしてこういうことをするかなーもー.(IC618.170を窓から放り捨てる音)

2025年11月21日金曜日

ngspice の収束で困っていたときに使うとよい .options

 ngspice の収束で困っていたときに見つけたのでメモ


過渡解析がおおよそうまく行く SPICE のオプションとその説明

.options gmin=1e-10 : ダイオードとトランジスタ内の各ダイオードに並列に  1e10 (=10GOhm) の大きな抵抗を追加.
.options abstol=1e-10 : 収束基準の許容誤差を 1e-12 から 1e-10 に増加.
.options reltol=0.003 : 収束基準の許容誤差を 0.0001 から 0.003 に増加.0.003 を超えることは絶対にしてはいけない.
.options cshunt=1e-15 : 各ノードからグランドへ追加される CSHUNT 容量として 1e-15 を追加.高周波振動や数値ノイズによって引き起こされる "Timestep too small" 問題を解決できる.デフォルトは  0 .

「代替ソルバーや cshunt のような機能を必要とする回路には注意が必要です.これは,回路のどこかに不具合がある,つまりモデルに現実離れした部分があることを意味します.」とのこと.

2025年11月20日木曜日

涉过愤怒的海の時計台?

映画 涉过愤怒的海 では漁師の娘,金丽娜は京都大学に留学しているという設定なのだが,この映画で出てくる時計台?がちがくない?という話.


これは京大の時計台ではなくて近大の西門ですね.


スクショは近大のWebから.



ちなみに吉田寮は本物っぽい.京大の許可は取ったのだろうか….

2025年11月4日火曜日

LDAP とローカルで同じユーザー名をつけたら一度ログアウトしましょう,という話

 情けない話なので備忘録.
ローカルで user1 を作成しログインした状態で,同名ユーザーを LDAP で user1 としou=SUDOers となるグループに設定していた.このとき,ユーザー名は同じに見えるのだけれど,user_id がローカルは 1001,LDAP は 10001 となっていたので,「ユーザー名は正しく見えるのにファイル生成で変に permission denied されるぞ」「ユーザー名は正しく見えるのにsudoできないぞ?」という事態が起きていた.
% sudo ls
sudo: あなたは passwd データベースに存在しません

どうやってわかったかというと,id コマンドは認証系 (LDAP) のユーザー名と user_id を表示してくれて,
% id user1
uid=10001(user1) gid=10001(user1) groups=10001(user1),11000(admin),10000(user)

そのシェルで whoami したらローカルでログインした該当 user_id が認証システムにないと言われたためである.
% whoami
whoami: cannot find name for user ID 1001

ls-n オプションをつけるとユーザー名ではなくユーザーIDを表示してくれるのでそれもよいかもしれない.
%ls -l
合計 383M
drwxr-xr-x.  6 user1 user1 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 user1 user1 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 user1 user1 4.0K 10月 21 21:48 zlib-1.2.9
%ls -ln
合計 383M
drwxr-xr-x.  6 10001 10001 4.0K 10月 22 01:43 .
drwxrwxrwx. 83 10001 10001 8.0K 10月 22 06:41 ..
...
drwxr-xr-x. 14 10001 10001 4.0K 10月 21 21:48 zlib-1.2.9

ログアウトしてログインしたら解決したという情けない話であった.とはいえ認証系でおかしい時にログアウトするのは勇気がいるけれど.
(危ない操作をする場合は,タブ1つはログインしっぱなしにしておけとか,違う tty でログインしておけ,とか言っていましたね)

2025年11月3日月曜日

ldappasswd が Invalide credentials (49) を返してくる

 タイトルの通りですが,LDAPのパスワードを変えようと ldappasswd を使うのだが,  
と返されうまくいかない.原因は
(1) 認証に利用しているrootdnが異なる
(2) 認証に利用しているパスワードが異なる,特に平文を使っている場合,それがハッシュ化される時のハッシュ値が実行条件によって変化する
(3) 認証に利用しているパスワードへのアクセス権がない
などがあげられるらしいが,(2) はMD5にしているし,(1),(3) は他の ldap* コマンドは受け付けているので理由が全くわからなくて困ってしまった.

結局初期化はインスタンスごと作り直すことに.
 

こんな感じの Perl スクリプトでユーザーを追加する .ldif を作成.

 

シェルスクリプトで .ldif スクリプトを起動.

 

その後,既存インスタンスの削除,インスタンス生成,LDAP オブジェクトの生成(基本+自分),LDAP オブジェクトの生成( Perl で作った学生分)という感じ.

2025年11月2日日曜日

LinuxMint / AlmaLinux 環境に LDAP を入れる

長年やりたいと思っていた  LDAP/389DirectoryServer をインストールできた.こちらのサイトを大いにコピー参考させていただいた.大変ありがたい.


こちらの環境は以下の通りなので,Server 側は一部読み替えが必要です.
Server:LinuxMint 
Client:AlmaLinux8 

Server側設定

LDAP/389DirectoryServer をインストール

 

生成した .inf の一部を書き換える.

 

インスタンスの生成と動作確認
 
→Activeになっていることを確認

ポート開放

クライアントから接続するためのポートをあける

 
 

sssd.ldif を作成

意識が低いので公開鍵認証ではなくパスフレーズ認証です.元記事にあった公開鍵認証のためのスキーマは読みません.

 

sssd.ldif を読む

 

補足:
   
modify operation type is missing at line 2, entry "ou=Users,dc=example,dc=com"
と表示されてる場合,ldapadd ではなく ldapmodify を実行している.ldapmodify を使う場合は,ldifにどのような変更を行うか記述が必要らしい.


再度実行してみる

 

ldif の情報が登録できたか確認する.
 

クライアント設定

sssdインストール

 

sssd.conf は Quita の記事のほぼそのままです.

 

 

SSSD 起動

 
→Activeになっていることを確認

動作確認
 

ユーザー情報取得

 


認証をSSSDに変更

 

ログインしてみよう.

 

.bashrc が読めていないけれど,ログインもできたしsudoもできた.ようやく使えるようになった.

LDAP初期化

LDAP の設定を初期化する際は消す前に一度止める必要があるらしい.LDAP 設定でおかしいなと思ったら,次の一連のコマンドを実行してまっさらな .inf ファイルから再構築していた.この知識がない段階では,LDAP  がうまくいかなくなったら OS まるごと再インストールしていた.(TATが…)

 

参考

こちらのサイトも参考にはしていたのだけれど,おそらく aci 設定が適切でなくてユーザー情報は引けたがログインには至らなかった.

いつも頼りにしている Server World さんの設定はすごくシンプルなんだがうまくいかない.

OpenLDAP : LDAP サーバーの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=1
OpenLDAP : LDAP クライアントの設定
https://www.server-world.info/query?os=Rocky_Linux_8&p=openldap&f=3

はまったこと

sssd.ldif に書いたパスワードの末尾に空白があるとパスフレーズ認証が通らない.これは平文でも暗号化していても同じ.これでずっと悩んでいて,うまく行ったりうまく行かなかったりぱっと見の再現性がなくてめっちゃこまっていた.
また /root/ds01.inf の先頭行が空欄になっていたのも問題だったかもしれない.とにかく設定中にエラーなり警告なりが出てくれないので難易度が高すぎる.

追記 (25/11/23)

Ubuntu で同様にセットアップしていたら,sudo 実行時に libsss_sudo.so が無いと言われた.(sudoそのものは正しく動く)

 

これは libsss-sudo を入れればよいらしい.