SSブログ

macOSからXubuntuへ、結局Ubuntuへ [Linux]

前回までの状況。古いMacBook ProでmacOSがメモリ不足でスワップしているからかかなり動作が遅くなっていた。一応、SSDに替えていたもののスワップが発生してしまってはどうしても遅くなってしまう。そんなわけで軽量Linuxを入れようとしました。

はじめはVoyagerを入れましたが色々問題が発生し、ちょっとこれは使えないなと言うことになりました。Xubuntuを使ってからは案外良くできていたんじゃないかと思うようになりました。でもカスタマイズの範囲でなんとかなる感じではありませんでした。
https://miff.blog.ss-blog.jp/2023-04-29

Xubuntuのハマりどころを書いておきます。まず最初にインストールの時に日本語表示にしないとだめです。日本語入力メソッド(MOZCとか)が入ってインストールされないのはもちろん、後から入れようとしても上手く日本語が入力できないという状態になってしまいました。上手く行く方法があるのかもしれないけど、いろいろググってみても上手く行く方法が見つかりませんでした。

はじめから日本語表示にするとユーザーディレクトリの中が日本語表示されて、そこでコマンドライン表示が非常にしにくくなるという副作用があって、普通にLinuxぽく使うなら昔から日本語モードにして入れるのは悪手とされていました。今でもそれが変わっていないので、そういうところはどうしようもないなと思ってしまいます。とはいえ、まともに日本語入力環境を入れようとすると、やはりOSインストールのところから日本語設定をやらないとダメなので痛し痒しなのです。昔は手動で日本語入力環境を入れていたので英語でのインストールは問題なかったのですが、今は上手くできなかったので厳しいですね。選べないというのは結構地獄です。

更にOSインストールの時に有線LANで入れないとダメというのもありました。無線LANをつないでインストールできるんだけれども、実際はWi-FiでUbuntuのリポジトリから新しいものを取ってこれないので、結果的に日本語入力環境がインストールされないという不具合がありました。さっき言ったとおりコマンドラインから日本語メソッドを入れることは難しいようなので、OSのインストールがWi-Fiではできないという状況にはあります。新しい部分をネットから入れるというチェックボックスが有効にならないので、そもそもどうしようもない訳ですが。

あとOSインストール後のWi-Fiもかなり問題があります。MacのWi-Fiのアダプタのドライバがプロプライエタリなものにしないといけないようなのです。

https://www.technewstoday.com/ubuntu-wifi-not-working/

OSを入れる時にWi-Fiにつなげていて、パスワードも残っているので、ドライバも引き続き同じものを使ってくれればいいものをそれができていない。訳がわからないけど、そこは上のサイトのようにドライバを変更すれば良かったのでした。Linuxはこういう普通はそうなるだろということができないことが多い。

なぜかキーボードからカタカナしか入力できなくなるバグにも遭遇した。言語サポートをIBusからXIMにしたら、日本語入力がカタカナ入力に固定してしまうバグから逃れられたのだけれど、普通に入力していたら途中で日本語入力が勝手に確定されてしまうバグ(自動変換切っても切らなくても起こる)や、何故か勝手にウインドウがスクロールしてしまうバグにも遭遇して、とても日本語入力には耐えられない状況になっていました。Macのタッチパッドが落ち窪んでいなくて、手で触ってクリックしてしまうということもあったのだけれども、それだけでは説明できない挙動もあってかなり苦しんで日本語入力していました。





軽量Linuxに絞ってやっていたんだけど、Voyagerは良くできたものだったけど、ちょっと難有りだった。Xubuntuも日本語入力の問題でかなりダメだったので、軽量Linuxはみんな日本語入力で引っかかりそうだなと思った。メモリを使用する量が少ないのはいいけど、そこまでケチる環境って本当に軽くしないと動かないマシンで最終手段だったりするよね。

初期Core i7とRAM 8GBだから、そこまで気にするスペックではない。だけど、軽量Linuxでサクサク動かしたいと思う気持ちはあって、それが脆くも敗れ去った感じだ。基本的に日本語で使っているユーザーは世界の中では一部であって、軽量Linuxでは更に少ないユーザーとなる。その上、Mac上で使っているとなると更にマイナーであり、不都合があっても仕方がない。まだMacのCPUがIntelではなかった頃は、専用ディストロみたいになっていただろうからまだ良かったのだろうけど、今となってはPCであろうとMacであろうと同じディストロでやるってことになっている。Arm MacになったらAsahi Linuxみたいに専用のものになるから、そこいらのブレは少なくなるんだろうけど微妙な話だよね。

そんなわけで結局本家UbuntuをMacで使ってみました。結果として、今までダメダメだった日本語入力が問題なくできるようになりました。やはり多くの人が使っているディストリビューションは不具合が解決されていて、マイナーとはいえMacユーザーも比較的多いからか問題はなかった。日本語入力にするにも、問題なくショートカットキーで切替可能だし、普通に使える。この普通に使えるということにかなりの労力が割かれていることは想像似難くない。軽量Linux程度のユーザー数のフィードバックではどうしようもないのだ。

Firefoxを立ち上げているだけだけど、8GBのRAMの1/3程度しか使っていない。もっとバンバンFirefoxのタブを開けば消費するのだろうけど、他の端末ほどは開かないつもり。LibreOfficeとか入っているけれども使わないかなぁ。Officeの横にブラウザを開いて書き物をしても大丈夫そうな感じではある。でも、ギリギリぐらいかもしれない。そんな微妙なスペック。

