メモのページ - チラシの裏メモ 3枚目

気になった事を黙々とメモし続ける

今更ながらMacBook Air 11-inch Mid2011を購入

MacBook Air M1の販売開始から半月以上が経ち、YouTubeではM1なMacBookのレビューで溢れかえっている中、中古でMacBook Air 11-inch Mid2011をひっそりと購入。
10年もの前の機種が果たしてサブ機として使用に耐えられる物であるか、使用開始後1週間が経つところで使用感を以下にまとめてみた。
販売開始から10年経った今でも、MacBook Air 2011は現役機として充分に使える物なのだろうか?



MacBook Air 11-inch Mid2011のスペック概要
・CPU:Intel Core i7 1.8GHz デュアルコア
・RAM:4GB
・内部ストレージ:128GB SSD
・OS:macOS High Sierra 10.13.6
・モニターのサイズ:11.6インチ
・モニターの解像度:1366 x 768(WSGA)
・バッテリー:35Whリチウムポリマー
・重量:1.08 kg
・寸法:19.2 x 30.0 x 1.7 cm
・USB2.0ポート x2、Thunderbolt x1、MagSafe、ヘッドフォン x1、マイクロフォン x1
・Wi-Fi 2.4GHzと5.0GHz
・Bluetooth 4.0
・WiFi:IEEE 802.11a/b/g
・キーボード:US



インストールしたアプリ
・Google Chrome:Webブラウザ
・VirtualBox:PC上に仮想環境を構築するツール
・Docker for Mac:Mac向けのDocker環境
・iTerm2:macOS用の端末エミュレータ
・Wireshark:パケットキャプチャ
・Cyberduck:FTP/SFTPクライアントツール
・DiffMerge:複数のファイルの比較やマージの為のツール
・Evernote:オンラインのメモ帳、文書管理ツール
・SubnetCalc:IPアドレス計算機
・Sublime Text:テキストエディタ
・homebrew:macOS用のパッケージ管理ツール
・Cisco ASDM-IDM:Cisco ASA用のGUI管理ツール
・OnyX:Macのメンテナンスツール
・Ansible:構成管理ツール



購入価格
・17,600円
・Yahoo! オークションにて中古で購入
・MacBook Air 11インチ用のPCケースはAmazonで購入
購入手続き後2日で家に到着した。札幌から発送、しかも土日を挟んでのこの早さ!
開包し箱を開けると、紙に包まれた筐体が現れた。そしてMacBook Airを手に持ってみた。

う、薄い...

第一印象は筐体の薄さ。メイン機であるHP ProBook 5220mの3分の1以下ではないか。この薄い筐体の中に、マザーボードやバッテリーやSSD等をよく詰め込めたものだ。
電源投入後、ログインパスワードが求められた為、以下のリンク先の内容に従いパスワードをリセットした。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11222786351

OSはHigh Sierra(10.13.6)にアップグレードされていた。
商品のページでは擦り傷や汚れ等使用感有りといった内容の記載が有ったものの、到着したMacBook Airはほぼ無傷でキーボードの使用感は無し、モニタには新品と思われる保護フィルタが貼られているという超美品な状態で送られてきた。勿論、箱有りで説明書とアップルロゴのステッカー付き。何という神対応。
出品者様に感謝申し上げます。大切に使っていきます。





使用目的
鑑賞用。
仮想アプライアンスの動作環境。
シェルの練習台。

メイン機としての導入は想定していない為、ZoomやWebEX等のようなWeb会議ツールやMicrosoft Officeは導入していない。
スケジュールやタスクの管理は既にスマホでやっている為、ここで改めてMacBook Airにインストールする予定は無い。
以下のレビューは使用目的に沿った内容となっており、ゲームや動画・画像編集に関しては触れていない。


用途および使用感
① 鑑賞用
ここで言う鑑賞とは動画鑑賞の事ではなく、MacBook Airの筐体の鑑賞の事を指す。
所有するAppleの製品はPowerBook 1400、PowerBook G3(Pismo)、MacBook(Late2007)を経て4台目となるが、今所有しているWindows機も含めて比較しても、MacBook Airは非の打ち所が無い、他を圧倒する美しいデザイン。しかも驚く程の薄さ。アルミニウムな筐体は触り心地も文句無し。
手に取って暫くの間眺めていたくなるコンピュータなんて初めてである。

②仮想アプライアンスの動作環境
メイン機であるHP ProBook 5220mではVirtualBoxという仮想環境ツールを使用し、仮想アプライアンス(ソフトウェアルータやソフトウェアスイッチ等)をデプロイしMacBook Airの中に仮想的な小さなデータセンタを構築して遊んでいる。
ではMacBook Air Mid2011でも同じような事は出来るのか?
残念な事にRAMが4GBしか無い為、同時に稼働可能な仮想アプライアンスの数が限られる。快適な動作が可能な仮想アプライアンスの台数はVyOSやArista vEOSの場合は2〜3台、Cisco CSR1000VやCisco ASAvの場合は1台といった感じで、Windows機でやっていたようなLeaf/Spineな極小データセンタネットワークの構築は非常に厳しい。しかし、家庭内LANの他のルータやスイッチとピアを組んだり、あのコマンド何だっけ?な時の確認用環境としては充分に使える。
仮想アプライアンスをVirtualBoxにデプロイする際やデプロイ後の仮想アプライアンスの動作は、モタつく事無くサクサクと動く。

Docker for Macに仮想アプライアンスをデプロイすると、Arista cEOSは1台が精一杯。VyOSは2台まで...といった感じだろうか。

Windowsのアプリ「Named Pipe TCP Proxy」のような仮想シリアルコンソールの補助的なツールが無い為、デプロイ途中からVirtualBoxのウインドウ内で何も出力されなくなるタイプの仮想アプライアンス(例えばCisco IOS XRv等)を使用する際は、Windows機のVirtualBoxにてデプロイしsshログイン用の設定を済ませてからMacBook Airに移す必要が有る。
※MacBook Air側で/dev/ttySほげほげをいじれば何とかなりそうだが検証する気力無し。

サーバやルータ、スイッチ等の構成管理ツールであるAnsibleは、homebrewだとHigh Sierra対応バージョンはインストール出来なかった為にpipでインストール。
AnsibleのインストールからAnsibleのPlaybookを使ってVyOSのshow versionを叩いて正常に返ってくるまでの間は、試行錯誤の連続だった。
この時はさすがにCatalinaが入った中古機にすれば良かったと思った。

③シェルの練習台。
macOSはUNIXライクなOSではなく、POSIX準拠な「公式な」UNUX。しかもシェルが実行出来る。
VirtualBoxにLinuxやFreeBSD等UNIXライクなOSを入れて立ち上げる必要が無い為、iTerm2というターミナルアプリをインストールし、見た目をWindows環境(Tera Term)に極力寄せて、ぽちぽちとシェル(bash)を実行して遊んでいる。
wgetや他のコマンドのインストールの為に、homebrewを導入済み。

④その他
バッテリーの持ち具合。VirtualBoxで仮想アプライアンスを動作させている時は1時間ちょっと、YouTubeで動画を視聴している時は2時間前後といった感じで、中古品であるにも関わらず思っていたよりは長く使用出来るが、公称値の半分程度しかもたない為、年内にはApple Storeに持ち込んでバッテリー交換対応をして貰おうかと思っている。

YouTubeで1時間以上動画を視聴し続けるとFANが動作し出す。
解説動画を見ながらの検証や勉強、例えばYouTubeや通信機器ベンダのサイト内に有る解説動画を再生しながらVirtualBoxを動作させるとFANは高速で回りっぱなしな状態となり、非力な部分が露わとなってくる。よってタブレット端末やメイン機で解説動画を再生させ、MacBook AirでVirtualBoxを動作させる事にした。

薄い筐体であるにも関わらず、キーボードのキーストロークは思っていた以上に深く、しっかりとした打ち応え。
メインで使用しているHP ProBook 5220mのパチパチとした煩さや、MacBook Late2007のような頼りなさげな感触は全く無く、打ち応えに関しては気に入っている。
キーボードでイケてないと思う点は小さな矢印キー。強く叩くとどこかに飛んでいきそうな程頼りない。

自分の環境では試していないが、下記リンク先のオーケーマック様の記事によると、MS Office 2016のインストールは可能だが動作は緩慢なようだ。
業務で使用するようなファイルサイズが大きいWordやExcelファイルの編集には不向きな模様。
ExcelやWordのファイルの閲覧やちょっとした編集程度であれば、Office365で充分な気がする。
http://okaymac.com/2019/12/17/macbook-air-mid-11-catalina/



総評
デザインや質感や軽さは完璧。これらに関しては他に何も言う事は無し。
読書用や動画閲覧用であれば、もっと小さくて軽いiPadや先日購入したAndroidタブレット端末KingPad SA8で充分だろう。
自分の環境では、シェルの練習用やVirtualBox環境下の仮想アプライアンスのちょっとした検証や勉強用としての使用であれば、MacBook Air Mid2011はまだ使えると思った。
2021年におけるMacBook Air Mid2011の優位な点は、大きな負荷を与えないような処理や作業をする為の物であれば、持ち運びが容易なサブマシンとしては非常にお手頃な価格で入手が可能なところだろうか。



上記画像内のMacBook Airにて立ち上がっているアプリは、VirtualBoxとiTerm2とSublime Text。
VirtualBoxのゲストOSとして稼働しているArista vEOSは、家庭内LANにて稼働しているJuniper SRX100との間でeBGPピアを張っている。


