実マシンの仮想化 Lesson 2 ディスクのコピー

コピーに使用する実マシンは,第2 Workstation(WS)の第2 OSであるDebianです.

ディスクイメージは,今回update不能と判断したqcow2を使います.formatはしません.まるまるコピーするときはformatしたほうがあとのコピーが速いケースが多いですが,update不能なほど古いとはいえManjaro同士なので多少そのまま使えるファイルがあってコピーが早く済むかなと期待しました.

実Manjaro (第2 WSの第1 OS)を念の為read onlyで,Debianにマウントし,仮想ディスクは,nbdのモジュールを使って,write enableでマウントしました.

コピーはrsyncでします.

実マシンのディスクスペースは400GBなのに対して仮想マシンは80GBしかないので,Raspberry Piのバックアップや,ISOファイルづくりの過程や完成品などはコピーしないよう,rsyncのフィルター設定をしました.

途中でなんか余計なもののコピーを始めたら,とめて,フィルターを追加してまたコピーし直すというのができるのが,rsyncでするコピーの大きなメリットです.

20分ほどでコピーが終わったので,/etc/fdiskを修正して今夜は終わりにします.

実マシンの仮想化 Lesson 1 予習

振り返ると,一昨年末から昨年初めくらいにかけて,仮想マシンの実マシン化,実マシンの仮想マシン化をしていたようです

手順としては,

  • qcow2のディスクイメージを作るかどこからか持ってきて,パーティションを切って,formatする
  • メインディスクの部分を実マシンにマウントして,rsyncで実マシンの内容をコピーする(/devに注意が必要)
  • 起動の仕組みをなんとかする

です.しかし,考えてみると/devの中身はディスクが活きているとudevがマウントされていて,起動に必要不可欠なディバイスがない可能性があります.

そこで,別の実マシンを起動して,実マシンのディスクも読み込み専用にして,コピーすることにします.そのためというわけではないですが,サブマシンは,dual bootできるようになってますから,その利便性を活用しない手はないです.死んだディスクから死んだディスクへのコピーですから,/devなども何も考えないでコピーできます(完全なクローニング).

となると,起動の仕組みをなんとかするのが唯一頭を使う作業です.クローニングした仮想ディスクイメージをマウントして,chrootしてちょちょいのちょいと行きたいところですが,実マシンはUEFIのgrubで起動していますが,仮想マシン環境でUEFIの環境を整えるのはかなり困難なようなので整えていませんからコピー先の仮想マシンの仮想ディスクのマウントポイントにchrootしてgrubのインストールコマンドを実行すると,UEFIでないgrubがちゃんとインストールはされないはずです.

じゃどうすればいいかというと,たぶん,ManjaroのインストールDVDイメージから起動してそこにクローニング完了した仮想ディスクをマウントしてchrootしてgrubのインストールコマンドを実行すれば良いのだと思います.

と思ったけど,当BLOGの記事を調べてもよく解りません.そんなに昔じゃないけどすっかり忘れた感じです.

Postfixを試す (7) Avahiのbuildで難航

Postfixを試すのにAvahiが要るのか,という疑問もあるかと思いますが,筆者のLAN内ではAvahiを有効利用しているので,テストの準備などのいろんな手続きをスムーズにするためインストールすることにしました.

Slackware (64, ARM) 15.0用としてSlackBuildszeroconfのサーバーであるAvahi,クライアントであるnss-mdns,そしてAvahiに必要なライブラリーlibdaemonが用意されています.したがって,libdaemonからの順番で,sbopkg -iすれば,インストール完了します.実際,SlackwareARM 15.0のとあるマシンでは,そのようにして他のマシンを参照するのも,他から参照されるのもうまく機能しています.

ところがどっこい,Postfixのテスト用に仕立てたSlackware 15.0 (32bit)の仮想マシンでは,Avahiのbuildができません.gtk+2のバージョンが必要条件(>=2.14.0)を満たしていないとconfigureスクリプトが文句を言いますが,pkgtoolで確認するとちゃんと条件を満たしています(2.24.33).エラーメッセージは的が外れているけど,なにか確かにエラーがあるに違いないです(よくあることです😥).