https://support.apple.com/kb/sp644?locale=ja_JP

まぁ2011年ごろの製品だから、その当時はそこそこ良いスペックであっても、今となっては軽量Linuxを入れようとするぐらいのものとなってしまっている。というか、この製品は二度もAppleの修理にお世話になっていて、どちらも金を払っていない。一度はロジックボードが壊れているとAppleの無償対応で、次はバッテリーが膨らんで金取られると思ったけど、タダで直してくれた。そんなわけで10年以上も使っている。ここ数年はほとんど使っていなかったのだが、場所ばっかり取って無駄だったので無理やり動かそうとしたわけだ。

結局、無印Ubuntuでも大丈夫だったわけだが、無理してまで軽量Linuxを使うこともなかったな。そもそもバグや不具合が潰されにくいディストロを使うということは、それを乗り越えていく心づもりがない限りは使いにくいだけである。そもそもがWindowsやMacの快適さを求めること自体、筋違いというものなのだろうけど、簡単に使えるほうがいいじゃないですか。

コメント(0) 
共通テーマ:パソコン・インターネット

macOSとお別れ。 [Linux]

Macとはお別れしない。だけど古いMacがメモリが足りないのでLinuxを入れることにした。一応戻れるようにTimeMachineでバックアップを取っておく。でもそれだけだとファイルを使おうとすると面倒なので別途バックアップを取っておく。

そのMacBook Proはかなり古くてOSの更新も止まってしまったものです。積んでいるのは初期のCore iですね。一つのUSBポートが死んでいます。

前にLinuxへの移行をしようとしたためUSBメモリにバックアップを取っていた。その時に取り忘れていたものを入れようと、前に使ったExFATの128GBのUSBに追記しようとした。なぜかmacでマウントできない。Windowsでは中身が見える。だけどmacではディスクユーティリティで見てもハードウェアで認識はされているようだけど、マウントはされていないようでデスクトップにはもちろん出てこない。

前にmacで使えていたので、ExFATや128GBがネックになって読めないとは思えない。ググってみたら怪しげなソフトを紹介するサイトが多くて、正直それで解決したくなかった。変なマルウェアだったらやだし。でも有名どころのソフトのサイトで解決した。

https://jp.easeus.com/mac-data-recovery/exfat-usb-not-showing-up-on-mac.html

方法1.Macの電源を切り、再び入れる
意外かもしれませんが、電源を切ったり入れたりする簡単な方法で解決できます。


いや、意外ではないが、今どき再起動で解決を促すとか安易すぎない?と思ってやったら、サクッと認識した。macOS最悪w。というかmacOSは落ちにくくなった分、立ち上げっぱなしになってあまり再起動しなくなっているんだよね。その反動というか落ちないために問題が出てくるということも少なくなくなった気はしている。昔は再起動でなんとかしろ、というのが案外当たり前の行為だったんだけど、意図的に再起動することが少なくなった今としては、逆に新鮮というか安易な考えに戻ったなというかんじではある。

macなのでvoyagerを入れる。フランス語とかっぽいのでボイジャーって読むのかな?
https://voyagerlive.org/
最新のLTSを入れるつもり。
https://voyagerlive.org/voyager-22-04-lts/#test
ISOを落としたので、以下の方法でUSBメモリに入れる。
https://sy-base.com/myrobotics/mac/ubuntu_bootusb/
WindowsとかだとUSBメモリに入れるのにはツールを入れないといけないと思うけど、macは普通に標準のツールで入れられる。そこのところはBSDなUNIXだよな。GUIのソフトで楽もできるらしいけどやってない。

デスクトップにメモリ使用量とかが出てわかりやすい。FirefoxでTwitterとか見ているとすげーメモリ食う。まぁブラウジングに問題はなさそう。

もちろんWiFiも使える。昔はかなり怪しかったときもあったけど、そこいらへんはこなれてきているみたいだ。有線LANじゃなくていいのはかなり取り回しは良くなる。

日本語を打とうとした時に、やはり「かな」ボタンでは日本語変換にならない。何かショートカットキーがあるといいんだけどな。右上のバーのところをいじくると日本語入力できるようになる。変換に問題はないようだ。

でも句読点変換しようとプロパティだかプリファレンスだかのウインドウを出そうとするけど、下のバーにアプリのマークが出るだけで、ウインドウというかダイアログは出ない。下のバーのアプリのマークを押すと出たり入ったりの挙動はするんだけど、どこでウインドウが出ているのかわからない。画面のページを変えてもだめだった。日本語変換の設定ができないとか最近のOSとしてはヒドすぎる。こういう変なバグがLinuxのGUIには多いから嫌いなんだよな。そのところは商用は使われて枯れているので安心して使える。

OSを再起動しても直らないから純粋なバグっぽい。句読点変換できないのは使いにくい。その設定はあったはずなのでウインドウがでてこないだけなんだよね。一発で日本語モードにならないのも面倒だけど、設定ができないのも痛いな…


問題はそれだけではない。タッチパッドの挙動が変。Macらしくなく押し込まなくてもタッチするだけでクリック動作ができる。でも、押し込んでもクリックにならないときが結構ある。そして押し込んだあとドラッグしたくても効かない時がかなりある。なのでウインドウを移動したくてもできないことがあって、1ウインドウ1画面とかにして⌘+tabで切り替えるとかした方がストレスがないかもしれない。右クリックもできない。二本指でクリックするという動作が認識されないみたいだ。そこの所はカスタマイズでも変えられない。右クリックをボタンとの組み合わせを使って試してみたが、どのボタンもできないようだった。

