ローリングコンバットピッチなう!

AIとか仮想化とかペーパークラフトとか

Extroot化したOpenWrtを最新版にアップグレードする

[technology][openwrt]OpenWrt 15.05を18.06にアップグレード(Extroot込)

自宅でProxyサーバーとして使用しているOpenWrtマシン(Buffalo BHR-4GRV,1GbE有線ルーター)のアップグレードを計画中です。
現在はOpenWrt Chaos Calmer 15.05.1なのですがこれを現時点で最新安定版の18.06.2にアップグレードしたい。

理由はこのProxyサーバーにTCP BBRを組み込んでProxy→Wi-Fi接続スマフォの下り通信パフォーマンス/安定性が上がるか試してみたいというものです。
TCP BBRはgoogleが開発したTCP輻輳制御アルゴリズムLinux Kernel 4.9に組み込み可能です。実は混雑時にはあまり改善しないとか、Fairnessに問題があるとかとも言われていますが、Wi-Fiの様にパケットドロップが多い場合は効果があるらしいので、それを試してみたいと。

現在Proxyサーバーとして使用している15.05のKernelは3.18.23なのでそのままでは使えません。

基本的には
https://downloads.openwrt.org/releases/
から使う機種に対応したupgrade用バイナリイメージ(ファイル名末尾がsquashfs-sysupgrade.binで終わるもの)をダウンロードしてきて、sysupgradeコマンドを叩くか、LuCIからファーム更新を実行すれば良いのですが、USBメモリを使ってrootファイルシステムを拡張している(Extroot)と、その部分にインストールされたパッケージ等が引き継がれないため、Extrootの再作成を含めた手順が必要なので、あまり纏まっているところがなく、複数の情報を見ながらProxyサーバーとは別のOpenWrtマシン(こちらもExtroot化済み)でリハーサルを実施しました。

以下、手順です。

  1. 各種バックアップ実行

    • opkgでインストールしたパッケージリストを取得

      ググるといくつか方法が出てくるのですが、一番簡単そうな下記の方法でリストを作りました。
      アップグレードをExtroot再作成後に、リスト見ながら必要なパッケージを再インストールするためのメモになります。

      opkg list-installed | cut -f 1 -d ' ' > /root/installed_packages.txt

    • /etc配下のバックアップ

      LuCIからアップグレードする場合、一応/etc配下の設定ファイルは維持したままアップグレード出来るのですが(ただし、Extrootはアンマウントされる)、念の為、基本的な設定ファイルをtar ballに固めておきます。自分は/etc/config,/etc/init.d配下と、Proxyサーバーとして使用しているPrivoxyのフィルター設定が入った/etc/privoxyをそれぞれ別のtar ballにしました。
    パッケージリストと/etc配下の設定ファイルを収めたtar ballは別マシンにscp等でリモートコピーしておきます。
  2. LuCIからアップグレード実施

    LuCI(Web設定UI)にログインし、「System」→「Backup/Flash Firmware」画面からアップグレード実行画面に入ります。ダウンロードしておいたxxxx-squashfs-sysupgrade.bin(xxxxは機種依存のファイル名)をImageとして指定、「Keep settings:」にチェックを入れてから、「Flash image」ボタンをクリック。これだけでファームウェア更新が始まります。後は、再起動するまでしばらく待ちます。
  3. 再起動したOpenWrtマシンに再ログインする

    成功していればIPアドレスssh有効化設定、rootパスワード等の設定は引き継がれているので、アップグレード前と同じ手順でログイン出来るはずです。ここではsshでログインし、CLIで作業を進めます。
  4. 一応/etc配下の状態を確認する

    自分が試した結果では/etc/configや/etc/init.d配下はそのまま残っていました。Privoxy用フィルタ設定が格納されている/etc/privoxy保全されていました。
  5. opkgでインストール済みパッケージを確認する

    こちらはデフォルトのインストール済みパッケージのみに戻っており、追加でインストールされていたパッケージは消失しています。
  6. Extroot化に必要なパッケージをインストールする

    # opkg update
    # opkg install block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk

  7. USBメモリ上にExt4ファイルシステムを再作成する

    下記の様にmkfsコマンドでファイルシステムを作成します。下記の例では/dev/sda1にしていますが、USBメモリのデバイスファイル名は事前に確認しておいて下さい。

    # mkfs.ext4 /dev/sda1
    mke2fs 1.44.1 (24-Mar-2018)
    /dev/sda1 contains a ext4 file system
    	last mounted on /tmp/extroot/overlay on Tue May 14 14:39:39 2019
    Proceed anyway? (y,N) y
    Creating filesystem with 1954560 4k blocks and 488640 inodes
    Filesystem UUID: f3349314-b97a-4705-812d-f7932b142390
    Superblock backups stored on blocks: 
    	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Creating journal (16384 blocks): 
    done
    Writing superblocks and filesystem accounting information: done 
    

  8. USBメモリ上のExt4ファイルシステムに、rootファイルシステムの中身をコピーする

    # mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt

  9. /etc/config/fstabを作成する

    次の手順で作成します。
    • 下記のコマンドを実行

      # block detect > /etc/config/fstab

    • /etc/config/fstabファイルを編集

      修正前:

      config 'global'
      	option	anon_swap	'0'
      	option	anon_mount	'0'
      	option	auto_swap	'1'
      	option	auto_mount	'1'
      	option	delay_root	'5'
      	option	check_fs	'0'
      
      config 'mount'
      	option	target	'/mnt/sda1'
      	option	uuid	'f3349314-b97a-4705-812d-f7932b142390'
      	option	enabled	'0'

      修正後:

      config 'global'
      	option	anon_swap	'0'
      	option	anon_mount	'0'
      	option	auto_swap	'1'
      	option	auto_mount	'1'
      	option	delay_root	'5'
      	option	check_fs	'0'
      
      config 'mount'
      	option	target	'/overlay'
      	option	uuid	'f3349314-b97a-4705-812d-f7932b142390'
      	option	enabled	'1'

      config 'mount'セクションのtargetを'/overlay'に変更、同じセクションのenabledを'1'に変更します。

  10. rebootコマンドでreboot実行、再起動を待ちます。
  11. reboot後、再ログイン、dfコマンドでrootfs及びoverlayfsのパーティションサイズが/dev/sda1と同じになっており容量が拡張されている事を確認します。

    # df
    Filesystem           1K-blocks      Used Available Use% Mounted on
    rootfs                15260592     83316  14379020   1% /
    /dev/root                 2304      2304         0 100% /rom
    tmpfs                    30532      3236     27296  11% /tmp
    /dev/sda1             15260592     83316  14379020   1% /overlay
    overlayfs:/overlay    15260592     83316  14379020   1% /
    tmpfs                      512         0       512   0% /dev

  12. 必要なパッケージを再インストール

    インストール後、必要な設定を行って下さい。Privoxyはアップグレード前のフィルター設定がそのまま残っていたので,opkgでインストール後にサービスの有効・無効の再設定するのみでした。

