パソコンが壊れた高校校歌斉唱

春も近づいてきたのでやたら寒いですね。

激しい温度変化のせいでパソコンがよく壊れる時期がやってまいりました。とてもつらい。今日も1台ぶっこわれて半泣きでござる。

Windows 10/11をクリーンインストールする時のメモ

今日は自分用のメモです。忘れがちなので。

ぶっ壊れたPCを修理している時に、いつも忘れるやつのメモ。

Windowsのシリアルとかどうするの

メーカー製PC(Lenovo,HP,DellとかのBTO含む)にはUEFIにシリアル相当の情報がすでに書き込まれているから気にしなくていい。

クリーンインストールしても、そもそもシリアル聞いてくる画面が出ずに最後まで行ってしまう。

Windows 11の境界線

  • Ryzenの2世代目以降
  • Coreの8世代目以降

残りのごちゃごちゃめんどいやつは、だいたい上記の条件を満たしたPCにもれなくついてくるから気にしなくてよい。

TPMだけはBIOS/UEFI設定が要るかもしれない。CPU組み込みのTPM機能は、めんどくさいことに名前がTPMではない場合がある。以下参照。

電池を交換しろ

BIOS/UEFIのパラメータ保存用に、だいたいCR2032のボタン電池が入っている。

せっかくフタを開けたのだからさっさと何も考えず交換しろ高校校歌斉唱

クリーンインストールする前にパーティションを切るやつ

SSDないまどきは、4Kセクタは考えなくて良いけど、いまどきなんも考えなくてもSSDでさえTB単位で、容量が有り余ってるので、UEFIパーティションは大きめに切っている(260MB)

solomon-review.net

Windows 10/11のブート可能USBメモリを作るやつ

インストールメディア作成ツールから作れる。

MSアカウントを作るのをスキップする(Homeのみ)

ネットワークに接続しましょう、の画面まで進めて(進めなくてもいけるかも)

Shift-F10

して

cd OOBE
BypassNRO
あるいは
OOBE\BypassNRO

要件チェックを飛ばしてWindows 11にするやつ

レジストリ

HKEY_LOCAL_MACHINE\SYSTEM\Setup\MoSetup

DWORD AllowUpgradesWithUnsupportedTPMOrCPU = 1

終わったらWindows 11のメディアを別に作成して、そこからセットアップ(アップグレードツールではだめ)

注:

  • せめてTPM 2.0はついてるマシンにしよう。
  • MBRでセットアップされてるマシンとかもう捨ててほしい(GPT/UEFIにして)
  • 目安はCoreの6-7世代ぐらい。それより前のやつはさすがにそろそろ捨てて…

自動ログイン

そもそも自動ログインすべきではないというお題目はさておき、現実問題としてどうにかしないといけない場合に。

レジストリ

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device

からの

DWORD DevicePasswordLessBuildVersion = 0 (元は2)

してからファイル名実行で

conrol userpasswords2

ドライバの更新

インストール後の追加用メモ

今日の写真

今日の写真は、岩手の貨物専業鉄道の線路近くで撮った、夜の赤信号です。

確か赤信号がどうこういう企画のタイトル用に提供した覚えがあるなあ。

岩手開発鉄道 日頃市線 岩手石橋駅 場内信号機

宅内の乱 (2024)

昨日は桃の節句(ひなまつり)でした。
正直ひな人形なんてもう何年も見てないので、いまいちその感覚がなかったんですけど。

あかりをつけましょ 爆弾に~♪

なんて歌ってたアホウには縁遠い話ですね、ハイ。

自宅内のLANをできるだけ安く強化しよう

さて、インターネット接続はもちろん、宅内にNASを置いてファイル置き場やバックアップしようとか考えはじめると、どうしても宅内ネットワークのパフォーマンスが気になりはじめます。

これを改善するために、宅内に光ファイバーを張り巡らせ、10Gbps光ネットワークを構築したという猛者まで居たりしますが、まあ全部交換するとゲーミングパソコン1台分ぐらいは確実に持っていかれるので、冗談じゃねえ!そんな予算あるか!ってなると思います。

なので、フツーの(1Gbps) LAN + お安いWiFi APなどの組み合わせで、なるべくコスパの良いネットワークを組むにはどうすればいいか、というのが、大多数のみなさんのお悩みポイントになってくるんじゃないでしょうか。

ルータの性能は大事