うまくいったSlackwareARMと失敗したSlackware (32bit)の違いは,もちろんアーキテクチャーや,実マシン・仮想マシンの違いがありますがそれらは別にして,X, XAP, KDEをインストールしていないことです.リモートで運用・管理するのが前提なので,そもそもGUIは要りませんので,省略することによってシステムの容量を減らすことができると考えました.

しかし,これがどうもいけないようです.そもそもAvahiにGUIは関係ないと思うのですが,なんか必要なライブラリーがGUIのライブラリーと依存関係にあるとかないとかいうことでしょうか.知らんけど😥

必要最低限のライブラリーを見つけ出してインストールするというのがGUIをインストールしなかった初期の方針に沿う方法でしょうけど,時間が無駄にかかりますので,ここは諦めて,XとXAPはインストールすることにします(いくらなんでもKDEは要らんでしょう😥).

ここも,ここまでいじってきたシステムにXとXAPを追加してインストールすればいいんですが,完成したときにクリーンインストールからの最小手順だったという形にしたいので,また箱庭を消してゼロからやります.

Postfixを試す (6) Slackware 15.0の仮想マシン作成

とりあえず,いくつかの仮想マシンは問題なく動いているようです.かつて経験した,仮想マシンがディスクエラーを起こして,ホストごとフリーズしてしまう現象はいまのところ起きていません.SATAのポートを試しに替えたから良かったのか,たまたま発生していないのかはわかりません.

さて,ようやくPostfixを試す第一歩である,Slackware 15.0のインストールまでこぎつけました.

慣れ親しんだSlackwareですが,インストールはそうしばしばやるわけではないので,いろいろ忘れてます.砂の箱庭と同じで,失敗したら消してやり直しを繰り返しているうちに,少しずつ思い出してきました.

仮想マシンでGRUB2を使う場合,UEFIは可搬性が低くいので,UEFIなしのGRUB2のインストールをします.この場合, “BIOS boot” というパーティションが必要で,Wikipediaによれば最低1MiBあれば良いとのことなので,とりあえず2MiBとしておきました.

LILOをインストールしないので,ソフトウェアのパッケージのインストールが済んでも仮想ディスクから起動することはできず,もう一度DVDを使い,ルートに仮想マシンのパーティションを指定してブートして,GRUB2のインストールをします.

これで仮想ディスクからブートできればあとは難しいところはなく,slackpkgでパッチ当てをしたり,メインユーザーを作ってsudoerに加えたりあたりをして,とりあえずクリーンインストールは完了です.

ここで,rootでログインした状態でsnapshotを撮っておきました.

仮に成功したとしても,仮想マシンでUEFIの環境を持っているものは少ないので,他のマシンに持っていってブートする可能性が低い.
というか,そもそも筆者のManjaroのKVM/QEMU環境ではUEFIの仮想マシンは動かないと思います.
whoisだけ,たぶんGPGkeyによる検証が失敗したようで,エラーとなってupdateできませんでした.次のパッチのリリースまで待つしかないです.

Postfixを試す (5) KVM仮想マシンの現状

保有する仮想マシンの現状確認・updateは,なかなか惨憺たる結果となりました.

debian-10-brokenは,ログインできないので消すしかありません.また,slackware-ex-real-brokenも,greeterが出ません.run level 3でログインできる可能性がありますが,Slackware64 14.2ベースなので,取っておく価値はありません.

gentooの2つは,長らく放置していてupdateできるはずがないので,不戦敗2です.

Manjaroについては,前の記事で書いたとおり絶望的です.

Ubuntuはかつて別々のWSで動いていた仮想マシンです.どちらも20.04.xで,最新の20.04.4にupdateできましたが,日本語入力ができません

日本語入力については,Debianの実マシンから仮想化したdeb-realも同様にできません.

となると,日本語は入力できないけどup-to-dateにできるのが,deb-real, ubuntu20.04LTS, ubuntu64の3つだけとなります.システムは起動するけどupdateできなのが,manjaro-ex-real-broken,GUIにログインできないのがslackwere-ex-real-broken,ログインが全くできないのがdebian10-brokenということです.

一番ひどいdebian10-brokenを消して,Slackware 15.0をインストールするスペースにします.

名前に “64” が入っていないから32bitということではなくどちらもx86_64です.