意外とトラブル事も無く、簡単にアップグレード出来ました。
opkg listで見るとkmod-tcp-bbrというBBRモジュールが追加されており、これもopkgでインストールしました。
まだTCP BBRのテストはしていません。

一度、このリハーサル機でTCP BBRのテストまでしてから本運用マシンのアップグレードをしたいと思います。

フェア・アンフェアと格差は別問題

[diary]昨日のエントリに対する補足

rc30-popo.hatenablog.com

ちょっと補足しておきますが、自分の立場は

  • 件の会社の社食の話はフェアかアンフェアを問われれば実はフェアだと思う
  • もちろん件の社食に会社の福利厚生費の類は一切投入されず、独立採算制であるなら、統一価格であるべき
  • 格差があるは事実でそれは是正される方が望ましいけど、件の会社を「アンフェア」だと責めても解決しない

というものです。

この話の元になったフミコフミオさんのエントリのブコメを見るとやっぱりというか「アンフェアだ」という意見が多いんですね。
自分と同じ様な視点でフェアだと主張されている方も散見はされるのですが。
b.hatena.ne.jp

自分はフェア・アンフェアというのは「一定のルール(法律や倫理)に基づき、主観によるバイアスを可能な限り避けて運用・判断されているか」だと思っています。
しかし上記ブコメ見る限り、

  • 格差がある事自体がアンフェア!!だと捉えている
  • 単純に表面的な事象だけで判断していて、社会や会社のルール・仕組みを知らない・勉強していない

人が多いのかな?と。

格差の是正という意味では、実は後者は大きな問題だと思っていて、あまり自己責任論を振り回したくは無いのだけど、社会の仕組みに関する不勉強が雇用主に付け込まれてブラックな労働環境を生む一端になっている気がします。
結局「無知が格差を拡大する」するし、国や企業に文句だけ言っていても改善の歩みが遅いので、各労働者がもっと様々な制度を勉強して理論武装し、それを共有していくべきだと思う。
まあ、制度や法律自体が割と意図的に「理解しずらく」作られている側面があるのですが、だからこそ、こういった問題に対して他人がなんとかしてくれるではなく、各自が学習し、単なる感情論ではない理論武装をしないといけないと思う。

最近は感情論が国の政治を動かす事も多くて、世界各国にポピュリズム政権が誕生しているのですが、米国とかお隣韓国とか見ても、格差と分断は悪化している様にしか見えません。

[diary]少しでも勉強した方が得

で、世の中には勉強嫌いな人も多くて、「難しい事は政治家が考えてよ」とかいう人も多い気がするのですが、現実問題として太古の昔から世の中の仕組みに疎い人は騙されたり、搾取されたやすかったりするので、少しでも勉強はした方が良いと思います。
昔は国や社会の仕組みについての情報そのものがあまり開示されていなかったり、開示されていてもアクセスするコストが高くて現実的で無かったり(例えば国会図書館に行けば閲覧可能とか...)したんですが、ネットの発達で行政機関等の情報開示も随分進んできたので少しでも勉強して、それを自分の行動に反映した方がお得です。とは言え、労働問題とかは実際に動くとなると個人には負担が重すぎたりしますが、税金とか年金とかの制度とかはちょっと勉強して、自分に適用出来る制度を上手く申請するとちょっとお得になったり。

近年は年末が近づくと「サラリーマンも確定申告した方がお得なケースがある」的な記事が良く出ていて、多分一番一般的なのは医療費控除とセルフメディケーション税制だと思いますが、医療費控除くらいなら国税庁のホームページからブラウザ+Excelがあれば自分で申告書を作成出来ます。本屋に並んでいる「確定申告のやり方」的な本すら買う必要ありません。(ExcelでじゃなくてLibre Officeとかでも大丈夫)
今年からスマフォでも申告出来るらしいですが、まだ申告出来るパターンが限られているので、PCは必須な気がします。(ここでPC使えない人が最近多い問題とかもあるのですが、スマフォ・タブレットオンリーじゃなくてPCの使い方も知ってる方がやっぱりお得だったりするわけです)

医療費控除は単身者にはあまり効かないケースが多いと思いますが、家族3人くらいで暮らしているなんだかんだ年間では結構医療費使っていたり、更にある程度年取ると、医者に行く回数増えるので年間10万以上医療費使っているかチェックする事をおすすめします。
そのへんのドラッグストアで買った風邪薬とか鼻炎薬とかも控除対象になります。