家に古いバッファローのルータWHR-G301Nが転がっていたので、OpenWrtを入れてみましたので、その時の手順をここにメモっておきます。作業に使用した環境は以下の通りです。★無効化しておかないとタイミング有無に関係なくファームウェア転送に失敗しました。私はこれでハマったのでご注意ください。PCを直接つなぐと、ルータ電源投入時にリンクアップに時間がかかってしまい、ファームウェア転送のタイミングがシビアになるらしいので、L2スイッチを間に挟みました。(こちらからwhr-g301n-squashfs-tftp.binをダウンロード)2022年5月現在、OpenWrtはもっと新しいバージョンがリリースされていますが、本ルータはフラッシュが4MiBしかなく、インストールできません。19.xxのバージョンも入れてみましたが、ルータの設定を変更しても保存されない事象が発生してしまったため、最終的に17.01.2に落ち着きました。既存ファームウェアのバックアップ元のファームウェアに戻したい時のことを考えて、ファームウェアをバックアップしました。記述を参考にしました。家に放置していたルータで、どんな設定かもわからなかったので、まずはルータを初期化しました。リセット方法はバッファローの公式YouTube動画を参考にしました。底面にリセットスイッチがあるのですが、縦置き用の台を本体に取り付けてると見えないので外しましょう。私は力ずくで引っ張ると外れましたが、場合によっては爪が折れる可能性もあるので、ご注意ください。後は動画の通り、電源が入ってる状態で底面のリセットボタンをDIAGランプが点滅するまで長押しました。その後DIAGランプは点灯→消灯すると完了です。次に、ルーターとPCを繋ぎます。(私の場合は192.168.11.2)が付与されました。コマンドプロンプトを管理者として実行し、ipconfigを実行した結果の例です。この時点では、管理者として実行する必要はありませんが、後ほどのarpテーブルの操作で管理者権限が必要なので、忘れないようにこの時点で管理者として実行しました。1"といった表示になっていると思います。このアダプター名は後で使うので、記憶しておきましょう。http://192.168.11.1にブラウザからアクセスできることを確認します。IDはroot、パスワードは空欄でログインできます。次にルーターのデバッグモードに入ります。IDはbufpy、パスワードはotdpopyです。ルーターを初期化していない場合は、192.168.11.1はルーターのIPに読み替えてください。ルーターにパスワードを設定している場合、デバッグモートのパスワードは、otdpopy+管理者パスワードになります。以下のような画面が表示されるので、telnetdをクリック後、"start"ボタンを押します。startボタンを押すとブラウザの画面は、通常のルーターの管理画面に戻ります。Windowsのコマンドプロンプトからtelnetで192.168.11.1に接続します。telnetコマンドがインストールされていない場合は、コントロールパネルのプログラムと機能よりインストールしておきましょう。commands.#パーティションを確認します。"firmware"各パーティションをddコマンドを使ってダンプします。手順でバックアップしていきます。書き込み可能なディレクトリに移動します。/tmpmtd0をmtd0.ddというファイル名でダンプします。outダンプしたファイルをブラウザを使ってダウンロードします。アカウントは先程と同じく、IDがbufpy、パスワードはotdpopyです。mtd0.ddmtd1~6までを同様の手順でバックアップします。(手順割愛)次に、ルーターのLAN側インターフェスのMACアドレスを確認します。以下はAA:AA:AA:AA:AA:AAと表記していますが、もちろんルーターによって値は変わりますので適宜読み替えてください。ルータ側面に貼られているシールのSSIDの値がこのMACアドレスになっているようなので、そこから判断しても構いません。MiB)tftpでファームウェアインストールできるように、accept_open_rt_fmtを1に設定します。1telnetでの作業は終わりです。exitで抜けましょう。exitホストとの接続が切断されました。OpenWrtのインストールいざOpenWrtのインストールです。作業はC:\openwrtフォルダで実施していきますので、なければ作っておいてください。ダウンロードしておきます。Wifiでインターネットに繋いでて、LANケーブルでルーターに接続している場合、有線側の優先度が高くなるため、インターネットアクセスがエラーになります。ファームウェアをダウンロードしていない場合は、一旦LANケーブルを抜いてみてください。バイトの空き領域ルーターのMACアドレス(AA:AA:AA:AA:AA:AA)を、192.168.11.1でWindowsのARPテーブルに登録します。区切る必要があるので注意。MACアドレスとアダプタ名(ethernet)は適宜読み替えてください。AA-AA-AA-AA-AA-AAARPテーブルに登録されたことを確認します。★ここが静的になっていること~略~コントロールパネルからネットワークアダプタの設定を開き、PCのIPアドレスを192.168.11.2/255.255.255.0に固定します。Windowsセキュリティを開いて、使用しているネットワークのファイアウォールを無効化します。これで準備は完了です。コマンドプロンプトに以下のコマンドを打ち込んでおきます。コマンドがインストールされていない場合は、telnetコマンド同様にコントロールパネルのプログラムと機能よりインストールしておきましょう。C:\openwrt\lede-17.01.2-ar71xx-generic-whr-g301n-squashfs-tftp.binルータの電源を一旦抜き、再度挿した後、5~8秒後ぐらいに上記コマンドを実行します。電源投入後、L2スイッチのランプがリンクアップした後、一瞬消えます。私はそのタイミングで実行すると成功しました。以下の通り「転送を正常に完了しました」が表示されれば成功です。DIAGの赤いLEDが点滅後、緑の点滅に変わり、点灯に変われば書き込み完了です。バイト/秒もし転送が正常に完了したのに、バッファローの管理画面が表示されてしまう場合は、前述のaccept_open_rt_fmtを1に設定し忘れていないか確認しましょう。後始末とOpenWrtへのログインARPテーブルに登録したルーターのMACアドレスは削除します。192.168.11.1OKファイアウォールも必要に応じて、有効に戻しておきましょう。自動に戻しておきます。これで、OpenWrtのデフォルトのネットワークセグメントのIPがDHCPで自動でPCに割り振られるはずです。ブラウザでhttp://192.168.1.1にアクセスして、OpenWrtの画面が表示されることを確認して作業完了です。デフォルトではrootにパスワードは設定されていません。ログイン後の画面例も載せておきます。(CentOS8)からは、Dockerが同梱されておらず、代わりにPodmanが提供されています。PodmanはDockerのようにデーモンがおらず、機能もシンプルです。ここでは、Podmanで起動したコンテナのログの保存方法について紹介します。コマンドで起動したコンテナのログは、通常はpodmanの管理領域に保存され、コンテナを削除すると削除されてしまいます。これだと、実際の運用では古いログが参照できなくて困ってしまいます。これを避けるには、ログドライバーをコンテナ起動時に指定します。いうオプションを付けると、コンテナのログがjournaldに出力されるようになります。出力されたログは、デフォルトでrsyslogを経由して/var/log/messagesに保存されるため、これによりコンテナのログを永続化することができるようになります。時に毎回付与する必要がありそうです。このメタデータが付与されませんでした。この不具合は、GitHubのこちらのIssueで修正されたようなので、そのうち正常に本メタデータも保存されるようになりそうです。SSH鍵認証使えばパスワードなしでログインできるって?その通りなんですが、ログイン先の環境を勝手にいじれなくてSSH公開鍵を置けない状況だったりすることもあるんです。いう場合の対処方法はいくつかあるんですが、今回はexpectコマンド使って自動化する方法を紹介します。実行環境にexpectコマンドが入っていれば以下のようなスクリプトを書くだけです。"hogehoge\n"interact上記の場合、ログインユーザがuser、サーバが192.168.0.1、パスワードがhogehogeの場合のスクリプトです。