タッチパッドが嫌なので、Bluetoothのマウスを持ってきて使ってみた。これはMacOSで使ったことのある実績のあるものだ。まぁサポートされているから使えるわな。でもこのLinuxでは使えなかった。他のディストロでは使えるかもしれないが、そこの所は使いまわしているから相性が悪いのかもしれない。Bluetoothじゃないオレオレ規格のドングル付き無線マウスに関しては普通に使えた。ハードウェアだけでほとんどドライバが必要ないのかもしれない。あーやっぱり句読点変換できないのはストレスが貯まるな。変換される日本語は悪くないから悔やまれまくるな。


昔よりかはFirefoxの違和感みたいなものはなくて大体は使えそうな感じ。なのでWebでできる大体のことはできそう。だけどオペレーション関係に問題がありすぎて、Macでは普通にWindowsマシンにLinuxを入れたときほどうまく動かない。なにか工夫でなんとかなる程度のレベルじゃない。ある程度のストレスは覚悟していたが、Voyagerレベルの出来では厳しいかもしれない。他のメモリ食いのディストロを使ってみるかな…


まずはDebian関係がダメなのかどうかを知りたいので、Xubuntuなどを使ってみようと思う。というか、Ubuntuの派生物でダメなら他のディストリビューションもダメな気がします。

コメント(0) 
共通テーマ:パソコン・インターネット

apachectl gracefulは万能ではなかった [Linux]

TLS用のサーバ証明書の更新で、会社の各部署に断りを入れていたんだけど、こっちが失敗してhttpdを落とさない限りは別にそれは必要なかった。でも、それまでに何かしら問題があって短い間だけど、Webサーバを落としていたから、その間は止まるかもしれないよと断りを入れるほかなかった。

上司からapacheならgraceful restartがあるんじゃね?と言われて、ほうほう、そんなものがあるのかと調べてみた。
https://spirits.appirits.com/doruby/8913/
確かに動かない時は、それまでのプロセスで動いてくれそうな感じはした。でも、実際にやってみないとわからないからやってみた。

まずサーバ証明書関係のファイルをリネームして、必要なファイルがない状態にした。
# apachectl graceful
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

あれ?httpdが落ちたのかな?と思ったら落ちていなかった。gracefulは効いている模様。

次にファイル名は設定どおりにして、crtファイル(サーバ証明書)だけを新しくしてみて、keyファイルと齟齬がある状態にして
apache graceful

してみた。何もエラーが出ない。でもhttpdが落ちてた…。何事よ?
crtファイルを元に戻してapache gracefulをすると、デーモンがないよと怒られる。そりゃそうか…。
Job for httpd.service invalid

そうね、普通にsystemctl start httpd しないとあかんね。
それで元に戻った。apache gracefulはhttpd -t以上の事をしてくれているみたいだけど、サーバ証明書とキーファイルの中身の齟齬があって立ち上げられない、とかには対応できないみたい。

設定のファイル名が違って読み込めないとかならチェックが効くけれども、それ以上の事はチェックできないようだ。まぁそこまで面倒見てくれないとは思っていたけど、ちょっと期待していた。間違えないようにして一発勝負ってのは変わらなかった。


・おまけ
なんかapachectl gracefulでエラーが出ないのも嫌だなと思っていた。
https://ex1.m-yabe.com/archives/5120
systemctl reload httpd でいいらしい。
たぶんこれだとデーモンが立ち上がらない時はエラーが出るんじゃないかな?

コメント(0) 
共通テーマ:パソコン・インターネット

Systemdの設定ファイルをyumに上書かれた [Linux]

RHEL7での話。もう来年でRHEL7も終わるので、今書いたところで何という事でもないのだが…

yum updateをしたらfluentdでのログ転送が止まっているとの報告を受けて調べたら(その時はyum updateのせいかどうかははっきりしなかったんだけど)、OSの更新時に設定ファイルを上書いて、まわり回ってデーモンの読み書きがPermission Deniedになっていたらしい。

それもtd-agentが秒ごとにエラーログを吐くから圧縮しても結構な量になっていた。
結局、/usr/lib/systemd/system/td-agent.service を上書きしてデフォルトの設定にしなければいいわけで、yumはどうなっているのかちょっと気がふれているのではないかと思った。

Debianだと昔、OSの更新の時に多少注意が出て止まるとかあったんだけど、RHELではたぶん何も言わずに消した。.rpmnewのファイルができるぐらいならまだいいんだけど、それだって新しいファイルで上書きなんてことはしない。


結局の解決は、/usr/lib/systemd/system/td-agent.service に書かないで、コピーして/etc/systemd/system/td-agent.service に移せばいいのですが、知らない人にとっては罠でしかない。

ここには上書きすること自体は書かれてはいないんだけど、/usr/lib/systemd/system/のファイルを/etc/systemd/system/にコピーして編集するようなことが書いてあったと思う。
https://tsunokawa.hatenablog.com/entry/2018/10/05/013034

この上書き行動はRHEL7でしか起こんなくて、RHEL8ではたぶん起こらない。7でSystemdが入ったので6では起こらない。なのでたぶん7だけのクソ仕様なんだけど、8ではやらないことをなぜ7で放置するのかわけがわからない。

コメント(0) 
共通テーマ:パソコン・インターネット

Apache HTTPDのサーバ証明書をTomcatに使いまわせと言われたら [Linux]