そんな制約の中で、各種ネットワーク機器のうち、一番性能にこだわりお金をかけるところはどこでしょう。私はルータだと思ってます。なぜか。

WiFi APやら有線ハブやらは、すでにパケットを処理するための専用のチップを内蔵しており、なるべくパケットの中継でロスがないように十分最適化されている場合が多いのですが、ルータの内部でやっているあれやこれや、NATとかファイアウォールとかDHCPとかDNSとかPPPoEとか、そういうのは多少のアクセラレーション手法はあるものの、基本的に汎用のCPU処理になります。

つまり、これだけはそれなりにお高い機器で性能でぶん殴る脳筋メソッドしか解法がないわけです。

とはいえ、ここでクソ高い業務用ルータとか買ってられんわ!とか思うのが普通ですが、そこで目をつけるのがプロバイダのルータレンタルサービスです。

まあ、中には市販品をレンタルしてお茶を濁している会社もそれなりにあるらしいんですけど、自社サービスのパフォーマンスをアピールするために、ガチ業務用でほぼワイヤースピード(≒1Gbps、あるいは契約した速度)のルーティング性能があるヤバいやつを月ン百円とかでむちゃくちゃ安く貸してくれるところも結構あります。

なので、市販品のルータ買ってつながなきゃ…と考える前に、あなたのプロバイダがどんなルータを貸し出しているか、一度確かめてみてはいかがでしょうか。

逸般の誤家庭は知りませんが、ふつうは光ケーブルなり何なりを引き込んで、その先にONUをくっつけて、ONUのLANポートからルータにつないで、ルータのLANポートにNASやプリンタをつないで、ルータ内蔵の無線機能を設定して終わり、なところが多数でしょうし、ネットワーク機器に一切投資せずに、高速なネットワークを構築できるかもしれませんよ。

