投稿

1月, 2021の投稿を表示しています

freebsd vm-bhyveメモ

FreeBSD bhyveを使用したvm-bhyve+ZFSを使ったxenserverからの移行に関するメモ、ということでメモベースで。VMware ESXiやxenserverなどでも同様のことができますが、あちら様は営利企業なのでどうしてもお金を稼がないといけないところがあり必要であれば技術は隠します。とはいえ、さすがにxenserver 7.0マシンを放っておくわけには行かなくなったのでFreeBSD vm-bhyve+ZFSにマイグレします。Linuxでは同様の技術にKVMがありますが、これを使わないのは情報は多く出回るにしろ頻繁に使用技術・ソフトが流行り廃りに影響されて年単位で移りゆく恐れがあるからです。そのたびに覚え直すのはめんどい。 FreeBSD bhyveの弱点はBIOSを持たないことなので、ほぼamd64/EFIで起動できるOS決め打ちです。たとえば2001年に発売されたWindows XPはMBRで整理されたパーティションを利用することが前提であり、EFI環境下では使用することはできません。※2021年04月現在では一部OSでのi386環境の起動が可能なようです。公式サイトを確認しましょう。 使用にあたってのイニシャライズ(vm init)やめぼしい部分(/etc/rc.conf、vm switch)についてはGoogle検索ができれば解決できると思われるので暇でもない限りずっと書けないかもしれない。 ■ホストマシン再起動時に共通switchがうまく立ち上がらない:例えば仮想マシン間はOK、インターネットやホストマシン含めた物理マシンにpingしても応答がない →bridgeに正しくホストマシンの物理イーサネットデバイスが追加されていない恐れがある。確認項目としては、/path/to/vm/.config/system.confにおける下記の内容について書き換える。(ここではホストマシンの物理インタフェースをem0とする) # vm switch add bhyve-public em0 実行時の/path/to/vm/.config/system.conf 01: switch_list="bhyve-public" 02: type_bhyve-public="standard" 03: ports_...

Python3:空白で区切られた文字列を元にforeachループする

個人的にはかなり使用頻度の高いループ文なので、シェルスクリプトとPython3.7.9と対比させながら進めます。FreeBSDの用語を使用している可能性がありますが、自分用なので特に書き換えは考えていません。なお、foreach文とは書いていますが、シェルスクリプトでもpythonでもforeachと書かないみたいです。ですが一般的にはこちらのほうが通りが良いためあえてforeach文と書きます。 ■前提 変数countryには"america brazil china"の文字列が入っています。 これをameria、brazil、chinaの文字列に分割しつつ、ループ文で表示できればこの記事の目標は達成。 ■モデル(シェルスクリプト) 01: $ cat country.sh 02: #!/bin/sh 03: 04: country_string="america brazil china" 05: 06: for args in `echo ${country_string} | tr ' ' '\n'` 07: do 08:     echo ${args} 09: done 10: $ sh country.sh 11: america 12: brazil 13: china シェルスクリプトは環境変数IFS値によってデリミタが異なります。通常では改行(\n)やタブなどが含まれているのでそれをデリミタに使用できる他、IFS値を再設定することにより変更することができます。しかしながら、環境変数のデフォルト値はできるだけ変更しないほうが良いと思われる他、trコマンドにより半角空白をそのままUNIXの改行コード(\n)に変更してしまう手が使えるので、echoコマンドでcountry_string値を出力しパイプでつなぎ、直接入力を半角空白から改行へ書き換えることで、IFS値で分離できる形に変えています。なお、"`"はバッククォートで、その中でシェルコマンドを実行する事ができます。バッククォートで囲まれたコマンドは、その実行結果に置き換えすることができます。 for args in 〜は、環境変数IFS値を元にスプリットした文字を変数argsに代入します。これはdo〜don...

FreeBSD 13-CURRENT(2020年12月)ぐらいにあったsubversion→git切り換えのメモ

詳しい説明等はなんとなく理解してから。 ソースコードのコミッターではなく、CURRENTなソースをコピーして使用するユーザ向け。 ■subversion時代のsrcは削除。 # cd /usr/src # rm -dRv ./* ./.arc* ./.git* ./.c* ■FreeBSD CURRENTのコピー(svnliteコマンドで言うところのsvnlite checkout https://svn.freebsd.org/src/head/) # cd /usr/src # git clone https://git.freebsd.org/src.git . # git config --global pull.ff only ■初回のコピー以降の更新(svnliteコマンドで言うところのsvnlite update) # cd /usr/src # git pull 関係URL等 https://wiki.freebsd.org/git https://github.com/bsdimp/freebsd-git-docs/blob/main/URLs.md https://github.com/bsdimp/freebsd-git-docs/blob/main/doc-cvt.md  → Keeping currentを参照 ■参照するブランチの切り換え https://qiita.com/sunstripe2011/items/53ae4184d021e927b3f3

pip@Python3.7/FreeBSDのメモ

python3.7のpipコマンド関係で個人的覚えておきたい事関係。やれるところはできるだけ追加パッケージなしに行いたいところ、FreeBSDを優先するので他で動く保証はない。他で動かすことがあれば別にメモるかもしれないです...また、現行の知識から理解するため、FreeBSD特有の用語を使用したメモを書いている場合もあります。 ■ドキュメント https://pip.pypa.io/en/stable/ (英語) https://pip.pypa.io/en/stable/reference/ (pipコマンド各オプションのman相当) ■ヘルプを見る $ pip help pipコマンドのヘルプ。全てに言えることだが、Generalを常に表示してくれるため、だいたいlessコマンドなどと併用することになる。 $ pip <pipのコマンド> -h pipのコマンド(install, show, list, search, ...)のオプションを見る。 ■パッケージのインストール $ pip install <パッケージ名> パッケージのインストール。pkg install <パッケージ名>とほぼ同じ。 ■パッケージを検索する。 $ pip search <パッケージ名> pipのリポジトリで登録されているパッケージを検索する。pkg search <パッケージ名>と同じようにパッケージ名に文字が含まれれば出力されるはずなのだが、現状何をしてもエラー判定となるため、追加で設定が必要かもしれない。 ■インストール済みパッケージのアップデート $  pip list -o | sed -n '3,$p' | cut -f1 -d' ' | xargs -I% pip install -U % pipコマンドにはpkg upgrade相当のコマンドはないが、pip list -oコマンドによりアップデートできるパッケージが表示されるので、これをシェルスクリプトによるワンライナーでテキスト加工する。バージョンによってはpip upgradeコマンドが存在するらしいのだが、FreeBSD12.2R/Python3.7.9ではエラーが返ってきてしまった。 user@freebsd:~ ...