あんまりないかもしれないですけど、Apache HTTPD用のサーバ証明書を同じホストの上で動かすTomcatに使えと言われたとします。そもそもHTTPD用にopensslコマンドで作るキーと、keytoolで作るキーは違うんだから、両立できないんじゃないかと思われるかもしれません。自分もそう思っていました。だけど両立はできます。できるからやれと言われたんだけど、あからさまに使い回す記事がなかったので探すのにちょっと苦労しました。


まずopensslでサーバ証明書を作る手順を考えると、
「秘密鍵を作る→CSRファイルを作る→サーバ証明書を発行してもらう」
という流れになっていると思います。

これはjavaのkeytoolでもだいたい同じですが、keytoolが出すキーストアファイルとopensslで出力されるファイルが違うのでそのままでは使いまわせません。それにキーストアファイルは他の証明書を取り込んでいくし、テキストファイルではなくバイナリファイルになっているので変換が必要になります。

やることは
https://qiita.com/yasushi-jp/items/89bd88e13949c73d0f16
にあるのだけれど、ちょっと補足しておきます。

必要なのは
6. 秘密鍵と証明書をPKCS12形式に変換
9. PKCS12キーストアをJKSキーストアに変換
のところだけで、あとは確かめる作業なのでそこまで重要ではありません。
確認したい方はどうぞというところ。まぁダメな時はダメなのでもう一回やり直したほうが早いです。

流れ的には上に書いたけど、
「OpenSSLで作った秘密鍵と証明鍵を用意→pkcs12なファイルに変換→JKSファイルに変換」
という流れ。JKS形式のファイルがTomcatのキーストアファイルになるから、Tomcatにインストールする流れで使える。

ただ、キーストアファイルとしてはすでにサーバー証明書を取り込んでいる状態だから、再度サーバ証明書を取り込もうとするとエラーになる。エラーにはなるが取り込まなくても入っているので、そのままで問題ないはず。エラーコードは取ってないので提示できません、すいません。identicalとかいう単語が出てきたはず。

それとパスワードもパラメーターの中に入れているけれども、これはその時入力しなくても後で入力を促されるので、必ずしも入れなければならないわけではないです。変な記号とか入っているパスワード類はコマンドラインのワンライナーでは入力できないこともあるので、最初から入れてあげられない場合はコマンドの中で入力すればいいだけです。多分下のもので最低限だったはず。
openssl pkcs12 -export -in 「証明書のファイル名」 -name 「エイリアス」 -inkey 「秘密鍵のファイル名」  -out 「PKCS12キーストアのファイル名」 

keytool -importkeystore -srckeystore 「PKCS12キーストアのファイル名」 -srcstoretype PKCS12  -destkeystore 「JKSキーストアのファイル名」 -deststoretype JKS

元のサイトのだとザラザラとパスワードを書き込まないといけないので、bashとかのコマンド履歴を見られたら一発でバレる。こういう書き方をするのはインタラクティブな操作を説明しないといけないのが面倒なだけなので、他のパスワードを含むコマンドを打つように言われた時にも気をつけるようにしたい。シェルスクリプトとかで生成したい場合は仕方ないけど、その時もファイルのオーナーをrootにしたりしてパーミッションを700にするとか自衛手段は最低取らないといけない。

httpd(openssl)もtomcat(keytool)も自分のやり方があるだろうから細かくは書かなかった。オレオレ証明書でいいなら、上のサイトと同じようにやればいい。オレオレ証明書はお金があったらなるべく使いたくはないよな。ブラウザにえんがちょ認定されるし。http/3ではオレオレ証明書はChrome経由だと普通に使えないっぽいし。


普通はhttpdとtomcatを同一サーバに立てるなんてことはしないんだろうけど、どうしてもしたい場合はこういうふうにやれば大丈夫。できれば別のインスタンスとかに入れて運用したいところだけど、やれと言われたらやるしかないよね…




《追記》
上で書かれていることは間違っていない。だけれど最善ではない。Webブラウザでは問題ないのだが、OpenSSLを使っているツールを使っている場合、つなぐとエラーが出て問題になる。

OpenSSLで作ったサーバ証明書と秘密鍵を、Tomcat用(java用)のキーストアファイルにコンバートするのは間違っていないのだが、後から中間証明書等を入れるのがまずかったらしい。keytool自体でkeystoreファイルにルートや中間証明書を入れることはできるのだが、
keytool -v -list -keystore キーストアファイル

で出てくる文字列が「Certificate chain length: 3」となっていないとダメらしい。先の方法だとあとからRootCAとか中間CA証明書をkeytoolで入れたとしても、「Certificate chain length: 1」でチェインしていないと判断されるらしい。

具体的な作業としては以下

・CAのファイルがx509なテキストファイルじゃなかった時に変換(バイナリだとつなげられん)
openssl x509 -in rootca.cer -inform der -out rootca.cer.der

・rootCA(rootca.cer.der)と中間CA(ica.cer)のファイルをつなげる
cat rootca.cer.der ica.cer > cachain.cer

・pkcs12のファイルに変換(秘密鍵:sever.key, サーバ証明書:server.cer)
openssl pkcs12 -inkey server.key -in server.cer -export -out keystore.p12 -CAfile cachain.cer -chain

・pkcs12からJKSに変換
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12  -destkeystore keystore.jks -deststoretype JKS


基本的に、チェインするCAのファイルも指定してあげること以外は変わっていない。keystore.jksを任意の場所に置いて、設定ファイルでその場所を指定してあげるだけでいいはず。

