下記のような感じで認証ダイアログなしアクセスできる。「%5C」はバックスラッシュをURLエンコードしたもの。この通信が安全かどうかは分からん。
$ dolphin smb://domain%5Cusername:password@192.168.1.100/
人生の最終目標は気ままな老後生活
下記のような感じで認証ダイアログなしアクセスできる。「%5C」はバックスラッシュをURLエンコードしたもの。この通信が安全かどうかは分からん。
$ dolphin smb://domain%5Cusername:password@192.168.1.100/
端末を1つの用途(アプリケーション)専用にする場合、キーボード操作を常に1つのウィンドウで処理したい場面が結構ある。もっとスマートな方法があるだろうけど、とりあえずwmctrlコマンドをcronに登録して1分ごとに専用ウィンドウにフォーカスを行うことにした。
wmctrlのインストール。
# apt install wmctrl
cronに登録。
* * * * * export DISPLAY=:0 && /usr/bin/wmctrl -a ウィンドウタイトル
下記のGoogle先生に聞いた方法を実施後、再起動したら一応使えるようになったけど、kernelの更新とかしても大丈夫なのかは不明。
# apt install bcmwl-kernel-source # modprobe -rv bcma wl # modprobe -v wl
新たにKDE neonをクリーンインストールした状態でEclipseを起動して、.javaを編集すると下記のエラーが繰り返し表示され、使えなかった。色々調べてみたけど、どうも汎用的なメッセージらしく、1つずつ試した結果、結局はインプットメソッドの設定が不十分なことが原因だった。アホくさい。
org.eclipse.swt.SWTError: No more handles at org.eclipse.swt.SWT.error(SWT.java:4725) at org.eclipse.swt.SWT.error(SWT.java:4614) at org.eclipse.swt.SWT.error(SWT.java:4585) at org.eclipse.swt.widgets.Widget.error(Widget.java:532) at org.eclipse.swt.widgets.Control.drawBackground(Control.java:235) at org.eclipse.swt.widgets.Control.windowProc(Control.java:6800) at org.eclipse.swt.widgets.Display.windowProc(Display.java:6132) at org.eclipse.swt.internal.gtk.GTK._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.GTK.gtk_main_do_event(GTK.java:4166) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1429) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1585) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4661) at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.showStatusAdapter(WorkbenchErrorHandler.java:84) at org.eclipse.ui.statushandlers.WorkbenchErrorHandler.handle(WorkbenchErrorHandler.java:52) at org.eclipse.ui.internal.ide.IDEWorkbenchErrorHandler.handle(IDEWorkbenchErrorHandler.java:105) at org.eclipse.ui.internal.WorkbenchErrorHandlerProxy.handle(WorkbenchErrorHandlerProxy.java:34) at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:214) at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:256) at org.eclipse.ui.statushandlers.StatusManager.handle(StatusManager.java:266) at org.eclipse.ui.application.WorkbenchAdvisor.eventLoopException(WorkbenchAdvisor.java:325) at org.eclipse.ui.internal.Workbench$1.eventLoopException(Workbench.java:488) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.handle(PartRenderingEngine.java:1195) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1185) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:635) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:559) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:660) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:597) at org.eclipse.equinox.launcher.Main.run(Main.java:1468) at org.eclipse.equinox.launcher.Main.main(Main.java:1441)
下記コマンドで不足している言語パッケージをインストールする。
# apt install $(check-language-support)
使用するインプットメソッドにfcitxを指定して再起動したら直った。
$ im-config -n fcitx
すべてのkernelを削除すると、GRUBから起動できなくなるので、OSのインストールメディアでブートして、そのターミナルでkernelを再インストールする。
まずはインストールするドライブを特定する。下記のコマンドを実行してインストール対象のドライブラベルを確かめる。自分の環境では “nvme0n1p2” でした。
$ lsblk
次に特定したドライブを/mnt/にマウントする。
# mount /dev/nvme0n1p2 /mnt/
更にインストールに必要なディレクトリやファイルをマウント、バインドする。
# mount -o bind /dev/ /mnt/dev/ # mount -o bind /dev/pts/ /mnt/dev/pts/ # mount -t sysfs /sys/ /mnt/sys/ # mount -t proc /proc/ /mnt/proc/ # cp /etc/resolv.conf /mnt/etc/resolv.conf
chrootを実行してからパッケージリストを更新する。
# chroot /mnt/ # apt update
あとは普通にkernelをインストールする。自分はkernelのバージョン5.3.0-51をインストールした。
# apt install linux-headers-5.3.0-51 # apt install linux-headers-5.3.0-51-generic # apt install linux-image-5.3.0-51-generic # apt install linux-modules-5.3.0-51-generic # apt install linux-modules-extra-5.3.0-51-generic
GRUBの設定を更新してインストールしたkernelを示すことを確認する。
# update-grub
Ctrl+Dでchrootを解除し、下記のコマンドでマウントを解除する。
# umount /mnt/dev/pts/ # umount /mnt/dev/ # umount /mnt/sys/ # umount /mnt/proc/ # umount /mnt/
再起動して正常に起動することを確認。
OS: Ubuntu 20.04
カーネルバージョン: 5.4.0-29-generic
プロセッサ: 8 × AMD Ryzen 5 PRO 3500U w/ Radeon Vega Mobile Gfx
メモリ: 13.6 GiB of RAM
どうやらRyzenのIOMMU関連が原因のようで、カーネルのオプションにiommu=softを追加する必要がある。iommu=offだと何らかのIOMMUサポートが必要なデバイスが動かないらしい。
… GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=soft" …
/boot/grub/grub.cfgを更新する。
# update-grub
「apt upgrade」で調子こいて更新しまくっていると、おかしくなったり、意にそぐわない変更があったりして、別のKernelに変更したくなった場合の手順です。
まずは目的のKernelを特定する。起動時にESCを押して起動するKernelの選択画面から特定するのもありだし、aptで探し出しても良いと思う。
目的のKernelバージョンが分かったら、下記のような感じで必要なものをインストールする。
※今回は5.3.0-26から5.0.0-37に戻したい
# apt install linux-headers-5.0.0-37 # apt install linux-headers-5.0.0-37-generic # apt install linux-image-5.0.0-37-generic # apt install linux-modules-5.0.0-37-generic # apt install linux-modules-extra-5.0.0-37-generic
再起動して、起動時にESCを押して先程インストールしたKernelでOSを起動する。
正常動作を確認したら、いらないKernelを削除する形で、GRUBが起動するKernelを先程インストールしたバージョンにする。
※もし使わないKernelを残したい場合はGRUBの設定をいじる
# apt autoremove --purge linux-headers-5.3.* linux-image-5.3.* linux-modules-extra-5.3.*
以後、勝手に新しいKernelが入るのは嫌なので、下記のファイルを作成して更新対象外に設定しておく。
Package: linux-generic linux-headers-generic linux-image-generic Pin: version 5.0.0.37* Pin-Priority: 1001
HWEカーネルを使用している場合はこっち。
Package: linux-generic-hwe-18.04 linux-headers-generic-hwe-18.04 linux-image-generic-hwe-18.04 Pin: version 5.0.0.37* Pin-Priority: 1001
最近、Ubuntu18.04をupgradeしたら、plymouthのスプラッシュスクリーンに下記のようなエラーが表示されるようになった。VirtualBoxは普通にリポジトリからaptでインストールしたものを使用していた。VirtualBoxを削除するとメッセージは出なくなるので、原因はVirtualBoxだと思う。
[ 6.520533] PKCS#7 signature not signed with a trusted key [ 6.520996] VBoxNetFlt: Successfully started. [ 6.522276] PKCS#7 signature not signed with a trusted key [ 6.522450] VBoxNetAdp: Successfully started.
なんか、よくわからないけど、VirtualBox関連ドライバーの署名の問題らしく、既存のVirtualBoxをアンインストールして、最新(6.1)のVirtualBoxをOracleからダウンロードしてインストールしたら出なくなった。
2020/02/02
やっぱりよくわからない解決方法は再発する。また出始めた。特に実害があるわけではないし、正直もう面倒くさいので、表示するログレベルを重要度高いのだけにすることにした。個人で使うノートパソコンなので、今回はこれで十分だと思う。
まずは問題のメッセージのログレベルを確認する。-lオプションでログレベル指定して表示していくと、今回のメッセージは3のときに表示された。
$ dmesg -l 3
下記コマンドのファイルが設定内容。自分の環境では「4 4 1 7」だった。この値はドキュメントによると下記の説明らしい。
– console_loglevel: これよりも優先度の高いメッセージがコンソールに出力される
– default_message_loglevel: 明示的な優先度のないメッセージは、この優先度で出力される
– minimum_console_loglevel: console_loglevelを設定できる最小(最高)値
– default_console_loglevel: console_loglevelのデフォルト値
なので、1番目と2番目の4のことろを3にすれば良さそうだ。
$ cat /proc/sys/kernel/printk
ログレベル3をいちいち表示しない設定にするので、表示するログレベルを3未満に設定する。Kernelからのエラー(主にハードウェア)が自動的に表示されない設定になるので、自己責任で定期的にログ確認したほうが良いと思う。Windowsでもログの内容は見ないと分からないんだから、クライアント用途ならこれで良いと思った。
kernel.printk = 3 3 1 7
普通にDolphinでsmb://192.168.1.1/Public/に移動して*.mp4を開こうとするとエラーが発生する。Dolphinの挙動的には、マウントせずにDolphin単体でアクセスしているため、VLCプレイヤーではアクセスできていない感じの挙動に見える。
(KDE Plasma:5.17.5、Dolphin:19.12.1)
基本に戻ってcifsマウントすればファイルシステムの一部として動作するはずなので、まずはcifs-utilsをインストールする。
# apt install cifs-utils
次にfstabに記述を追加してrootじゃなくてもマウント可能にする。
//192.168.1.1/Public /mnt/192.168.1.1-Public cifs username=user,password=pass,vers=3.0,file_mode=0666,dir_mode=0777,noauto,user 0 0
Dolphinを開くと、リモートの項目に「Public on 192.168.1.1」が追加されていた。クリックすると自動的にマウントが行われ、無事にVLCプレイヤーでmp4を再生できた。マウントの解除はrootじゃないとできない。
自分の場合はVPN経由でマウントする場合もあり、VPN経由でマウントしたまま+VPN切断済みの状態でシャットダウンを行うと、smbサーバーと通信できず、マウント解除を1分30秒待機してからシャットダウンされるので、ここの手順で対策した。
それでもVPN接続したままシャットダウンすると1分30秒待たされるので、ログアウト時に下記のような内容のVPNを切断するスクリプトを登録しておくと安心。
#!/bin/sh nmcli connection down VPN接続名
下記のようなスクリプトを配置する。umountの各オプションについてはumountのヘルプを参照したら分かるけど、今回は何がなんでも解除するような感じにしてる。
#!/bin/bash umount -f -l -t cifs -a
実行可能にする。
# chmod +x /etc/NetworkManager/dispatcher.d/pre-down.d/01-umount-cifs