https://support.apple.com/kb/SP631?locale=ja_JP MacBook Air (11-inch, Mid 2011) - 技術仕様
https://www.amazon.co.jp/dp/B00CD8ADKO/ ケース
https://www.virtualbox.org/ Oracle VirtualBox
https://qiita.com/whiteraccoon/items/108840e06f31a38b0f44 macOS High SierraにDockerをインストールする。【旧バージョン】

https://www.arista.com/en/ Arista
https://vyos.io/ Open source router and firewall platform
https://azure.github.io/SONiC/ SONiC Software for Open Networking in the Cloud
https://www.nvidia.com/en-us/networking/ethernet-switching/ Ethernet Switching Solutions for Data Center

SONiCの解説動画

SONiCの学習用動画に関するメモ。
CiscoやJuniperの通信機器や通信プロトコルの解説動画が公式非公式問わず沢山有るのだが、ひょっとしたらSONiCも有るかもしれないという事で、Youtubeにて探したら数は少ないものの有った。
SONiCだけで検索するとセガの某キャラクターで埋め尽くされて非常に見つけ辛かったが、SONiC BGP等通信プロトコル名を足して検索すると某キャラクターに混ざって見つける事が出来た。

いずれの動画もLove2Networkというチャンネルによる提供。
一番最初の動画、What is SONiC (NOS)の冒頭にて、セガの某キャラクターの説明ではないと話している(笑

解説は英語であるが、日本語の字幕を表示させる事が出来る。

①動画のウインドウ内右下にある「字幕 (c)」のアイコンをクリックし字幕を有効にする。
字幕が有効になると、アイコンの下側に赤い線が表示される。
②この時点では字幕は英語になっている。
字幕を日本語表示にしたい場合は、字幕(c)アイコンの右側にある設定アイコンをクリック
字幕→自動翻訳の順にクリックし、各国語の一番下側にある日本語をクリックする。
③字幕が日本語の表示になる。


What is SONiC (NOS)
https://www.youtube.com/watch?v=YQSkwuJuHQk

SONiC - Configuring BGP based Underlays
https://www.youtube.com/watch?v=cs8leFvv4Zw

SONiC - How to Configure OSPF
https://www.youtube.com/watch?v=UpbOA_v13V4

SONiC - How to Configure MCLAG
https://www.youtube.com/watch?v=RHsyTFkfSLY

SONiC - Configuring VXLAN EVPN
https://www.youtube.com/watch?v=Jwl_ctrVAFY

SONiC - Configuring LVTEP with VXLAN EVPN
https://www.youtube.com/watch?v=eo7Glsv0FWs

Why and How to Configure Link State Tracking
https://www.youtube.com/watch?v=NOs98Dh3o8Y

Configuring SONiC Maintenance Mode
https://www.youtube.com/watch?v=6PRUliBp7pE


BGP unnumberedが実装される202106版を待つ間SONiCから離れていたが、もう一度勉強しなおそうと思う。

残念な事に、Cumulus Linux(Cumulus VX)はNVIDIA傘下になってしばらく経ったらダウンロード出来なくなっていた。
最新版のCumulus Linuxの入手が出来なくなった為、ホワイトボックススイッチのNOSの学習に関しては今後はSONiCで進めていくだろう。

Love2Network, thank you!


注意事項
動画内では/etc/sonic/config_db.jsonファイルの編集やvtyshによる設定ではなく、sonic-cliを使用して設定している。
当記事の投稿時点での最新バージョン202012.115-8e8a26fd4でもsonic-cliでCisco IOSライクなコマンドを実行可能だが、動画にて紹介されているBGPやOSPF等の設定コマンドや、show run等の確認コマンドは無し。

admin@sonic:~$ sonic-cli
sonic#
sonic#
  configure  Enter configuration mode
  exit       Exit from the CLI
  no         No commands under exec mode
  show       Show running system information
  system     System command

sonic#
sonic# configure terminal
sonic(config)#
sonic(config)#
  end        Exit to the exec Mode
  exit       Exit from current mode
  interface  Select an interface
  ip         Global IP configuration subcommands
  no         To delete / disable commands in config mode

sonic(config)#


動画内のSONiCのバージョンは何だろう...


参照先など
開発者および先達の皆さまに感謝。
https://azure.github.io/SONiC/ SONiC
https://github.com/Azure/SONiC/wiki SONiC Wiki
https://github.com/Azure/SONiC/wiki/Quick-Start Quick Start
https://github.com/Azure/SONiC/wiki/Configuration 設定例
https://github.com/Azure/sonic-utilities/blob/master/doc/Command-Reference.md コマンドリファレンス
https://github.com/Azure/SONiC/wiki/Sonic-Roadmap-Planning 開発ロードマップ
https://sonic-jenkins.westus2.cloudapp.azure.com/job/vs/ SONiCはここからダウンロード可能


https://qiita.com/advent-calendar/2020/sonic 設定例(QiitaのSONiC Advent Calendar 2020)
https://qiita.com/advent-calendar/2019/sonic 設定例(QiitaのSONiC Advent Calendar 2019)
https://debslink.hatenadiary.jp/entry/20210131/1612091391 VirtualBoxへの導入例
https://qiita.com/masru0714/items/1ef92db005a372ae5ea5 GNS3への導入例


https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
https://debslink.hatenadiary.jp/entry/20210214/1613279732 SONiCのWarm Bootの動作確認
https://debslink.hatenadiary.jp/entry/20210320/1616230057 Cumulus LinuxとSONiCの設定ファイル

VASTKING KingPad SA8の使用感

読書用兼Limbo PC Emulator用として活躍していたタブレット Nexus 7(2013)が落下により破損した為、後継機種としてVASTKINGのKingPad SA8を購入。
購入後約3週間経ち、アプリのインストールやカスタマイズが落ち着いてきたので、使用してきて感じた事をメモ。



KingPad SA8のスペック概要
・CPU:UNISOC SC9863A 1.6GHz オクタコア (Cortex A55)
・RAM:3GB
・内部ストレージ:32GB
・OS:Android OS 10.0
・モニターのサイズ:8インチ
・モニターの解像度:1920x1200 (フルHD)
・バッテリー:4000mAh
・重量:354g
・寸法:21.3x12.2x0.8 cm
・USB端子:TYPE-C
・カメラ:背面13MP、フロント5MP
・Wi-Fi 2.4GHzと5.0GHz
・Bluetooth 5.0
・Antutuベンチマーク:100,000点 (Googleの検索結果)



購入価格
・17,999円
・Amazonにて購入
・Amazonのカスタマーレビューに記載が有る、オマケやクーポンは無かった。



ついでに購入した物
https://www.amazon.co.jp/dp/B08T9NYCNQ/ SA8タブレット用 ガラススクリーンカバー
https://www.amazon.co.jp/dp/B07X9KPBC1/ ワイヤレスイヤホン Anker Soundcore Life P2
ワイヤレスイヤホンはKingPad SA8用に購入した訳ではなく購入タイミングが同じだっただけ。勿論、KingPad SA8とペアリングして使用している。



インストールしたAndroidアプリ
・Adobe Acrobat Reader:PDFビューア
・Limbo PC Emulator:VirtualBoxのようなツール
・Hacker's keyboard:QWERTYなソフトウェアキーボード
・VLC:動画再生ツール
・Simple File Manager:ファイルマネージャ
・WiFi Analyzer:Wi-Fiの電波状況の視覚化、Wi-Fi接続のツール
・Terminus:SSH/Telnetクライアント
・Net Analyzer:ネットワーク環境確認ツール
・Subnet Calculator:IPアドレスのサブネット計算ツール
・QuickEdit:エディタ
・Avast Mobile Security:アンチウイルス/VPNツール



使用目的
読書、動画閲覧、仮想アプライアンスの動作環境、FTPサーバ。
以下のレビューは使用目的に沿った内容となっており、ゲームに関しては殆ど触れていない。



用途および使用感
① 読書用
業務で使用している通信機器のコマンドリファレンスや設定ガイドやリリースノート等のPDFファイルや、O'REILLY等参考書のPDFファイルの閲覧用としての使用感。
発色が思っていた以上に綺麗。さすがフルHD。
表示される漢字は、一昔前に見られたAPAC版や中国版Androidスマホの日本語の変な漢字(簡体字や繁体字の事ではない)は無く、違和感無く読める。
20MBや30MBなどの大きいファイルサイズのPDFファイルを表示させる際はもたつくが、Nexus 7(2013)と比較すると非常に速くなっており許容範囲内。
Nexus 7時代に常用していたGoogle PlayでGoogle謹製のPDFビューアが見つからない為、仕方無くAdobe Acrobat Readerを使用。


② 動画閲覧
YouTubeでIPネットワーキング関連の勉強用動画を見ている。
YouTubeの動画再生は快適で、音の途切れや動作のもたつきは無し。音質は可も無く不可も無しといった感じ。
スピーカーは前面から見て右下側面に有る。左下側面にも同じ形状の穴が有るがダミーか何かのようで、そこから音は出ない。
また、Webブラウザ(Google Chrome)によるWebブラウジングももたつきは無く、快適に表示される。
保存した動画はVLCというアプリで再生。
VLCによる動画再生ももたつきは無く、WebブラウザによるYouTubeの動画再生と同様に快適に表示される。


③ Limbo PC Emulator用
データセンタのネットワークの設計や構築などの業務に携わる者として、Windows PCやMacBook等でVirtualBoxで仮想アプライアンスを動かしているような事を、スマホやタブレット端末でも出来ないだろうかと考えている同業の方々は少しは存在しているのではないかと考えている。
そんな方々に対しては「制約は多いが可能である」と伝えたい。
以下はVirtualBoxのようなツールであるLimbo PC Emulatorにて、Linuxやソフトウェアルータを動かす為の環境としての使用感。
Googleで検索した結果ではあるが、KingPad SA8のAntutuベンチマークのスコアは100,000点以上との事で普段使用しているSONY Xperia XZ2のスコアの3分の1程度、以前使用していたVAIO Phone VPA05やNexus 7(2013)のスコアの約2倍という事で、ゲストOSの動作がNexus 7より速い事を期待していたものの、目視した限りでは思っていた程速くはなかった。
VyOSの新しいバージョン1.4系や1.3系はともかく、VyOSのバージョン1.0系やHP VSR1000やAlpine Linuxのデプロイ時そして起動時のもたつきはVAIO PhoneやNexus 7とほぼ一緒で、がっかりした。
しかしスマホやNexus 7よりモニタが大きい為、ソフトウェアキーボードは打ちやすくなった。


④ FTPサーバ用
今年はLinux生誕30周年という事で、自分が初めて触れたLinuxであるDebian GNU/Linux 3.0(woody)をLimbo PC EmulatorのゲストOSとして今年だけの期間限定でデプロイし、自分用FTPサーバとしても使用。
20年近くもの昔にリリースされたバージョンにつき動作に要求されるスペックは低い為か、動作は機敏。
24時間電源でゲストOS立ち上げっぱなし且つWi-Fi繋ぎっぱなしの状態、そしてFTPサーバへのアクセスが1日当たり1~2件程度という運用状況の場合、約24時間でバッテリーを使い切る。よってFTP通信をしない時はWi-FiをOFFにしバッテリーの消費を抑えている。


⑤ その他
Wi-Fiの電波の受信感度は良好。
今のところ、2.4GHz、5.0GHz共に途中で切れる事象は家庭内と外出先共に発生していない。AndroidアプリのアップデートやAndroid OSやAvastのセキュリティアップデート、上記に挙げたFTP通信以外は殆どネットワークに接続しない為、Wi-Fiの電波の受信に感じてはあまり重要視していないが...
Amazonの商品説明では5G WIFIという文字列がちらりと見えたが、Wi-Fiの5Gと回線の5Gは全く別の規格。Wi-Fiの5Gはスマホの回線とは関係無いので注意。

タッチパネルの感度は最良という訳ではなく、モニタを指でなぞって表示させているものをスライドさせる事は問題無いが、指でタッチして何かする際はたまに反応しない事が有る。

画面はやや暗めで、輝度の設定を最大に設定しても晴れた日の屋外での使用は少し厳しい。

カメラはおまけに付いているといった感じ。
AFやISO値や撮影シーンなどiPhoneやAndroidスマホのカメラで出来る設定は無く、HDRやセルフタイマーくらいしか無い。手振れ補正は無し。
映えを意識しない画像であれば特に問題無しか。

本体の質感。背面と側面共に金属加工で、エッジ部分は綺麗にカットされていて安っぽさは無い。
しかし金属筐体な故、微妙に重たく感じられる。電車の中で片手に持っての操作は長時間でなければ問題無し。1時間はきついように感じる。
背面は少しザラザラした感じではあるが手に持っていても滑りやすい。滑り止めとキズ防止の為にカバーが欲しいところだがマイナーな機種である為か種類は非常に少なく、その数少ないカバーはAmazonで探しても残念な事にダサいデザインの物しかない。
8インチタブレットの他機種のカバーで代用可能な物が有ったらそれを使いたい。



総評
読書用、動画閲覧用であればコストパフォーマンスが非常に高く、お勧めな1台。
しかし上記で挙げた仮想アプライアンスの導入や運用、あるいはゲームなどシステムに高負荷がかかるような処理を常に行うのであれば、もっとスペックが高い物の方が良いと思う。
残念な事に、KingPad SA8専用のカバーや保護シート等周辺アクセサリは種類が非常に少ない。KingPad SA8が沢山売れれば出回るようになるか?



購入後2ヵ月が経ち.....
2021年6月6日追記
・Windows PC(Windows 10 Pro 20H2)からUSBケーブルを介してKingPad SA8にファイルをコピーする際、ファイルのコピーが出来ずKingPad SA8側が固まる事が有る。その際はKingPad SA8を再起動する事で事象は解消される。
・Amazonのレビューにて散見される、モニターに線が表示される事象は今のところ発生していない。
・背面がツルツルしている為か、片手で持っている時に何度か落としそうになった。
・WiFiの電波の掴み具合は問題無し。掴んだWiFiが切れるという事象は1ヵ月間で2回発生する頻度。
・PDFファイルの読書用端末や、YouTube等動画閲覧用としては満足。


購入後3ヵ月が経ち.....
2021年7月15日追記
・週に5時間程度の動画視聴(勉強目的)、通勤の電車内にて片道40分程度の時間PDFファイルの閲覧...といった感じの使用に落ち着いている。
・今のところ、WiFiの電波の掴み具合や画面に不具合は見られていない。動作にもたつき等の事象も見られていない。
・WiFiに接続した状態でシステムのアップデートを試みると、動作は固まり画面上のどこに触れても反応無し...という事象が発生する。Android OSのアップグレードは出来ないのか?







https://www.amazon.co.jp/dp/B08T91P9WS/ AmazonのKingPad SA8のページ
https://www.vastking.com/ VASTKING
https://www.vastking.com/products/kingpad-sa10?variant=38110173626555 KingPad SA10/SA8
https://debslink.hatenadiary.jp/entry/20200223/1582450627 Android端末で安定稼動するソフトウェアルータ・スイッチ まとめ
https://debslink.hatenadiary.jp/entry/2019/10/13/155145 AndroidスマホでVyOSを動かす

https://news.mynavi.jp/article/20210424-1878082/ Linux 30周年

サイケデリックなTux君を元の色に戻す

使用しているAndroidスマホにてゲストOSとして起動させているDebian GNU/Linux 3.0(woody)。
自分が初めて触れたLinuxで、Linux誕生30周年を記念して今年限定でAndroidスマホ内でゲストOSとして運用している。
そのwoodyにて、起動中に画面上側にて表示されるペンギンの絵の色が途中で変わる現象を解消した際のメモ。
今時woodyで遊んでいるような人、しかもVirtualBoxのゲストOSの如く、Androidスマホで動作するエミュレータ(Limbo PC Emulator)のゲストOSとして動作させているような人は居ないだろうが、自分向けのメモとして残しておいた。


Debian GNU/Linux 3.0の起動直後から画面上側にLinuxのマスコットのペンギンTux君が表示される。
そのペンギンが「Configuring network interfaces: done」の出力と同時にサイケデリックな色に変わる。
ログイン後にエディタで何かファイルを一旦開いて閉じるとペンギンの絵は消えるが、気になる為に解消させた。


当事象はブートローダの設定ファイルにてフレームバッファの解像度を修正する事で解消した。
Debian GNU/Linux 3.0にて採用されているブートローダは、今主流のGRUB(GRand Unified Bootloader)ではなくLILO(LInux LOrder)が採用されている。
エディタでLILOの設定ファイル /etc/lilo.confを開き、vgaのモードの既存設定をコメントアウトし、vga=0x301を追記。
値は以下のサイト内の記載内容を参考にした。
http://archive.linux.or.jp/JF/JFdocs/Framebuffer-HOWTO-5.html (5.インテルプラットホーム上でフレームバッファデバイスを使う)

# vi /etc/lilo.conf
:
# Specifies the VGA text mode at boot time. (normal, extended, ask, <mode>)
#
# vga=ask
# vga=9
#
#vga=normal
vga=0x301
:


編集後、設定内容を起動オプションに反映させる為に以下のコマンドを実行。

# /sbin/lilo
Added Linux *
Skipping /vmlinuz.old
#




設定変更前は以下の画像のとおり、イカれたTux君が表示される。
サイケデリックな感じに見えるし、腹の縦スジが流血にも見えてホラーな感じにも見える。



設定変更後は以下の画像のとおり、いつものTux君。




https://www.joonet.de/lilo/ LILO
https://www.gnu.org/software/grub/ GNU GRUB
https://www.debian.org/releases/woody/index.ja.html Debian GNU/Linux 3.0リリース情報
https://www.debian.org/releases/woody/i386/release-notes/index.ja.html Debian GNU/Linux 3.0リリースノート
https://cdimage.debian.org/mirror/cdimage/archive/3.0_r6/i386/iso-cd/ Debian GNU/Linux 3.0のisoファイル
https://debslink.hatenadiary.jp/entry/20210328/1616922290 前回の記事 (2021年はLinux 30周年)

2021年はLinux 30周年

1991年8月25日にLinus Torvalds氏がLinuxの開発を発表、10月5日に最初のバージョンが公開されたという事で、2021年はLinux 30周年にあたる。


初公開日の10月5日は半年以上も先だが30周年をお祝いし(?)、AndroidスマホにLimbo PC Emulatorをインストールし、自分が初めて触れたLinuxであるDebian GNU/Linux 3.0 (woody)をゲストOSとしてデプロイしてみた。
インストール時の言語環境を日本語に選択する事は可能だが何度やってもインストールに失敗したが、英語を選択すると成功した。
インストールに要した時間は思っていた以上に短く、再起動後のdselect周辺も含めて1時間は要しなかった。
初めてインストールした時は苦労したと思うが、何せ20年近く前の事でありどんな感じで苦労したのか忘れた。NIC周りかX周りか...



起動開始直後のLILO... の文字列、何年ぶりに見たのだろう。
起動時のログ出力やコマンド叩いた時の反応は、Alpine Linux(3.11.8)より軽快だ。
起動完了後にfree -mコマンドを叩いたら、usedがたった16MB!!
vsftpdはAlpine LinuxやCentOSで使用しているvsftpd.confを流用してもWLANの同じネットワークから出来なかった為、wu-ftpdを導入。家庭内環境用の簡易的なFTPサーバとして動かす事にした。



2021年の今もapt-getコマンドでパッケージのダウンロードとインストールは可能だが、woodyは既にサポート切れにつきwoodyのパッケージはアーカイブサイトから持ってくる必要が有る。
/etc/apt/sources.listファイルの記載内容を以下に修正する。
既存の行は今となっては使用出来ない為、削除してもよい。

# vi /etc/apt/sources.list
deb http://archive.debian.org/debian woody main contrib
deb-src http://archive.debian.org/debian woody main contrib

修正後はapt-get updateコマンドで設定内容を反映。
その後はapt-get コマンドでパッケージのダウンロードとインストールが可能になる。



以下の画像は、Limbo PC Emulator内で動作するDebian GNU/Linuxに、SSHクライアントアプリTerminusからsshでlocalhost宛てにアクセスしたもの。
Limbo PC Emulatorに出力される文字のフォントサイズは変更出来ず読みづらい為に、起動完了後はフォントサイズの変更が可能なsshクライアントアプリからアクセスし、bashのコマンドをぽちぽち叩いて遊んでいる。
両脇にある本は、JUST FOR FUNの日本語版とviの参考書。





https://debslink.hatenadiary.jp/entry/20200509/1589032166 外出自粛で暇なのでUNIX系OS使用遍歴を振り返る
https://debslink.hatenadiary.jp/entry/20200418/1587204948 AndroidスマホでAlpine Linuxを動かす 


https://gihyo.jp/admin/clip/01/linux_dt/202103/25
https://www.zaikei.co.jp/article/20210322/613150.html
https://linuxfoundation.org/linux30th/
https://en.wikipedia.org/wiki/Linux_kernel
https://linux.srad.jp/story/21/03/21/058252/ Linux Foundation、Linux 30周年記念ロゴ画像を公開
https://cdimage.debian.org/mirror/cdimage/archive/3.0_r6/i386/iso-cd/


https://sourceforge.net/projects/limbopcemulator/ Limbo PC Emulator


※Wikipediaに載っているLinuxカーネルの記事は、英語版の方が詳細に書かれている

Cumulus LinuxとSONiCの設定ファイル

Debian GNU/LinuxベースのNOSであるCumulus LinuxとSONiCの設定方法と設定ファイルについて簡単にまとめてみた。(というより晒しただけ)
製品版ではなくJenkinsから落としてくるSONiCのBGP設定について腑に落ちない所が有り、SONiCを再度デプロイから始め、Cumulus LinuxをBGPピアとしたeBGPの設定をもう一度試行。コマンド投入で設定可能な内容と設定ファイルの編集が必要な内容を整理してみた。
※今回の確認対象はBGPの設定に関わるファイルのみであり、VXLANやACLやQoSなど他の設定のファイルに関しては触れない事を予め断っておく。


当方の環境
SONiCはJenkinsからダウンロード可能なもの(開発版)、Cumulus Linuxは製品版の仮想アプライアンス版(Cumulus VX)を使用。VirtualBoxにデプロイした。
SONIC:

$ show version
SONiC Software Version: SONiC.202012.35-84a091d9
Distribution: Debian 10.8
Kernel: 4.19.0-12-2-amd64
Build commit: 84a091d9
Build date: Fri Mar  5 06:47:10 UTC 2021
Built by: johnar@jenkins-worker-8


Cumulus VX:

$ net show version
NCLU_VERSION=1.0-cl4.2.1u1
DISTRIB_ID="Cumulus Linux"
DISTRIB_RELEASE=4.2.1
DISTRIB_DESCRIPTION="Cumulus Linux 4.2.1"



構成
今回の構成は以下の図のとおり。
IP Clos(っぽい)構成は本来であればLeafとSpineとの間の物理リンクは1本づつである。

今回は1台のSONiCと1台のCumulus VXとの間でeBGPで接続させた。
尚、SONiCはデプロイ直後には既にBGPやIPアドレスの設定が投入済みにつき設定変更箇所は最低限に留め、対向先のCumulusはSONiCに合わせる形で設定投入した。



Cumulus Linux (Cumulus VX)の場合
インタフェースやシステム周りはNCLUコマンドで設定を投入し、net commitコマンドで設定内容を保存。
ルーティングはvtyshモードに入りCisco IOSライクなコマンドで設定を投入し、write memoryコマンドで設定内容を保存。
製品版の仮想アプライアンス版という事も有ってか、検証環境の範囲内ではあるものの設定後はヘンテコな動作は見せず動作が安定している。



SONiCの場合
Jenkinsから落としてきたイメージファイルは既にBGPやルートマップやIPアドレス等の設定が入っている状態である為、自宅環境にてBGPの動作検証をする程度であれば、最初から設定投入をする事は殆ど無いだろう。
インタフェースやスタティックルートやホスト名等の設定は、sudo configコマンドで投入する。設定内容はsudo config saveコマンドで保存可能。
BGPなどダイナミックルーティングの設定はvtyshモードでCisco IOSライクなコマンドで投入する。
write memoryコマンドで設定内容の保存が可能だが、当方の環境ではvtyshモードのBGP設定が/etc/sonic/config_db.jsonには反映されずbgpd.confには反映された。
/etc/sonic/config_db.jsonファイルとbgpd.confファイルの立ち位置はどう違うのか調べていくと、以下の資料にたどり着いた。

https://speakerdeck.com/imasaruoki/sonicdeshe-ding-surufrrouting SONiCで設定するFRRouting
上記資料の9シート目の記載内容によると、設定内容が/etc/sonic/config_db.jsonにマージされるのではなく、Config DBの内容とvtyshモードで設定した内容(bgpd.confなど)が実行中のコンフィグレーションになる事が分かった。

①/etc/sonic/config_db.jsonファイルの内容をConfig DBに書き込み。
②bgpcfgdがConfig DBの以下のデータを読み込む。
・bgp_asn
・neighbor asn
・name
・admin status
③vtyshモードで投入した設定内容をbgpdに読み込ませる。
④上記の②と③の内容が、実行中のコンフィグレーションとなる。
Ciscoのスイッチで言うと②+③の内容がrunning-configという事か。



ところで、BGPの設定投入後にwrite memoryコマンドを実行し設定内容をシステムに反映させようとすると...
"Note: this version of vtysh never writes vtysh.conf"と怒られた。

# write memory
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Configuration saved to /etc/frr/zebra.conf
Configuration saved to /etc/frr/bgpd.conf
Configuration saved to /etc/frr/staticd.conf
#

"Configuration saved to"で示されていたディレクトリは存在せずzebra.confとbgpd.confとstaticd.confファイルのパスは出力内容とは異なっており、/etc/frr/ディレクトリ内ではなく/etc/sonic/frr/ディレクトリ内に有った。

$ ls /etc/frr
ls: cannot access '/etc/frr': No such file or directory
$
$ sudo ls /etc/sonic/frr/
bgpd.conf  bgpd.conf.sav  staticd.conf  staticd.conf.sav  vtysh.conf  zebra.conf  zebra.conf.sav
$

Cumulus Linuxの設定内容
以下は/etc/network/interfacesファイルの内容。
NCLUコマンドで投入したインタフェース周りの設定が書かれている。
Cisco IOS XEもLinuxベースのNOSであるが、設定内部のFlashメモリに保存されているConfigファイル

$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*.intf

# The loopback network interface
auto lo
iface lo inet loopback
    # The primary network interface
    address 10.1.1.98/32

# The primary network interface
auto eth0
iface eth0
    address 192.168.3.250/24
    vrf mgmt

auto swp1
iface swp1
    address 10.0.0.1/31
    alias DEV=jpmtkvmsw99 IF=Eth0
    mtu 9100

auto swp2
iface swp2
    address 10.0.0.3/31
    alias DEV=jpmtkvmsw99 IF=Eth1
    mtu 9100

auto swp3
iface swp3
    address 10.0.0.5/31
    alias DEV=jpmtkvmsw99 IF=Eth2
    mtu 9100

auto swp4
iface swp4
    address 10.0.0.7/31
    alias DEV=jpmtkvmsw99 IF=Eth3
    mtu 9100

auto swp5
iface swp5
    address 10.0.0.9/31
    alias DEV=jpmtkvmsw99 IF=Eth4
    mtu 9100

auto mgmt
iface mgmt
    address 127.0.0.1/8
    address ::1/128
    vrf-table auto
$

以下は/etc/frr/frr.confファイルの内容。
vtyshモードで設定したルーティングの設定が書かれているが、NCLUとvtyshとの間で完全に棲み分けしているという訳ではないようで、NCLUで設定したhostnameは当ファイル内に書かれている。

$ sudo cat /etc/frr/frr.conf
[sudo] password for cumulus:
frr version 7.4+cl4.2.1u1
frr defaults datacenter
hostname jpmtkvmsw98
log syslog informational
service integrated-vtysh-config
router bgp 65200
 neighbor 10.0.0.0 remote-as 65100
 neighbor 10.0.0.2 remote-as 65100
 neighbor 10.0.0.4 remote-as 65100
 neighbor 10.0.0.6 remote-as 65100
 neighbor 10.0.0.8 remote-as 65100
 address-family ipv4 unicast
  network 10.1.1.98/32
 exit-address-family
line vty
$


SONiCの設定内容
以下は/etc/sonic/config_db.jsonファイルの内容。
"BGP_NEIGHBOR"の項目にてBGPネイバを修正すべく/etc/sonic/config_db.jsonファイルを直接編集した。
BGPネイバのCumulus Linuxに合わせてAS番号("asn"の項目)を修正、"name"の項目はCumulus Linuxのホスト名とインタフェース名に修正。
また、ずらーりずらりと並んでいたBGPネイバ設定の数はCumulus Linux側に合わせて5つまでとし、6つ目以降は削除した。
"BGP_NEIGHBOR"の項目以外の項目は編集しておらず、そのまま残している。

$ sudo cat /etc/sonic/config_db.json
{
    "BGP_NEIGHBOR": {
        "10.0.0.1": {
            "asn": "65200",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "10.0.0.0",
            "name": "jpmtkvmsw98_swp1",
            "nhopself": "0",
            "rrclient": "0"
        },
        "10.0.0.3": {
            "asn": "65200",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "10.0.0.2",
            "name": "jpmtkvmsw98_swp2",
            "nhopself": "0",
            "rrclient": "0"
        },
        "10.0.0.5": {
            "asn": "65200",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "10.0.0.4",
            "name": "jpmtkvmsw98_swp3",
            "nhopself": "0",
            "rrclient": "0"
        },
        "10.0.0.7": {
            "asn": "65200",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "10.0.0.6",
            "name": "jpmtkvmsw98_swp4",
            "nhopself": "0",
            "rrclient": "0"
        },
        "10.0.0.9": {
            "asn": "65200",
            "holdtime": "180",
            "keepalive": "60",
            "local_addr": "10.0.0.8",
            "name": "jpmtkvmsw98_swp5",
            "nhopself": "0",
            "rrclient": "0"
        }
    },
    "CRM": {
        "Config": {
            "acl_counter_high_threshold": "85",
            "acl_counter_low_threshold": "70",
            "acl_counter_threshold_type": "percentage",
            "acl_entry_high_threshold": "85",
            "acl_entry_low_threshold": "70",
            "acl_entry_threshold_type": "percentage",
            "acl_group_high_threshold": "85",
            "acl_group_low_threshold": "70",
            "acl_group_threshold_type": "percentage",
            "acl_table_high_threshold": "85",
            "acl_table_low_threshold": "70",
            "acl_table_threshold_type": "percentage",
            "dnat_entry_high_threshold": "85",
            "dnat_entry_low_threshold": "70",
            "dnat_entry_threshold_type": "percentage",
            "fdb_entry_high_threshold": "85",
            "fdb_entry_low_threshold": "70",
            "fdb_entry_threshold_type": "percentage",
            "ipmc_entry_high_threshold": "85",
            "ipmc_entry_low_threshold": "70",
            "ipmc_entry_threshold_type": "percentage",
            "ipv4_neighbor_high_threshold": "85",
            "ipv4_neighbor_low_threshold": "70",
            "ipv4_neighbor_threshold_type": "percentage",
            "ipv4_nexthop_high_threshold": "85",
            "ipv4_nexthop_low_threshold": "70",
            "ipv4_nexthop_threshold_type": "percentage",
            "ipv4_route_high_threshold": "85",
            "ipv4_route_low_threshold": "70",
            "ipv4_route_threshold_type": "percentage",
            "ipv6_neighbor_high_threshold": "85",
            "ipv6_neighbor_low_threshold": "70",
            "ipv6_neighbor_threshold_type": "percentage",
            "ipv6_nexthop_high_threshold": "85",
            "ipv6_nexthop_low_threshold": "70",
            "ipv6_nexthop_threshold_type": "percentage",
            "ipv6_route_high_threshold": "85",
            "ipv6_route_low_threshold": "70",
            "ipv6_route_threshold_type": "percentage",
            "nexthop_group_high_threshold": "85",
            "nexthop_group_low_threshold": "70",
            "nexthop_group_member_high_threshold": "85",
            "nexthop_group_member_low_threshold": "70",
            "nexthop_group_member_threshold_type": "percentage",
            "nexthop_group_threshold_type": "percentage",
            "polling_interval": "300",
            "snat_entry_high_threshold": "85",
            "snat_entry_low_threshold": "70",
            "snat_entry_threshold_type": "percentage"
        }
    },
    "DEVICE_METADATA": {
        "localhost": {
            "bgp_asn": "65100",
            "buffer_model": "traditional",
            "default_bgp_status": "up",
            "default_pfcwd_status": "disable",
            "hostname": "jpmtkvmsw99",
            "hwsku": "Force10-S6000",
            "mac": "52:54:00:12:34:56",
            "platform": "x86_64-kvm_x86_64-r0",
            "type": "LeafRouter"
        }
    },
    "FEATURE": {
        "bgp": {
            "auto_restart": "enabled",
            "has_global_scope": "False",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "database": {
            "auto_restart": "always_enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "always_enabled"
        },
        "dhcp_relay": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "gbsyncd": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "lldp": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "mgmt-framework": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "True",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "nat": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "disabled"
        },
        "pmon": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "radv": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "sflow": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "disabled"
        },
        "snmp": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "True",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "swss": {
            "auto_restart": "enabled",
            "has_global_scope": "False",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "syncd": {
            "auto_restart": "enabled",
            "has_global_scope": "False",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "teamd": {
            "auto_restart": "enabled",
            "has_global_scope": "False",
            "has_per_asic_scope": "True",
            "has_timer": "False",
            "high_mem_alert": "disabled",
            "state": "enabled"
        },
        "telemetry": {
            "auto_restart": "enabled",
            "has_global_scope": "True",
            "has_per_asic_scope": "False",
            "has_timer": "True",
            "high_mem_alert": "disabled",
            "state": "enabled"
        }
    },
    "FLEX_COUNTER_TABLE": {
        "BUFFER_POOL_WATERMARK": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "PFCWD": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "PG_DROP": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "PG_WATERMARK": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "PORT": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "PORT_BUFFER_DROP": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "QUEUE": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "QUEUE_WATERMARK": {
            "FLEX_COUNTER_STATUS": "enable"
        },
        "RIF": {
            "FLEX_COUNTER_STATUS": "enable"
        }
    },
    "INTERFACE": {
        "Ethernet0": {},
        "Ethernet100": {},
        "Ethernet104": {},
        "Ethernet108": {},
        "Ethernet112": {},
        "Ethernet116": {},
        "Ethernet12": {},
        "Ethernet120": {},
        "Ethernet124": {},
        "Ethernet16": {},
        "Ethernet20": {},
        "Ethernet24": {},
        "Ethernet28": {},
        "Ethernet32": {},
        "Ethernet36": {},
        "Ethernet4": {},
        "Ethernet40": {},
        "Ethernet44": {},
        "Ethernet48": {},
        "Ethernet52": {},
        "Ethernet56": {},
        "Ethernet60": {},
        "Ethernet64": {},
        "Ethernet68": {},
        "Ethernet72": {},
        "Ethernet76": {},
        "Ethernet8": {},
        "Ethernet80": {},
        "Ethernet84": {},
        "Ethernet88": {},
        "Ethernet92": {},
        "Ethernet96": {},
        "Ethernet0|10.0.0.0/31": {},
        "Ethernet100|10.0.0.50/31": {},
        "Ethernet104|10.0.0.52/31": {},
        "Ethernet108|10.0.0.54/31": {},
        "Ethernet112|10.0.0.56/31": {},
        "Ethernet116|10.0.0.58/31": {},
        "Ethernet120|10.0.0.60/31": {},
        "Ethernet124|10.0.0.62/31": {},
        "Ethernet12|10.0.0.6/31": {},
        "Ethernet16|10.0.0.8/31": {},
        "Ethernet20|10.0.0.10/31": {},
        "Ethernet24|10.0.0.12/31": {},
        "Ethernet28|10.0.0.14/31": {},
        "Ethernet32|10.0.0.16/31": {},
        "Ethernet36|10.0.0.18/31": {},
        "Ethernet40|10.0.0.20/31": {},
        "Ethernet44|10.0.0.22/31": {},
        "Ethernet48|10.0.0.24/31": {},
        "Ethernet4|10.0.0.2/31": {},
        "Ethernet52|10.0.0.26/31": {},
        "Ethernet56|10.0.0.28/31": {},
        "Ethernet60|10.0.0.30/31": {},
        "Ethernet64|10.0.0.32/31": {},
        "Ethernet68|10.0.0.34/31": {},
        "Ethernet72|10.0.0.36/31": {},
        "Ethernet76|10.0.0.38/31": {},
        "Ethernet80|10.0.0.40/31": {},
        "Ethernet84|10.0.0.42/31": {},
        "Ethernet88|10.0.0.44/31": {},
        "Ethernet8|10.0.0.4/31": {},
        "Ethernet92|10.0.0.46/31": {},
        "Ethernet96|10.0.0.48/31": {}
    },
    "KDUMP": {
        "config": {
            "enabled": "false",
            "memory": "0M-2G:256M,2G-4G:320M,4G-8G:384M,8G-:448M",
            "num_dumps": "3"
        }
    },
    "LOOPBACK_INTERFACE": {
        "Loopback0": {},
        "Loopback0|10.1.1.99/32": {}
    },
    "MGMT_INTERFACE": {
        "eth0|192.168.3.254/24": {
            "gwaddr": "192.168.3.1"
        }
    },
    "PORT": {
        "Ethernet0": {
            "admin_status": "up",
            "alias": "fortyGigE0/0",
            "index": "0",
            "lanes": "25,26,27,28",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet100": {
            "admin_status": "up",
            "alias": "fortyGigE0/100",
            "index": "25",
            "lanes": "121,122,123,124",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet104": {
            "admin_status": "up",
            "alias": "fortyGigE0/104",
            "index": "26",
            "lanes": "81,82,83,84",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet108": {
            "admin_status": "up",
            "alias": "fortyGigE0/108",
            "index": "27",
            "lanes": "85,86,87,88",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet112": {
            "admin_status": "up",
            "alias": "fortyGigE0/112",
            "index": "28",
            "lanes": "93,94,95,96",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet116": {
            "admin_status": "up",
            "alias": "fortyGigE0/116",
            "index": "29",
            "lanes": "89,90,91,92",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet12": {
            "admin_status": "up",
            "alias": "fortyGigE0/12",
            "index": "3",
            "lanes": "37,38,39,40",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet120": {
            "admin_status": "up",
            "alias": "fortyGigE0/120",
            "index": "30",
            "lanes": "101,102,103,104",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet124": {
            "admin_status": "up",
            "alias": "fortyGigE0/124",
            "index": "31",
            "lanes": "97,98,99,100",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet16": {
            "admin_status": "up",
            "alias": "fortyGigE0/16",
            "index": "4",
            "lanes": "45,46,47,48",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet20": {
            "admin_status": "up",
            "alias": "fortyGigE0/20",
            "index": "5",
            "lanes": "41,42,43,44",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet24": {
            "admin_status": "up",
            "alias": "fortyGigE0/24",
            "index": "6",
            "lanes": "1,2,3,4",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet28": {
            "admin_status": "up",
            "alias": "fortyGigE0/28",
            "index": "7",
            "lanes": "5,6,7,8",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet32": {
            "admin_status": "up",
            "alias": "fortyGigE0/32",
            "index": "8",
            "lanes": "13,14,15,16",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet36": {
            "admin_status": "up",
            "alias": "fortyGigE0/36",
            "index": "9",
            "lanes": "9,10,11,12",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet4": {
            "admin_status": "up",
            "alias": "fortyGigE0/4",
            "index": "1",
            "lanes": "29,30,31,32",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet40": {
            "admin_status": "up",
            "alias": "fortyGigE0/40",
            "index": "10",
            "lanes": "17,18,19,20",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet44": {
            "admin_status": "up",
            "alias": "fortyGigE0/44",
            "index": "11",
            "lanes": "21,22,23,24",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet48": {
            "admin_status": "up",
            "alias": "fortyGigE0/48",
            "index": "12",
            "lanes": "53,54,55,56",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet52": {
            "admin_status": "up",
            "alias": "fortyGigE0/52",
            "index": "13",
            "lanes": "49,50,51,52",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet56": {
            "admin_status": "up",
            "alias": "fortyGigE0/56",
            "index": "14",
            "lanes": "57,58,59,60",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet60": {
            "admin_status": "up",
            "alias": "fortyGigE0/60",
            "index": "15",
            "lanes": "61,62,63,64",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet64": {
            "admin_status": "up",
            "alias": "fortyGigE0/64",
            "index": "16",
            "lanes": "69,70,71,72",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet68": {
            "admin_status": "up",
            "alias": "fortyGigE0/68",
            "index": "17",
            "lanes": "65,66,67,68",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet72": {
            "admin_status": "up",
            "alias": "fortyGigE0/72",
            "index": "18",
            "lanes": "73,74,75,76",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet76": {
            "admin_status": "up",
            "alias": "fortyGigE0/76",
            "index": "19",
            "lanes": "77,78,79,80",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet8": {
            "admin_status": "up",
            "alias": "fortyGigE0/8",
            "index": "2",
            "lanes": "33,34,35,36",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet80": {
            "admin_status": "up",
            "alias": "fortyGigE0/80",
            "index": "20",
            "lanes": "109,110,111,112",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet84": {
            "admin_status": "up",
            "alias": "fortyGigE0/84",
            "index": "21",
            "lanes": "105,106,107,108",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet88": {
            "admin_status": "up",
            "alias": "fortyGigE0/88",
            "index": "22",
            "lanes": "113,114,115,116",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet92": {
            "admin_status": "up",
            "alias": "fortyGigE0/92",
            "index": "23",
            "lanes": "117,118,119,120",
            "mtu": "9100",
            "speed": "40000"
        },
        "Ethernet96": {
            "admin_status": "up",
            "alias": "fortyGigE0/96",
            "index": "24",
            "lanes": "125,126,127,128",
            "mtu": "9100",
            "speed": "40000"
        }
    },
    "SNMP": {
        "LOCATION": {
            "Location": "public"
        }
    },
    "SNMP_COMMUNITY": {
        "public": {
            "TYPE": "RO"
        }
    },
    "VERSIONS": {
        "DATABASE": {
            "VERSION": "version_2_0_0"
        }
    }
}
$

以下は/etc/network/interfacesファイルの内容。
"Managed by SONiC Config Engine DO NOT EDIT!"の記載が有るとおり、このファイルは直接編集していない。

$ sudo cat /etc/network/interfaces
#
# =============== Managed by SONiC Config Engine DO NOT EDIT! ===============
# generated from /usr/share/sonic/templates/interfaces.j2 using sonic-cfggen
# file: /etc/network/interfaces
#
# The loopback network interface
auto lo
iface lo inet loopback
   address 127.0.0.1
   netmask 255.255.0.0
   post-up ip addr del 127.0.0.1/8 dev lo

# The management network interface
auto eth0
iface eth0 inet static
    address 192.168.3.254
    netmask 255.255.255.0
    network 192.168.3.0
    broadcast 192.168.3.255
    ########## management network policy routing rules
    # management port up rules
    up ip -4 route add default via 192.168.3.1 dev eth0 table default metric 201
    up ip -4 route add 192.168.3.0/24 dev eth0 table default
    up ip -4 rule add pref 32765 from 192.168.3.254/32 table default
    # management port down rules
    pre-down ip -4 route delete default via 192.168.3.1 dev eth0 table default
    pre-down ip -4 route delete 192.168.3.0/24 dev eth0 table default
    pre-down ip -4 rule delete pref 32765 from 192.168.3.254/32 table default
#
source /etc/network/interfaces.d/*
#

$

以下は/etc/sonic/frr/zebra.confファイルの内容。
frrバージョンやホスト名、パスワード、ログの設定等はzebra.confファイルおよびbgpd.conf、staticd.confの各ファイルにて同じである。
write memoryコマンドで設定内容が反映される為、当ファイルは直接編集していない。

$ sudo cat /etc/sonic/frr/zebra.conf
!
! Zebra configuration saved from vty
!   2021/03/20 02:00:24
!
frr version 7.5-sonic
frr defaults traditional
!
hostname jpmtkvmsw99
password zebra
enable password zebra
log syslog informational
log facility local4
!
!
!
ip nht resolve-via-default
ip protocol bgp route-map RM_SET_SRC
!
!
route-map ALLOW_LIST_DEPLOYMENT_ID_0_V4 permit 65535
!
route-map ALLOW_LIST_DEPLOYMENT_ID_0_V6 permit 65535
!
route-map FROM_BGP_PEER_V4 permit 10
 call ALLOW_LIST_DEPLOYMENT_ID_0_V4
 on-match next
!
route-map FROM_BGP_PEER_V4 permit 11
!
route-map FROM_BGP_PEER_V4 permit 100
!
route-map FROM_BGP_PEER_V6 permit 10
 call ALLOW_LIST_DEPLOYMENT_ID_0_V6
 on-match next
!
route-map FROM_BGP_PEER_V6 permit 11
!
route-map FROM_BGP_PEER_V6 permit 1
 on-match next
!
route-map FROM_BGP_PEER_V6 permit 100
!
route-map TO_BGP_PEER_V4 permit 100
!
route-map TO_BGP_PEER_V6 permit 100
!
route-map RM_SET_SRC permit 10
 set src 10.1.1.99
!
!
!
!
!
line vty
!
$

以下は/etc/sonic/frr/bgpd.confファイルの内容。
ファイル名のとおりBGPの設定が保存されているファイルのようで、BGPの設定以外は、zebra.confファイルおよびstaticd.confファイルと同じである。
write memoryコマンドで設定内容が反映される為、当ファイルは直接編集していない。
BGPネイバの設定内容をよく見ると、ネイバの数やremote-as、descriptionの設定は/etc/sonic/config_db.jsonの内容と同じである事が分かる。
...という事は、BGPネイバの設定は/etc/sonic/config_db.jsonファイルを直接編集、BGPの他の設定やルートマップの設定等はvtyshモードで設定...という事なのだろうか。

$ sudo cat /etc/sonic/frr/bgpd.conf
!
! Zebra configuration saved from vty
!   2021/03/20 02:00:24
!
frr version 7.5-sonic
frr defaults traditional
!
hostname jpmtkvmsw99
password zebra
enable password zebra
log syslog informational
log facility local4
!
!
!
router bgp 65100
 bgp router-id 10.1.1.99
 bgp log-neighbor-changes
 no bgp ebgp-requires-policy
 no bgp default ipv4-unicast
 bgp graceful-restart restart-time 240
 bgp graceful-restart
 bgp graceful-restart preserve-fw-state
 bgp bestpath as-path multipath-relax
 neighbor PEER_V4 peer-group
 neighbor PEER_V6 peer-group
 neighbor 10.0.0.1 remote-as 65200
 neighbor 10.0.0.1 peer-group PEER_V4
 neighbor 10.0.0.1 description jpmtkvmsw98_swp1
 neighbor 10.0.0.3 remote-as 65200
 neighbor 10.0.0.3 peer-group PEER_V4
 neighbor 10.0.0.3 description jpmtkvmsw98_swp2
 neighbor 10.0.0.5 remote-as 65200
 neighbor 10.0.0.5 peer-group PEER_V4
 neighbor 10.0.0.5 description jpmtkvmsw98_swp3
 neighbor 10.0.0.7 remote-as 65200
 neighbor 10.0.0.7 peer-group PEER_V4
 neighbor 10.0.0.7 description jpmtkvmsw98_swp4
 neighbor 10.0.0.9 remote-as 65200
 neighbor 10.0.0.9 peer-group PEER_V4
 neighbor 10.0.0.9 description jpmtkvmsw98_swp5
 !
 address-family ipv4 unicast
  network 10.1.1.99/32
  neighbor PEER_V4 soft-reconfiguration inbound
  neighbor PEER_V4 route-map FROM_BGP_PEER_V4 in
  neighbor PEER_V4 route-map TO_BGP_PEER_V4 out
  neighbor 10.0.0.1 activate
  neighbor 10.0.0.3 activate
  neighbor 10.0.0.5 activate
  neighbor 10.0.0.7 activate
  neighbor 10.0.0.9 activate
  maximum-paths 64
 exit-address-family
 !
 address-family ipv6 unicast
  neighbor PEER_V6 soft-reconfiguration inbound
  neighbor PEER_V6 route-map FROM_BGP_PEER_V6 in
  neighbor PEER_V6 route-map TO_BGP_PEER_V6 out
  maximum-paths 64
 exit-address-family
!
!
ip prefix-list PL_LoopbackV4 seq 5 permit 10.1.1.99/32
!
bgp community-list standard allow_list_default_community seq 5 permit no-export
bgp community-list standard allow_list_default_community seq 10 permit 5060:12345
!
route-map ALLOW_LIST_DEPLOYMENT_ID_0_V4 permit 65535
 set community 5060:12345 additive
!
route-map ALLOW_LIST_DEPLOYMENT_ID_0_V6 permit 65535
 set community 5060:12345 additive
!
route-map FROM_BGP_PEER_V4 permit 10
 call ALLOW_LIST_DEPLOYMENT_ID_0_V4
 on-match next
!
route-map FROM_BGP_PEER_V4 permit 11
 match community allow_list_default_community
!
route-map FROM_BGP_PEER_V4 permit 100
!
route-map FROM_BGP_PEER_V6 permit 10
 call ALLOW_LIST_DEPLOYMENT_ID_0_V6
 on-match next
!
route-map FROM_BGP_PEER_V6 permit 11
 match community allow_list_default_community
!
route-map FROM_BGP_PEER_V6 permit 1
 set ipv6 next-hop prefer-global
 on-match next
!
route-map FROM_BGP_PEER_V6 permit 100
!
route-map TO_BGP_PEER_V4 permit 100
!
route-map TO_BGP_PEER_V6 permit 100
!
route-map RM_SET_SRC permit 10
!
!
agentx
!
line vty
!
$

以下は/etc/sonic/frr/staticd.confファイルの内容。
ファイル名のとおりスタティックルートの設定が保存されているファイルのようで、スタティックルートの設定以外は、zebra.confファイルおよびbgpd.confファイルと同じである。
write memoryコマンドで設定内容が反映される為、当ファイルは直接編集していない。
show runningconfig allコマンドの出力内容は、zebra.conf、bgpd.conf、staticd.confの各ファイルの内容をマージした内容と同じである事に気が付く。

$ sudo cat /etc/sonic/frr/staticd.conf
!
! Zebra configuration saved from vty
!   2021/03/20 02:00:24
!
frr version 7.5-sonic
frr defaults traditional
!
hostname jpmtkvmsw99
password zebra
enable password zebra
log syslog informational
log facility local4
!
!
!
ip route 0.0.0.0/0 192.168.3.1 200
line vty
!
$



BGPテーブルの内容の確認
ここに来てようやくBGPテーブルの内容を確認。

SONiC側のBGPテーブルの内容を確認。
設定内容のとおり、各物理リンクにてBGPピアを張っている事が分かる。

# show ip bgp summary

IPv4 Unicast Summary:
BGP router identifier 10.1.1.99, local AS number 65100 vrf-id 0
BGP table version 2
RIB entries 3, using 576 bytes of memory
Peers 5, using 107 KiB of memory
Peer groups 2, using 128 bytes of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt
10.0.0.1        4      65200      1209      1208        0    0    0 01:00:07            1        2
10.0.0.3        4      65200      1209      1208        0    0    0 01:00:07            1        2
10.0.0.5        4      65200      1208      1207        0    0    0 01:00:05            1        2
10.0.0.7        4      65200      1209      1208        0    0    0 01:00:07            1        2
10.0.0.9        4      65200       956       955        0    0    0 00:47:33            1        2

Total number of neighbors 5
#


Cumulus Linux側のBGPテーブルの内容を確認。
こちらも設定内容のとおり、各物理リンクにてBGPピアを張っている事が分かる。

$ net show bgp summary
show bgp ipv4 unicast summary
=============================
BGP router identifier 10.1.1.98, local AS number 65200 vrf-id 0
BGP table version 2
RIB entries 3, using 576 bytes of memory
Peers 5, using 106 KiB of memory

Neighbor              V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
jpmtkvmsw99(10.0.0.0) 4      65100      1231      1231        0    0    0 01:01:16            1
jpmtkvmsw99(10.0.0.2) 4      65100      1231      1231        0    0    0 01:01:15            1
jpmtkvmsw99(10.0.0.4) 4      65100      1229      1230        0    0    0 01:01:14            1
jpmtkvmsw99(10.0.0.6) 4      65100      1231      1231        0    0    0 01:01:16            1
jpmtkvmsw99(10.0.0.8) 4      65100       978       979        0    0    0 00:48:42            1

Total number of neighbors 5


show bgp ipv6 unicast summary
=============================
% No BGP neighbors found


show bgp l2vpn evpn summary
===========================
% No BGP neighbors found
$



まとめ
Cumulus Linuxのでは、CiscoやJuniperのスイッチと同様にコマンドによる設定だけで目的を達成する事が出来た。
SONiCでは、開発版に関してはvtyshモードのコマンドによる設定と/etc/sonic/config_db.jsonファイルの編集で目的を達成する事が出来たが、製品版では/etc/sonic/config_db.jsonファイルを直接編集する必要は無いようだ。(下記リンク先を参照)



参照先など
開発者および先達の皆さまに感謝。
https://azure.github.io/SONiC/ SONiC
https://github.com/Azure/SONiC/wiki/Configuration SONiC Configuration
https://cumulusnetworks.com/ Cumulus Linux
https://docs.cumulusnetworks.com/knowledge-base/ Cumulus Networks Knowledge Base
https://debslink.hatenadiary.jp/entry/20210131/1612091391 SONiCを少しかじってみた
https://debslink.hatenadiary.jp/entry/20210214/1613279732 SONiCのWarm Bootの動作確認

https://support.edge-core.com/hc/en-us/articles/900000789566-BGP-Step-1-Establish-BGP-Session 製品版SONiCのBGP設定例(Edgecore Networks社)
https://support.edge-core.com/hc/en-us/articles/900003896906-Enterprise-SONiC-Distribution-by-Edgecore 製品版SONiCのダウンロードページ(Edgecore Networks社)

今更ながらHP2133にCentOS7をインストール

HP2133の延命措置の為の備忘録。

元々はFreeBSDが入っていたがCentOSに変えた経緯は以下のとおり。
・久々にHP2133の電源を入れたらFreeBSDが起動しなかった。
・修復を試みようとUSBメモリのブートを試みたものの、USBブート失敗。
・再インストールを試みようと前回インストール時に使用したFreeBSDのイメージを書き込んだUSBメモリを使用するも、USBブート失敗。
・他にUbuntuとDebianのUSBブートを試みたがどれも失敗、しかしCentOS7のUSBブートは何故か成功した為、CentOS7をインストールし家庭内FTPサーバとしてそのまま使い続ける事に。

2008年に販売されたネットブック(と当時は呼ばれていた)HP2133、何か使い道は無いかという事でCentOSを入れてみた。
FreeBSDはUSBブートがことごとく失敗、しかも前回インストール時に使用したUSBメモリ(中身は当時のまま)でさえブート出来なかった為、今回は選択肢から外した。

HP2133はHWの仕様上32bit版OSしかインストール出来ない。
公式には32bit版のCentOS7は公開されていないが、有志の方々によって作られた32bit版CentOS7が公開されている為、それを使用。
32bit版CentOSのEPELは2021年2月末の段階では既に削除されている。

タッチパッド横のクリックボタンは茶色に変色していた。
部品取りの為に中古機器を購入し交換しようと考えている。



当方の環境
HP2133 スタンダードモデル
・RAM:2GB (PC2-5300 DDR2-SDRAM)
・HDD:SATA 160GB
・CPU:VIA C7-M ULV 1.2GHz
・モニター:WXGA (1280×768)
・VRAM:128MB
・WLAN:IEEE802.11bとIEEE802.11g (USBのWLANアダプタが必要)
・LAN:10/100/1000Mbps RJ45ポート x1
※CPUは通常時は800MHzで動作するが、高負荷時は1.2GHzで動作する。
※HP2133のスタンダードモデルのRAM容量は1GBだが、自分で2GBに換装した。
※HP2133のスタンダードモデルのHDD容量は120GBだが、元の持ち主が160GBのHDDに換装した模様。



CentOSのインストール

以下よりCentOS-7-i386-Minimal-2009.isoファイルをダウンロード。
http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos-altarch/7.9.2009/isos/i386/

ダウンロードした.isoファイルはRufusを使用しUSBメモリに書き込ませ、CentOS7のインストールUSBメモリを作成。
https://rufus.ie/

上記で作成したCentOS7のブートUSBメモリをHP2133に挿し、電源投入。
HPのロゴがモニタに表示されたらF10キーを叩きBIOSの設定画面を表示させ、USBメモリーから起動するよう設定。
設定完了後再起動し、CentOSのインストールが開始される。
インストールの手順はGoogleで検索すると幾つもヒットする為、ここでは割愛。



インストール後にやったこと

1.コンソール画面の解像度の変更
CentOSのboot時に出力される文字が大きすぎる為、grubの設定を修正。

$ sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX=の行にvga=773を追加。
boot時のログを画面に出力させるよう、rhgb quietを削除。
GRUB_CMDLINE_LINUX=の行は以下のようになった。

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap vga=773"

以下のコマンドを実行し、設定内容をgrub.cfgに反映させる。

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg


2.wlanのドライバのインストール
以下のリンク先に先人の方々による手順がまとめられてある。ドライバを認識させるまでの手順が長く心が折れそうになったが、10年以上も昔にWindows版のドライバを流用して認識させた事があった事を思い出し、ndiswrapperコマンドでWindows版のドライバを認識させる方法でサクッと進めた。
https://wiki.centos.org/HowTos/Laptops/Wireless/Broadcom?action=show Broadcom Corporation BCM4311, BCM4312, BCM4313, BCM4321, BCM4322, BCM43224, BCM43225, BCM43227 and BCM43228 Based Wireless NICs
http://blog.livedoor.jp/oshibat/archives/1003276802.html Installing CentOS 6.5 on HP 2133 (Broadcom 43xx Wi-Fi)


WLANのアダプタは以下を使用。コネクタ部分を含め、指先より少し大きい程度。紛失注意。
https://www.amazon.co.jp/dp/B00JTSF7DY/


2-1.ndiswrapper-1.63.tar.gzとbcmwl5a.infファイルとbcmwl5.sysを入手。
NdisWrapperのダウンロードサイトからNdisWrapperのtar玉をダウンロード。
自分の場合、ndiswrapper-1.63.tar.gzをダウンロードしCentOSのホームディレクトリに保存。
ドライバのファイルはWindowsのものを流用。ダウンロードしたbcmwl5a.infファイルとbcmwl5.sysファイルはCentOSのホームディレクトリに保存。

https://sourceforge.net/projects/ndiswrapper/files/stable/
http://biginoz.free.fr/linux/bcmwl5a.inf
http://biginoz.free.fr/linux/bcmwl5.sys


2-2.NdisWrapperのtar玉を展開。

$ tar zxf ndiswrapper-1.63.tar.gz


2-3.展開時に生成されたndiswrapper-1.63ディレクトリに移動し、makeコマンドとmake installコマンドを実行。
CentOS7のminimalインストールの場合、開発用のライブラリファイル(libxxxx-dev)がインストールされていない為、別途インストール。
その後にNdisWrapperのインストールを開始する。

$ sudo yum groupinstall "Development Tools"

$ cd ndiswrapper-1.63
$ make
$ su
# make install

make実行時に出力されるエラーの対処について。
自分の環境では、以下のようなログを吐いてmakeが停止。

/home/hechtia/ndiswrapper-1.63/driver/ntoskernel.h:364:20: error: redefinition of 'reinit_completion'
 static inline void reinit_completion(struct completion *x)

上記の場合、ファイル/home/hechtia/ndiswrapper-1.63/driver/ntoskernel.hを開き、364行目あたりの「reinit_completion」のifからendifの間を削除しエラーを回避した。
コメントアウトだけでは同じ場所でエラーを吐き先に進まなかった。

#if LINUX_VERSION_CODE < KERNEL_VERSION(3,13,0)
この間の内容を削除
#endif

2-4.infファイルとNdisWrapperのカーネルモジュールの読み込み。
ndiswrapper -lコマンドを叩き、driver installedと出力されたら成功。

# cd ..
# ndiswrapper -i bcmwl5a.inf
Installing bcmwl5a
# ndiswrapper -l
bcmwl5a : driver installed
# modprobe ndiswrapper

2-5.ここまで来れば、後はnmtuiで以下の設定を済ませるとWLANに接続が出来るようになる。
・wlanインタフェースを作成。
・SSIDとパスワードの設定。
・作成したwlanインタフェースのアクティベート。



3.GNOMEは重過ぎにつき、yum groupinstallでX Window Systemを入れてMWMを導入。
sudo yum groupinstall "GNOME Desktop"でGNOMEを導入したところ、startxを打ってGNOME上のツールが完全に使用可能になるまで3分程度要した。
その後も動作が重かった為にyum groupremove "GNOME Desktop"でGNOMEを削除。
軽量なWindow Managerの導入を試み、yum groupinstall "X Window System"を実行しX Window Systemのみインストール。
mwmのインストール手順は以下を参照。

https://www.riscascape.net/archives/22065 RHEL7/CentOS7に後からX Window Systemを追加するには


以下は/etc/X11/xorg.confの修正箇所。
Section "Device"内のDriverをvesaに修正。
Section "Screen"内のSubSection "Display"のModesを1280x768に修正。

Section "Device"
:
省略
:
	Identifier  "Card0"
	Driver      "vesa"
	BusID       "PCI:1:0:0"
EndSection

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
:
省略
:
	SubSection "Display"
		Viewport   0 0
		Depth     24
		Modes     "1280x768"
	EndSubSection
EndSection


以下はインストールしたツール。
mwmとSeamonkyとconky以外はX環境でなくても使用可能。
・mwm:Motif Window Manager。Motifベースのウィンドウマネージャ。
・vsftpd:家庭用FTPサーバとして運用する為にインストール。
・tmux:ターミナルマルチプレクサ(Terminal Multiplexer)。 1枚のxterm内でを複数のセッション、ウィンドウ、ペインに分割し利用。
・Seamonky:Mozilla系の軽量Webブラウザ。
・Clam AntiVirus:オープンソースのアンチウイルスツール。
・tripwire:改ざん検知ツール。
・conky:X11用のリソースモニタ。


上記のツールの内、yum installでインストール出来た物はvsftpdとtmuxのみ。
conky:RHEL6の.rpmファイルを使用。
Clam AntiVirusとtripwire:公式サイトからtar玉ダウンロードしコンパイルとインストール。
Seamonky:公式サイトからtar玉をダウンロードし、展開後に生成されたseamonkyコマンドを実行しSeamonkyを起動。


4.上記3.の各ツールをインストールし終えたところで準備完了。
この後実施した内容。
・firewalldの設定。vfpの穴開け。
・Clam AntiVirusとtripwireの設定。
・mwmのカスタマイズ。
・CentOSのパーネルパラメータのチューニング。



以下の画像は、HP2133で動作するCentOS 7のスクリーンショット。
Window Managerはmwm。立ち上がっているツールはxeyesとxtermとconky。


インストールした各ツールのリンク先
https://security.appspot.com/vsftpd.html vsftpd
https://github.com/tmux/tmux tmux
https://www.seamonkey-project.org/ Seamonky
https://www.clamav.net/ Clam AntiVirus
https://www.tripwire.com/ tripwire
https://github.com/brndnmtthws/conky Conky
http://ftp.riken.jp/Linux/dag/redhat/el6/en/i386/rpmforge/RPMS/conky-1.6.1-1.el6.rf.i686.rpm



HP2133について
https://jp.ext.hp.com/lib/doc/catalog/notebook/jpt08347_04.pdf HI2133のスペック
https://ascii.jp/elem/000/000/138/138438/ 挑戦的モバイル、HP 2133の実力はいかに?(ASCII.jpの記事)
https://debslink.hatenadiary.jp/entry/20160501/1462113024 十数年ぶりにFreeBSD



viエディタに関する衝撃的な出来事
20年近くもの間、viエディタの設定ファイルは~/.exrcだと認識していたが、CentOS7では~/.vimrcであった。
まだvimはインストールしていないが、/etcディレクトリ内にvimrcは存在していた。
CentOSのインストール直後から.exrcに書いた設定内容が反映されていない事に何となく気付いており、Googleで「CentOS vi 設定」で検索したら以下に記事がヒット。記事の内容によると.vimrcだという。ホームディレクトリに有る設定ファイルのファイル名.exrcを.vimrcに変更したら、設定内容が反映された形でviで編集出来るようになった。

https://www.atmarkit.co.jp/ait/articles/1712/13/news009_2.html Linuxの定番テキストエディタ「vi」をマスターしよう(2)検索/オプション活用編