これで晴れてOpenSSLコマンドにも文句が言われなくなって、ブラウザ越しじゃない通信も大丈夫になった。というか、前提のサーバ証明書がみんなオレオレ証明書だったりするから、こんな細かいことを気にしなくてもいいんだよな。オレオレ証明書だった時にはOpenSSLには蹴られないんだろうか…


・参考にしたサイト

https://www.ibm.com/docs/ja/api-connect/10.0.1.x?topic=overview-generating-pkcs12-file-certificate-authority

https://www.ssl.com/ja/%E3%82%AC%E3%82%A4%E3%83%89/pem-der-crt%E3%81%8A%E3%82%88%E3%81%B3cer-x-509%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E5%A4%89%E6%8F%9B/

https://glorificatio.org/archives/2914

というか、最初はサーバ証明書と秘密鍵を引き出して、そこからJavaのキーストアファイルを生成しようとしていたから八方塞がりだった。基本的に鍵ペアはkeytoolで自動生成だもんなぁ…。方法がなくて当たり前かもなぁ。何にしてもできたからいいや。貧乏な会社はやることも多いから知っていて損はない。というか、お金くれなかったらオレオレ証明書か…

コメント(0) 
共通テーマ:パソコン・インターネット

みんな円安が悪いんや。軽量Linux [Linux]

Windows10から11へはハードウェアの要件を満たしていれば、無料でアップグレードできるのだが、流石にWindows7の10に無料アップグレードした頃のマシンはギリギリくらい対応していない。買い替えサイクルとしては、Windows11を新規にという人も多いだろう。

会社のマシンはCPUが対応していなかった。そんなに古いPCではないのだが、CPUだけが引っかかっている感じだ。なのでWindows10を最後まで引っ張って現役引退ということになるが、自分がその会社にそれまでいられるかな?というところ。今のところはいいので、やめろと言われるまで居るけど。それとどうせリースなんだろうし、変えようと思えばどうとでもなるんだろう。一応開発マシンなので、メモリだけは潤沢にしてくれるはず。

今は物価は上がっているし、円安だし、Windows11の自作する時期じゃない。それとWindows10がダメになるまでは、まだ3年くらいある。最近新しいCPUがIntelとAMDから出ているけれども、タイミング的に次の時を狙えるぐらいの期間はある。悩ましい。ギリギリになってやりたくない気はするけれども、今は時期でないことはわかる。

それと次作らないといけないものは、Mini-ITXのものなので低電力CPUを使いたい。マザーボードの調節で高TDPのCPUを低電力で使うというやり方はできそうなものの、やはりクロックダウンとかは普通には行われないので、マザーボード的にクロックアップほど対応している確約はない。Intelの手持ちのCPUはK系列ではないので、マザーボードで色々設定できない。そもそもやっている人が少ないので、その経験値を誰かから得ることもしにくい。

前にも書いたけど、リテールで低電力CPUが出ることはなく、バルクかそれが入っているものを買うしかない。自作的にはどこかでバルクのものを買うしかないわけだ。自作ショップでもリテールのものしか扱っていないところは割とあって、タイミングと場所が限られていて厳しい。値段を気にしてとかいうことができないので、全体の値段が高いとどうしようもない。

円安とインフレはどうにかならんかね。普通に生きているだけで削られるのキツい。




Windows11は最低限にして、他はUbuntuとかでもあんまり問題ないんだよなぁ。今ではFirefoxあるし、動画さえ見れればだいたい事足りるんだよなぁ。Windowsでしかできない事は別のPCでやればいいんだし。今まで使ってきたCore iの初期の頃のMacは、MacOSがメモリ消費しすぎてブラウザを立ち上げるだけで動きがもっさりしている。macOSで8GBメモリはきつすぎるんだよな。メモリ圧縮していてもWindowsにメモリ消費量が負けるの厳しい。

Ubuntuを入れてダメだったら、Mintでも入れるかな…。正直軽量Linuxのディストリビューションは知らない。というか、仕事でCentOSとRHELしか使ってないし、それまでもDebianとUbuntuぐらいしかまともに使っていない。

https://pc-freedom.net/basic/find-a-beginner-friendly-lightweight-linux/

とりあえず、Firefoxが普通に使えればいいんだけど、変な亜種とか古いの入れられてたりしたらヤダよね。それだけはなんとか担保したい。それとVLCが普通に入ればいい感じ。

そもそもMacに対応しているディストリビューションってあるのかな? まぁIntel Macになってから、ほぼほぼPCと同じになったのだけれど、結局きちんとドライバとかが用意されているかどうかというのが問題だったりする。同じ部品を使っていたりすれば、ドライバも流用が効くんだろうけど実際はどうなのかな?

あと気になるのがソフトウェアリポジトリがきちんと維持されているかどうか。玄箱を使っていた時、PowerPCのリポジトリが古くて、古いソフトウェアを使わざるを得ない時があった。普通に使われているx86-64のリポジトリでも、プログラミング言語のパッケージが古いとか普通にあるので、それほど気にすることじゃないのかもしれない。多少、Exploitが出たとしても絶対数が少ないので、狙われること自体少ないと思うし。

macに入れるということを考えると、Voyagerなのかな?

https://www.ura-no-ura.com/2021/06/lets-start-linux-77.html

サポートのタイミングを考えるとLTSでも厳しいか。継続してサポートされるならいいんだけど、日和って黙ってXubuntuを使うのがいいのかもしれない。ただVOYAGERでFirefoxもVLCも入るみたいだから、本家っぽいXubuntuでも対応している可能性は高い。ちょっと調べてくる。