ちなみに、私はeo光のレンタルルータサービスを活用しています(ステマ
オプテージさんから1銭ももらっていないのに、わざわざアピールしているのはなぜか、察していただければ幸いです。

eonet.jp

今日の写真

今日の写真は、妙見山にあった「シグナス森林鉄道」です。

なぜか急こう配を登るためのラックレールまである、鉄道会社が全力で遊覧鉄道作ったらヤバくなりましたという変態物件だったのですが、すでに廃止されてしまいました。今はもうケーブルカーすらなくなったみたいですけど…

シグナス森林鉄道の機関車とラックレール

unboundでDNSを使った自前広告フィルタを実装する

なんか最近やたらと広告の表示がでかくなってきました。
全面にどーんと表示したり、サイトの5割ぐらいが広告だったりします。

無料閲覧できる記事のサイトの裏では、サーバ維持と記事を書く人の給料のため(あるいは個人の収益のため)に、たくさんお金が必要であることは言うまでもないとは思いますが、サイトの閲覧に支障が出るほどのコレはアカンやろ、程度の問題を過ぎてしまってるやろ、なんて思います。

とはいえ、いちいち自分の管制下のスマホとPCに全部広告ブロッカー入れるとかやってられないし、広告ブロックつきの公開DNSサービスはいまいち応答が遅いし…と悩んでいたので、ならば自分で広告ブロックつきキャッシュDNSサーバを立ててみようと試してみたメモを置いておきます。そう、なければ作れば良いのだ。

用意するもの

  • どこのご家庭にでもあるFreeBSD😈サーバ (必須)
    あなたは当然FreeBSDを使っていると思いますし、各家庭への普及率は300%を超えると思いますが、たいへん遺憾ではありますが、万が一そうでなければ、unboundとpythonが動く環境であれば問題ありません。
    LInux🐧サーバとかならまあいいでしょう。
  • どこのご家庭でも契約しているChatGPT (オプション)
    あなたは当然ChatGPTを使って…普及率は300%…(以下略)
    ぶっちゃけコードを書くのがめんどくさいので丸投げしましょう。
    もしかしたら、Gemini Advancedとかでもいいかもしれません。

作り方

とりあえずunboundをインストールする

DNSサーバといえばなんでしょう。
とりあえずbind!って答えた人は容赦なくインターネット老人会送りです。

なんかいまどきはローカルDNSキャッシュサーバに特化した、もっといい実装があるとかないとかいう噂も聞きますが、とりあえずみんなだいたい使ってるunboundを今回は採用します。

pkg install python312
pkg install unbound (FreeBSD)

とか

sudo apt install python3
sudo apt install unbound (Debian/Ubuntu)

とかやるといいと思います。

ブロック用定義ファイルを出力する

AdGuard開発チームが、AdGuard DNS用のブロックリストを公開しているので、ありがたく利用させてもらいます。

ただ、filter.txtは独自形式になっているので、

||hogehoge.com

こういうのを、unboundが理解できるように、

local-zone: "hogehoge.com" redirect

local-data: "hogehoge.com A 0.0.0.0"

こんな感じに書き換えてやる必要があります。
参考:0.0.0.0は無効なIPなので、これで「指定のドメイン(ゾーン)の名前引きをすると無効な応答を返す」という指示になります。

めんどくさいですね。こういうことはChatGPTに丸投げして、変換スクリプトを書いてもらいましょう。

import urllib.request
import subprocess

def fetch_and_process_adguard_list(url, exclusion_words):
    with urllib.request.urlopen(url) as response:
        data = response.read().decode('utf-8')

    domains = set()
    for line in data.splitlines():
        if line.startswith("||"):
            domain = line[2:].split("^")[0]
            if not any(exclusion_word in domain for exclusion_word in exclusion_words):
                domains.add(domain)

    processed_lines = []
    for domain in domains:
        processed_lines.append(f"local-zone: \"{domain}\" redirect")
        processed_lines.append(f"local-data: \"{domain} A 0.0.0.0\"")

    return processed_lines

def main():
    url = "https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt"
    output_path = "/usr/local/etc/unbound/blocklist.conf"
    exclusion_words = [
        'amazonaws.com',
        'googlesyndication.com',
        'analytics.google.com',
        'google-analytics.com',
        'googleanalytics.com',
        'posthog',
        ]

    processed_data = fetch_and_process_adguard_list(url, exclusion_words)

    with open(output_path, "w") as file:
        file.write("\n".join(processed_data))

    subprocess.run(["/usr/local/sbin/unbound-control", "reload"])

if __name__ == "__main__":
    main()

いい感じで書いてもらえましたね!一番下のスクリプトを適当なところに "cron-blocklist.py" とかいう感じで保存して、cronで定期実行しましょう。

何?cronの設定方法がわからん?貴様モグリだな?
私もわからんので、これもChatGPTに聞きました。

毎日朝の4時半に上記のスクリプトをcronで実行するには、crontabファイルに適切なエントリを追加します。まず、コマンドラインで crontab -e を実行して、crontabファイルを編集します。次に、以下の行をファイルに追加します。

30 4 * * * /usr/bin/python3 /path/to/your/script.py

ここで /usr/bin/python3 はPythonの実行可能ファイルのパス(Pythonがインストールされている場所)です。これはシステムによって異なる場合があるので、正しいパスを使用してください。which python3 コマンドを実行することで、Pythonのパスを見つけることができます。

unboundの設定ファイルに追記する

注意:上のサンプルスクリプトでは、
/usr/local/etc/unbound/blocklist.conf
に変換済みのブロックリストが出力され、
/usr/local/sbin/unbound-control
にunbound-controlの実行ファイルが存在する前提になっています。

これはFreeBSDを前提としたパスなので、Linuxをお使いの方は適当に書き換えてください。ただし、
/etc/unbound/unbound.conf.d/
の中だと自動で読み込まれてしまってエラーになるんじゃないかと思うので、別の場所にしましょう。

次に、unbound.conf ( FreeBSDなら /usr/local/etc/unbound/unbound.conf ) を適当なエディタで開いて、

server:

と書いてある行を探して、それ以降に

include: "/usr/local/etc/unbound/blocklist.conf"

と書いて、ブロックリストを読み込むようにしてください。
(Linuxなら適当にパスを書き換えてください)

終わったらunboundを起動/再起動しましょう。

(初回起動)
sudo sysrc unbound_enable="YES"
sudo service unbound start

(再起動)
sudo service unbound restart

これでだいたいちゃんと動くと思います。たぶん。

あとがき

正直自分で作らなくでも

adguard-dns.io

上記のAdGuard DNSを設定すれば、同等の環境が得られます。

  • DNSの応答がキャッシュされている場合の応答がものすごく速い
  • 他社(AdGuard DNS)のサーバにDNSの名前引きパケットを飛ばさなくて良いから、混雑の影響やパケット往復時間のロスを削減できる

ぐらいが利点かなあ、なんて思います。
私が作ろうと思い立ったのはこの利点がほしいからですが、ぶっちゃけ普通の人類がミリ秒単位の遅延が感じ取れるわけがないので、気にしなくて良いです。

なので、ヤバい人類用とかヤバいAI用とかに活用していただければと思います。

以上、物好きが適当に作ってみたログということで、笑って許してくださいね!

3/27追記

例外設定にposthogを追加しないと、OpenAI APIの呼び出しがおかしくなるので、サンプルコードに追記しました。

えーてるねっと

Ethernetっていう言葉を見て「えーてるねっと」って最初読んじゃったり、頭の中で「イーサネット」だと分かっていても、どうしても「えーてる」と読んじゃったりすることはないですか。私はあります。

で、こんな読み方をして誰かに笑われてしまったら、実はエーテル」って読んでも問題ないし、語源は同じなんだぞ!って言い返しましょう。

以上、明日使えないムダ知識のコーナーでした。

オッサンのむかしばなし

というわけで今回もネットワークネタで、前回はOSI参照モデルのL2かL3のお話だったんですが、今回はレイヤ1、物理層のお話です。

これを見ている中で、Ethernetケーブルを自作したことある人いますか?
20年前ぐらいは「ケーブル自作できないインフラエンジニアはモグリ」と言われてたぐらいには、どこのご家庭にでも工具と導通テスターが常備されていたものです。今更作ったことない!なんて恥ずかしいこと言いませんよね?

当然大嘘ですが。

20年前はインフラエンジニアなんて言葉のくくりすらもありませんでしたしね。管理者が半泣きになりながらフリーアクセスのフロアをめくってケーブルを這わせるとか当たり前で、みんながレイヤ1込みのガチインフラエンジニア兼任でした。

ついでにいうと、8本のケーブル全部つながなくても、2対4線だけでいいとか(10Base-T/100Base-TX)言われるのが当たり前だったんですよ。今そんなことしたら施工不良ですけど。

とぐろを巻いたネットワークケーブルを片付けよう

さて、月日は流れて、ケーブル自作なんてありえない時代になりました。そのへんで売ってるやつを買う方が早いし、Cat.6以降とかは、かなり気を使わないといけないので自作しないほうがいいです。

…なんてことをいっても、長いケーブルを買いすぎてとぐろを巻いているのをどうにかしたいとか、電線管の中を通すのにコネクタがついたままだと困るとか、まったく自作ニーズがなくなったわけではない気がします。

で、このコネクタをつける作業、超めんどくさいです。専用工具が要るだの、電線をほぐしてきっちり順番揃えて入れないといけないだの、ほぐした長さが長すぎたら規格外になるだの、最後の圧着工程がイマイチだと接触不良になるだの、散々な目に遭います。

私は正直不器用なほうなので、従来からある工具セットだと、コネクタをつける作業の打率が非常に悪かったです。めっちゃ恥ずかしい。

…なんですが、先日こういうのを見つけました。

www2.panasonic.biz

簡単に結線できますとか書いてるけど、実はコツが要るんじゃろ?
…なんてことはなく、実際にやってみましたが、押し込む時ちゃんと奥までしっかり押すのを徹底すれば、ドン臭い私でも成功率100%でした。偉業!

今日の写真

今日は長崎の針尾送信所の配線ダクトです。
青空を背景にした、ツタの絡んだ配線ダクト、萌えますよね?

萌えますよね?(大事なことなので二度言いました)

針尾送信所 電信室の配線ダクト

 

マングース

風邪ひいてまんねん(治った)

なんかものすごく中途半端な風邪が流行ってるっぽいのでお気をつけください。
喉が痛いけど咳が出ないとか、中途半端に熱が出て中途半端に身体がだるいとか…なんやねんこれ。

ネットワーク機器を交換しよう

別にPC周辺機器屋さんのステマじゃないんですけど、昔から何度か直面した問題なので、改めて書いておこうかと。

EthernetハブやらWiFiルータ/APやら使ってますよね。まあハブまで要るぐらいの機器をぶら下げるような用途はそこまで多くないと思うんですけど、WiFi APぐらいは使ってると思います。

で、WiFi APはWiFiの規格が4だの5だの6だのと大きく売り文句として書かれていて、あー世代交代だなー高速になったんだなーって買い替えると思うんですけど、問題はそのへんに転がってるEthernetハブのほうです。

今はどこもかしこも普通にスイッチングハブだと思うのですが、これが問題で、中に積まれているチップの処理性能によっては、微妙にネットワーク接続にラグが生じたり、下手したらそこがボトルネックになって回線速度が出ないという問題まで起こります。

理由はそれほど難しくなくて、昔のスイッチングハブだと、内部の処理チップの性能でpps(1秒間に扱えるパケットの数)に限界があるし、一旦バッファに溜めて指定のポートに送信する仕組みなせいで、ショボ性能だと遅延も起きるというお話。

なので、そのへんに転がってるハブを漫然と使うのではなくて、時々見直してちゃんと買い替えましょう!

…なんか遅いなーと思ってたんだよ…(今日新しいハブに差し替えたらメチャ高速になって拍子抜けしたぽな)

今日のおにく

大洗のCook Fanの戦車カツです。説明不要!
Webサイトには何も書いてないけど、まだメニューに載ってるのかなあ。

プラウダ高校の旗つき

 

珈琲(ソフトウェア)はもういらない

あれだけめんどくさくて手を出していなかったWebのフロントエンド系にちょっぴり手を出し始めました。

いまだにテーブルレイアウトXHTML 1.1な化石HTMLを書いているSSP配布サイトがリニューアルされて、レスポンシブデザインばりばりになる日もきっと近い…!?

…めんどくさくてやらない気もしますけど。正直今のサイト、スマホで十分見られるし。

珈琲の野郎!

いうても普段はバックエンド側でだいたいごそごそしてるんですけど、今日もそんなサーバの中のお話。

みなさんJavaって覚えてますか。いやJavaScriptじゃなくてただのJavaです。

あなたとJAVA
今すぐダウンロー

っていうアレです。最近Webサイトは更新されてしまって、「ド」がはみ出した趣深いアレはもう見られなくなっちゃいましたけど。

うかどんでも全文検索エンジンのelasticsearchの基盤部分を担っているんですけど、こいつがまたリソース食いで困ってます。メモリもCPUもガバ食いします。昔リソースイーターすぎるとか愚痴っていたRuby on Railsなんかも、コイツと比べればかわいいもんです。

百歩譲ってまあビッグデータの類いやろし仕方ないやろーと思っていたら、今度は家で使っているNASがやたらと重い問題が出て、原因調査の結果MinimServerとそのランタイムであるJavaが重いということが判明し、さっさと捨てました。

もうやだ。珈琲はもういらない。

きょうのおにく

今日は津山ホルモンうどん(焼きうどん)です。

味噌系または醤油系の焼肉のたれめいた味+牛ホルモンというB級グルメの類いですが、昼飯に腹にたまるものをさくっと食いたいというのにマッチして割とよかった。

道の駅久米の里 津山ホルモンうどん (FA-X氏撮影)

デッドロックって怖いね

OpenSSLをビルドしたら、謎のデッドロックが発生して、その結果SSPが終了しないという頭の痛い現象が起こっております。これどうしよう。

もしかしたら、これを解決したら、今までの妙なバグのうちの一部が解消したらいいなあ。まあそんなに甘くはないでしょうけど。

リアルデッドロック

デッドロックはソフトウェアのバグに限った話ではありません。

ざっくりいうと倉庫番的なゲームやら箱入り娘パズルやらでの詰みパターンの数々が、全部デッドロックになります。あるいはもっとスケールを大きくして、鉄道でも起こったりします。

最近では、奈良線 六地蔵駅やら、川越線 指扇~南古谷間でも起こったりしています。

移動できるルートが限定されていて、かつ基本的に定められた進行方向にしか進めない、という場合には、だいたい何でも起こりうるので、旅客機の空港の誘導路上で管制ミスでお見合い、などの事象も起こりうると考えられます。

こうなってしまうと、現地に対応要員を派遣して、安全を確認しながら手前の駅まで後退する、などのイレギュラーな操作を必ず求められるので、めんどくさいんですよね…

論理が複雑すぎて人間は必ず見落とすのだから、自動化すべきである…といっても簡単にはいきません。

人間が作った装置も条件の見落としがあるし、今後AIがこういうお仕事をこなしたとしても、頻度は少なくなるものの、やっぱりトンデモな見落としをやらかすんじゃないでしょうかね。おお怖。

恵方巻

今日のメシテロコーナーは、節分にちなんで恵方巻です。
実は太いのは避けて鉄火巻だったりするんですけど、まあ巻寿司カテゴリだから…
皿を恵方に向けて、同じ方向を向いてガブり。ごちそうさまでした。

恵方巻