https://www.d2b6.com/article/470654125.html

どのディストロでもFirefoxぐらいはあるっぽい。Linuxにありがちな微妙な使いにくさがあるみたいで、Lubuntuは軽いみたいだけど色々なところで問題があると見受けられた。YoutubeとかでGrubが壊れたとか初心者がやったら一発で嫌になるような状態になっていたようだ。自分で直せなくはないけど、そういうユーザーの力に頼るディストロはノーサンキューだ。

Xubuntuは中途半端な軽さだけど、Kubuntuとかマイナーっぽいのでサポートがなぁとか思っちゃう。そういう意味ではXubuntuでもそんなに変わりはないのかもしれないけど、LTSが長くてサポートもそこそこ出来ていれば問題ない。

とりあえずMacはTime Machineでバックアップを取った上で、メールとかデータを新しい方のmacに移して使えるようにして、何か軽量Linuxを入れてみよう。macOSが最新ではない上に、メモリが足りなくて動きがもっさりしすぎているので、置いておいても使えない。Windowsを入れて使うこともできるんだろうけど、デスクトップLinuxを普段遣いで使ったことがないのでやってみよう。デスクトップLinuxはUbuntu DesktopをGPU開発で使ったことがあるんだけど、ほんとブラウザを使うぐらいしかしていないので使い心地がわからんのよね。それにそこそこマシンパワーがあるところにUbuntuだから、よわよわハードに軽量Linuxという経験もしたい気がするし。

LibreOfficeとかはMS Officeが使いこなせない人にこそ使ってほしいと思うんだけど、軽量Linuxは問題が出ると途端にコマンドラインに降りなくてはならないので、初心者にはキツすぎる気はする。他にググる環境があればいいけど、それもないと厳しいしね。今ではスマホがあるからいいけど、スマホで検索する情報は簡単なものならいいけど、正直使いにくいことも多いし。

技術がないと使えない軽量Linuxだと思うけど、逆にそこを受け入れられるならほとんどが無償なので、Firefoxがある今、VLCも別途入れれば自分の用途的には問題ない。そもそもブラウザとメールでしか使ってなかったし。そのブラウザがメモリ不足でうまく動かなくなったので、軽量Linuxというのはいい選択肢なんだろうなとは思う。しかし、macOSは8GBですらメモリが足りないとか、リソース食いすぎだろと思わないこともないけど。まぁ色々入れているから、不要なものを消せば少しはマシになるのだろうけど、そこまで延命したところで大したことはできないんだよね。

ただウィンドウマネージャは色々あると思うけど、それにどうやって対応しているのかわかんないね。そもそもGnomeとかはウィンドウマネージャではなくて、デスクトップ環境なんだね。
https://ja.wikipedia.org/wiki/X%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3
https://ja.wikipedia.org/wiki/GNOME

コメント(0) 
共通テーマ:パソコン・インターネット

Windows UpdateがデュアルブートのLinuxを殺しに来る [Linux]

一つのPCがWindows10とUbuntuのデュアルブートにしていて、Windows UpdateをしたらUbuntuのパーティションを削られて起動不能になった件。

起動不能になっただけならまだしも、後ろにあるパーティションを強制的に削るため、Ubuntuの中に入っていたファイルとかが取り出せなくなった。マイクロソフトは糞だと思っていたけど、ここまでアホとは思わなかった。今更デュアルブートなんてしてんじゃねーよと言われればそうなのだが、GPUの開発をしていたので仮想化では使えんかったんよ。

HDDの前半分にWindows10を入れて、後ろの方のパーティションにUbuntuを入れていた。Windows Updateをしていたら何故かUbuntuどころかWindowsもブートしなくなったので、どうしたものかと思った。grub rescue> というブートするところが死んでいる事は分かったので、そこを回復しようとしてググった。

https://segakuin.com/linux/grub.html

上のようにやっても全くブートできるパーティションが見つからない。使いにくい英語配列キーボードの打ち込みにも関わらず好転しなかった。Super Grub2 DiskというブートCDを使って修復を試みようとしたが、これもどうにもうまく行かなかった。そもそもLinuxでブートできるパーティションがないようだった。というか、CD-RWをすごい久しぶりに使ったよ。CD-RWは金属だと思ったので腐ってなかったw。

https://www.supergrubdisk.org/super-grub2-disk/

とりあえず、Windows10はブートすることができたので一安心だけど、MBRとかを書き換えないとそのままではブートしない状態は続く。どうしてもUbuntuが諦めきれず、UbuntuのLive CDでパーティションの詳細を見ることにした。DVD-RWにDesktopなUbuntuのLive CDを焼いてブートするも、かなり時間がかかる。Knoppixの時もかなり時間がかかっていたのを思い出した。それとBDドライブがやたらうるさい。USBメモリにすれば良かった。

そこでGpartedを見たのだが、Hidden NTFS WinREという見知らぬパーティションができていた。どうやら、後ろにあるUbuntuのパーティションを強制的に削って、Windowsの回復パーティションを作ったらしい。ほんとクソw。Linuxと敵対していた昔のMSだってそんなひどいことしなかったよ…。これはちょっとひどすぎる。というか、普通に資産を失う開発者とか居そう。自分はそれほどではなかったけど、何が消えたかもわからない状態は常軌を逸していると言わざるを得ない。

しょうがないので、またSuper Grub2 DiskでWindows10をブートして、Windowsでブート領域を回復することにした。たぶん下のサイトのように直した。

https://www.pasoble.jp/windows/10/bootrec.html

その後もWindows Updateの不具合が続き、何度もエラーコードでググった。Windows Updateだけでまる2日間やっているが、まだ最新にならない。やっぱりWindowsおかしいよな。こんだけ時間が削られるのって労働生産性落としているとしか思えないんだよな。

Windowsは古いISOで入れて、Windows Updateを使うとドツボにはまることも多い。それはWindows Serverでもそうだから、MSの問題なのだろうと思う。こういうのを繰り返してみんなMSに殺意を覚えるようになるんだろうなw

とはいえ、Macもすごくいいかと言われると、そうでもない。まだマシな部類かもしれないが、かんたんにしようとする努力はわかるので、MSほど殺意は湧かないw。でも、古いMacがメモリ消費しすぎて、Firefoxがほとんど使えない。Safariに切り替えたんだけど、それもメモリ不足が祟って動きがもっさりしている。もうそろそろLinux入れて、現役を引退させようかな…。

コメント(0) 
共通テーマ:パソコン・インターネット

SSH端末を切断したりして、.bash_logout が走らない時の対応策。 [Linux]

Linuxのログアウトの時に、コマンド履歴をクリアしたい場面があるとします。
これは ~/.bash_logout に以下の処理を入れ込めばできます。

history -c
history -w


履歴をクリアにしてから、ファイルに上書きするのですね。history -cだけで消えたと思ってしまいますが、メモリに常駐しているヒストリーが消えただけなので、次の時に.bash_historyから復活してしまいます。以前のexit時に.bash_historyがなければ、exitで消えてしまうので問題ないんですが、history -w しない片手落ちのサイトをそこそこ見ました。

なお、消すだけじゃなくて、履歴をどこかに取っておきたいなら、history -cの前でhistoryコマンドを適当なディレクトリでリダイレクトします。


ただ、そこには問題があって、exitコマンドを打って終了してあげないと、.bash_logoutが発動しないんですね。SSH端末ごと終了したり、何かのタイムアウトで接続が切れてしまったりしても、.bash_logoutの処理は走りません(少なくとも自分のところの環境ではみなそうであった)。仮に上のようにコマンド履歴をクリアしたくても自動でしてくれなくなってしまう。

https://yeupou.wordpress.com/2018/03/29/clearing-bash-history-on-exit-of-any-kind/
https://tutorialmore.com/questions-183794.htm

ここ↑の両サイトには以下のような.bashrcを書けばよいと書いてあります。
もちろん /etc/bashrc に書いてもいい。

exit_session() {
 . "$HOME/.bash_logout"
}
trap exit_session SIGHUP

alias exit='. "$HOME/.bash_logout" ; exit'

でも、自分のところではこれではSSH端末を終了させたときに.bash_logoutが発動しなかった。
それとaliasで始まる最後の行はなくても大丈夫みたい。

自分のところで動いたコードは、最後の行が

trap exit_session EXIT


でした。SIGHUPをEXITにしただけ。その他のところは変えなくても問題なく動くみたいです。
SIGHUPではダメな人はEXITをお試しあれ。
exitせずにSSH端末を落としても、たぶん他のところから回線が切られても.bash_logoutは動作します。ただこれはRHELとTeraTermやRLoginの組み合わせなので、他では効いてこないかもしれないです。

https://shellscript.sunone.me/signal_and_trap.html

https://unix.stackexchange.com/questions/371161/bash-logout-is-not-running-on-exit-of-putty
https://superuser.com/questions/410525/explain-why-bash-logout-wont-run-commands/410534#410534

ここいらへんを見て、少し試行錯誤しました。コンピュータ関係では書いてあることと違う事も結構ある。確かにSIGHUPを無視するnohupというコマンドもあるくらいだから、SIGHUPで良さそうだけど実際には動かなかった。なので動くコードが正本ってことで、自分の環境には適用しました。動かないと話にならないもんね。

というか、正常終了しなくても.bash_logoutが動いてほしいんだけど。


《後記》
trap exit_session EXIT という書き方で一般ユーザーはきちんと.bash_logoutの処理が動いていたんだけれど、rootだとなぜか動かないんだよね。/root/.bash_logoutに設定しているんだけども、rootで端末ぶち切ったときには発動しない。なぜなんだろう…


解決したようです。
trap exit_session EXIT
trap exit_session 1 2 3 15

と書けば動作しました。
https://shellscript.sunone.me/signal_and_trap.html

1,2,3,15のシグナルでrootでは引っ掛かってる模様。それなら
trap exit_session 0 1 2 3 15

で良さそうなものだけれど、分けて書いたほうがいいみたいなサイトもあったので結局分けた。

でも、それでもまだ問題が出た。消すだけならいいんだけど、先にも言ったようにhistoryをリダイレクトして他の場所に出力すると、なぜかファイルが空になる。何で履歴が空になるんだろうと不思議に思っていたんだけど、どうやら.bash_logout が少なくとも2回実行されているみたいなのだ。なので1回目のリダイレクトで書き込めても、2回目に空になったhistoryの出力で上書きされて空になる。

bashのバグか、それもそのバージョンだけのbashのバグかわからないけど、場合によっては2回実行される(いつもではない)のは再現している。さらに面倒なことにそこのサーバはユーザーを段階的に踏んで、rootになるようになっていて(まぁ普通はrootでいきなり入れないようにする)、rootになるまで数ユーザーを経ている。なのでSSHクライアントをぶち切った後、各ユーザーの.bash_logoutの処理が走るわけだが、そのせいもあるのかもしれない。

処理的には使っている各ユーザーの処理がスタックされて.bash_logoutが走っているのはわかるのだが、2回走る意味がわからない。設定でそうなっている可能性はあるのだが、そこまで調べたくない。なので

history > /var/log/history_user01`date +%Y%m%d%H%M`.log

history >> /var/log/history_user01`date +%Y%m%d%H%M`.log
に変えた。
そうすれば2回目に空の内容を書き込もうとしても、1回目の出力は消えない。やっと解決した感じ。




問題として
・SIGHUPでtrapされない
・rootで実行されない
・.bash_logout が複数回実行される

ということがあったわけだが、

・trapをEXITにする
・trapを1 2 3 15 にする
・historyの出力をリダイレクトする場合、上書きでなく追記にする

でとりあえず解決した。遠い道のりであった…
最後に関しては特定のバージョンのバグぽいので、やらなくていい場合はあると思うけど、やっておいてもたぶん害はないので大丈夫なはず。

コメント(0) 
共通テーマ:パソコン・インターネット

RLoginで配列のサンプルコードがなかったので自分でスクラッチした [Linux]

WindowsのSSHクライアントのRLoginで独自スクリプトが使えるんですが、いかんせん本家サイトでも情報が不足している。

https://kmiya-culti.github.io/RLogin/script.html#I3

配列とforeachがあるなら、プログラミング的に楽できそうだと思って、サンプルコードが欲しくて「rlogin スクリプト foreach」あたりでググってみてもシェルスクリプト関係ばっかり出てくる。こりゃ探してもなさそうだなと思い、いろいろ試行錯誤しながら配列を使ってみた。

・配列の例
users = ["user01", "user02", "user03" , "user04"];

foreach ( val in users ){
  sputs(sprintf("ls /home/%s/", val));
}

簡単すぎて実用性がなくてすいません。ここでは自分のマシンのユーザーに合わせて作ったりしてほしいのだが、su root状態でスクリプトを走らせるとまんべんなくいろいろなユーザーに処理を施すことができる。

rootなのでファイルとかを作ってしまうとrootがオーナーになってしまったりして面倒だが、もともとユーザー名をスクリプトの中で持っているので、
sputs(sprintf("su %s\n", val));

とかで処理すると良さそう。

延々と違うサーバの同じユーザーの処理とかやらされるのだったら、スクリプトを一個作ってしまえばそれを走らせるだけで処理が終わる。初めにrootにならないといけないのは面倒だけど、sudoとかで済むなら、スクリプトを走らせる前に適当なコマンドをsudoで実行してパスワードを入力しておけばいけると思う。

Linuxサーバ管理が面倒になったときにどうぞ。本来ならツールとかLinuxサーバ側に入れて対応すべきなのかもしれないけど、昔からのサーバが腐るほどある環境だといちいちツールとか入れるよりも、RLoginの方でスクリプトを走らせた方が手っ取り早いので面倒がない。

ちなみに最初の頃に配列は
users[] = "user01"
users[] = "user02"
users[] = "user03"

と書いていたんだけど、こっちの方が面倒なので上の方で書いた方がいいし、この書き方で書くときは後で付け加えたくなった時なんだろうなと思ったり。

コメント(2) 
共通テーマ:パソコン・インターネット

OpenSSLのコマンドで有効な暗号スイートを確認。 [Linux]

SSL/TLSのどの暗号スイートが有効か調べたかったんだけど、社内のシステムにつき
https://www.ssllabs.com/ssltest/index.html
のような外部サイトがつなげない。

そういう時にopensslコマンドを使えばいいんだけど、網羅的に使おうとすると面倒で…

https://qiita.com/ionis_h/items/277430a8807ee09c8b46

ここではRubyスクリプトを提示しているんだけど、Ruby入れるのがしんどいのでシェルスクリプトでやってみた。全然opensslコマンドを編集していないので冗長すぎるけど、必要ならばGrepとかしてほしい。

https://github.com/miffy/ssl_ciphers.sh/blob/main/ssl_ciphers.sh

#!/bin/bash

HOST="localhost:443"
echo $HOST
LF=$'\n'

# 暗号スイートを列挙し配列の中に入れる
OLD_IFS=$IFS
IFS=:
CIPHER_ARR=(`openssl ciphers`)
IFS=$OLD_IFS

# openssl s_clientコマンドで各暗号スイートの確認
for (( i=0; i < ${#CIPHER_ARR[@]}; i++ ))
do
    echo "<<< "${CIPHER_ARR[i]}" >>>"$LF
    openssl s_client -connect ${HOST} -cipher ${CIPHER_ARR[i]} < /dev/null
    echo $LF
done


どこから取ってきたのか忘れたけど、ワンライナーでもそこそこできる。

$ openssl ciphers -v | awk '{print "s_client -connect localhost:443 -cipher " $1}' | xargs -L 1 openssl 2> /dev/null | grep "Cipher is" | grep -v "NONE"


こんな感じなんだけど、つなげない暗号スイートの名前が出てこないので一覧にはできない。ただgrepしているところがピンポイントなので、かなり簡潔な物にはなる。使える暗号スイートを調べるだけならこれでOK。

というかTLS使うのまんどう臭い。でも、最近はGoogleのページ評価の関係でHTTPSを使うのがデフォルトになっているので、使わないわけにはいかなくなってきてはいる。

コメント(0) 
共通テーマ:パソコン・インターネット