Virtual Box 5.0.X での Kernel module rebuild (CentOS7))

今まで(バージョン4.X.X以前のVirtual Box)ではカーネルアップデートの度に
/etc/init.d/vboxdrv setup
というコマンドを入力してVirtual BoxのKernel moduleをリビルドしていた。Virtual Box 5.0.X では,次のように
/usr/lib/virtualbox/vboxdrv.sh setup
とコマンドを入力するとリビルドできる。

ちなみにエラー表示で入力するコマンドを教えてくれるのだが,うまく動作しなかったためこのメモを残しておく。

参考ページ:http://www.if-not-true-then-false.com/2010/install-virtualbox-with-y

[BIOS]mdadmによるRAID1 – 復旧方法 –

——————– 2018/05/26 追記 ——————–

ここでは BIOS により起動するシステムの手順を記載している。UEFI により起動するシステムの手順は 「[UEFI]mdadmによるRAID1 – 復旧方法 –」に記載している。

——————– ここまで            ——————–

 

software RAID である mdadm を使用してインストール時に RAID1 構築し,故障を発生させてディスクを取り替えるテストを行った。
その際の手順を説明する。

このテストは仮想環境(VirtualBox)上で,CentOS7を使用して行った。

    • 仮想マシンの設定
      テスト用に新しい仮想マシンを作成する際に,仮想ハードドライブは8GB(固定サイズ)で作成した。さらに,RAIDを構築するために同じ 8GB(固定サイズ)で仮想ハードドライブを2つ作成した。(一方はインストール時に構築するため,他方は故障させたドライブと交換するため)
      9
      このようにドライブを接続しておく。CentOS7でRAID構成のインストールは調べれば出てくると思うので,インストール手順の詳細は省く。
    • パーティション構成
      パーティションはインストール時に

      /boot: 524 MB
      /    : 6291 MB
      swap : 1767 MB

      という構成で作成した。以下に示したのはコマンドfdisk -lの結果である。

      # fdisk -l
      Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
      Disk label type: dos
      ディスク識別子: 0x0009a438
      
      デバイス ブート 始点 終点 ブロック Id システム
      /dev/sdb1 2048 12298239 6148096 fd Linux raid autodetect
      /dev/sdb2 * 12298240 13322239 512000 fd Linux raid autodetect
      /dev/sdb3 13322240 16777215 1727488 fd Linux raid autodetect
      
      Disk /dev/sda: 8589 MB, 8589934592 bytes, 16777216 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
      Disk label type: dos
      ディスク識別子: 0x00017b65
      
      デバイス ブート 始点 終点 ブロック Id システム
      /dev/sda1 2048 12298239 6148096 fd Linux raid autodetect
      /dev/sda2 * 12298240 13322239 512000 fd Linux raid autodetect
      /dev/sda3 13322240 16777215 1727488 fd Linux raid autodetect
      
      Disk /dev/md127: 6291 MB, 6291390464 bytes, 12287872 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
      
      Disk /dev/md126: 524 MB, 524222464 bytes, 1023872 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
      
      Disk /dev/md125: 1767 MB, 1767833600 bytes, 3452800 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

      この結果の最後に出てくる/dev/md125, /dev/md126, /dev/md127というのはmdadmによって作成されたRAIDデバイスことである。

    • RAIDの状態確認
      RAIDデバイスの状態は cat /proc/mdstat というコマンドで確認できる。

      # cat /proc/mdstat
      Personalities : [raid1]
      md125 : active raid1 sdb3[1] sda3[0]
            1726400 blocks super 1.2 [2/2] [UU]
      md126 : active raid1 sda2[0] sdb2[1]
            511936 blocks super 1.0 [2/2] [UU]
      md127 : active raid1 sdb1[1] sda1[0]
            6143936 blocks super 1.2 [2/2] [UU]
            bitmap: 0/1 pages [0KB], 65536KB chunk
      unused devices: <none>

      この出力の簡単な読み方は,RAIDデバイス/dev/md125を例とすると次のようになる。
      一番左に書かれている”md125”はRAIDデバイス名で,”sdb3[1] sda3[0]”はmd125というRAIDデバイスを構成している物理デバイス名を表している。そして二行目の”[]”の中に書かれているのは物理デバイスの稼働状況を示している。このあとに物理デバイスを故障したと見せかけるのでその時にどうなるかわかるだろう。

    • 物理デバイスを故障させる
      mdadmには物理デバイスを故障したと見せかけるコマンドがある。

      # mdadm --fail [RAIDデバイス名] [故障させる物理デバイス名]
      # mdadm -f [RAIDデバイス名] [故障させる物理デバイス名]

      これを用いて/dev/sdaの物理デバイスを故障させてみる。各RAIDデバイスから/dev/sdaを故障させてcat /proc/mdstatを実行した結果を以下に示す。

      # mdadm -f /dev/md125 /dev/sda
      mdadm: set device faulty failed for /dev/sda:  No such device
      # mdadm -f /dev/md125 /dev/sda3
      mdadm: set /dev/sda3 faulty in /dev/md125
      # mdadm -f /dev/md126 /dev/sda2
      mdadm: set /dev/sda2 faulty in /dev/md126
      # mdadm -f /dev/md127 /dev/sda1
      mdadm: set /dev/sda1 faulty in /dev/md127
      # cat /proc/mdstat
      Personalities : [raid1] 
      md125 : active raid1 sdb3[1] sda3[0](F)
            1726400 blocks super 1.2 [2/1] [_U]
            
      md126 : active raid1 sda2[0](F) sdb2[1]
            511936 blocks super 1.0 [2/1] [_U]
            
      md127 : active raid1 sdb1[1] sda1[0](F)
            6143936 blocks super 1.2 [2/1] [_U]
            bitmap: 1/1 pages [4KB], 65536KB chunk
      
      unused devices: <none>
    • RAIDデバイスから物理デバイスを取り除く(故障後のみ実行可能)
      # mdadm --remove [RAIDデバイス名] [故障させる物理デバイス名]
      # mdadm -r [RAIDデバイス名] [故障させる物理デバイス名]

      このコマンドによってRAIDデバイスから物理デバイスを取り除くことができる。
      以下に実行結果を示す。

      # mdadm -r /dev/md125 /dev/sda3
      mdadm: hot removed /dev/sda3 from /dev/md125
      # mdadm -r /dev/md126 /dev/sda2
      mdadm: hot removed /dev/sda2 from /dev/md126
      # mdadm -r /dev/md127 /dev/sda1
      mdadm: hot removed /dev/sda1 from /dev/md127
      # cat /proc/mdstat
      Personalities : [raid1]
      md125 : active raid1 sdb3[1]
            1726400 blocks super 1.2 [2/1] [_U]
            
      md126 : active raid1 sdb2[1]
            511936 blocks super 1.0 [2/1] [_U]
            
      md127 : active raid1 sdb1[1]
            6143936 blocks super 1.2 [2/1] [_U]
            bitmap: 1/1 pages [4KB], 65536KB chunk
      
      unused devices: <none>

      cat /proc/mdstatの結果からきちんとRAIDデバイスから物理デバイスが取り外されていることがわかる。ここまで長かったが,ようやくハードディスクの取り換えをおこなう。そのためにシャットダウンする。

    • ハードディスクの交換
      (システム領域を含んでいるハードディスクの場合)交換する際にハードディスクの順番を気を付けなければならない。基本的にBIOSは一番若い番号(0番とする)に接続されているハードディスクにboot情報を読み取りに行く。そのため今回のように0番目のハードディスクが故障した場合(Linuxでは基本的に若い番号順にsda, sdb…と割り振られる)1番に接続していたハードディスクを0番に移動し,新しいハードディスクを1番に接続しなければならない。よって次の写真のように接続する。
      11
      今回は仮想環境上で行なっているのでポート番号は簡単にわかるが,実際にハードで行う際にはポートの並び順を確認しておくべきだろう。
    • RAIDデバイスへ新しい物理デバイスの追加
      RAIDデバイスに物理デバイスを追加する前に,正常に稼働している物理デバイスと同じ容量(または大きい容量)になるように新しく交換した物理デバイスのパーティションを切る。長くなってしまうのでパーティションを切る方法はここでは割愛する。
      同じようにパーティションを切ることができたら# mdadm --add [追加先のRAIDデバイス] [追加する物理デバイス]コマンドを用いてRAIDデバイスに追加する。追加した結果を以下に示す。

      # mdadm --add /dev/md125 /dev/sdb2
      mdadm: added /dev/sdb2
      # mdadm --add /dev/md126 /dev/sdb3
      mdadm: added /dev/sdb3
      # mdadm --add /dev/md127 /dev/sdb1
      mdadm: added /dev/sdb1
      # cat /proc/mdstat
      Personalities : [raid1] 
      md125 : active raid1 sdb2[2] sda2[1]
            511936 blocks super 1.0 [2/2] [UU]
            
      md126 : active raid1 sdb3[2] sda3[1]
            1726400 blocks super 1.2 [2/1] [_U]
            [=======>.............]  recovery = 38.3% (661824/1726400) finish=0.3min speed=47273K/sec
            
      md127 : active raid1 sdb1[2] sda1[1]
            6143936 blocks super 1.2 [2/1] [_U]
              resync=DELAYED
            bitmap: 1/1 pages [4KB], 65536KB chunk
      
      unused devices: <none>
    • 新しい物理デバイスにgrub2をインストール
      新しい物理デバイスにはMBRが書き込まれていない,そのため物理デバイスを使用してシステムを起動することができない。MBRを書き込むためのコマンドは# grub2-install /dev/sdbを実行する。
      Installation finished. No error reported.」と表示されれば正常終了。

このようにしてHDDを交換することができる。

CentOS 7 に Chromium をインストール

ソースをビルドしてインストールする方法を説明します。

http://software.opensuse.org/package/chromium を開くと

スナップショット1

のページが開かれると思います。このページの下の「他のバージョンを表示」→CentOS7の部分の「不安定版を表示」→「ソース」を順にクリックしてダウンロードします。現在は chromium-38.0.2125.104-38.13.src.rpm でした。
rpmbuildコマンドを使って、SRPMからRPMをリビルドする。(かなり時間がかかります。)

# rpmbuild --rebuild chromium-38.0.2125.104-38.13.src.rpm

依存性の関係でリビルドできない場合は,必要なパッケージをインストールしてリトライする。
リビルドできたら~/rpmbuild/RPMS/x86_64以下にrpmファイルができているので

# rpm -ivh chromium-38.0.2125.104-38.13.x86_64.rpm

でインストールする。

スナップショット2

完了!

Centos7 に unar をインストールする

Windowsで圧縮(zip形式)したファイルをCentos7でunzipコマンドで解凍すると文字化けが発生するのでそれを対処するためにunarをインストールした。

unar は The Unarchiver の略でサポートしているフォーマット(サポートフォーマット)が豊富で,中身の文字エンコードも自動で認識してくれる。頭がいいソフトみたいだ。このソフトをインストールしていく。

Ubuntu や Fedora にはパッケージが配布されているみたいだが,Centos にはなかった。そこで,Centos7と同等であるFedora19 の srpm をダウンロードしてインストールすることにした。

↑ 現在(2016/07/30)は epel にて rpm が配布されています。
epelリポジトリの設定をしていれば
# yum install unar
でインストールできます。[2016/07/30 追記]

srpm のダウンロード
# wget http://rpm.pbone.net/index.php3/stat/26/dist/86/size/2416240/name/unar-1.8.1-1.fc19.src.rpm
# wget ftp://ftp.naist.jp/pub/Linux/fedora/updates/testing/19/SRPMS/unar-1.8.1-1.fc19.src.rpm
ダウンロードしたファイルを rpm-build する。
# rpmbuild --rebuild ./unar-1.8.1-1.fc19.src.rpm
ビルドされたファイルが ~/rpmbuild/RPMS/x86_64/ 以下にあるので
# rpm -ivh ~/rpmbuild/RPMS/x86_64/unar-1.8.1-1.el7.centos.x86_64.rpm
でインストール。

unar を用いての解凍は簡単で test.zip を解凍するならば
$unar test.zip
で解凍できる。

基本的な使用方法が載ったページがあったので参考までに
http://qiita.com/twittarsan/items/550b18c222ceb75d0181

VMware Player に Windows 7 をインストール してAeroを使用出来るようにする

前回の投稿で導入したVMware Player に Windows 7 をインストールした。

記録が残ってないが、最初にインストールしたVMware Playerのバージョンは7.1.0だったのだが、このあとに説明する操作を行なっても3Dアクセラレーションが動作しなかった。調べていたらVMware Playerの中で動いているVMware Workstation バージョン 11には次の問題があるようだ

Screenshot_from_2015-03-16 11:13:16
VMware Workstation 11.0 Release Notes より)

よって今のホストOS CentOS 7 では 3D アクセラレーションを使用することができないみたい・・・
ということで VMware Workstation 10 を使用している VMware Player 6.0.5 をインストールした。ちなみにアンインストールは次のコマンドで行う
# bash VMware-Player-7.1.0-2496824.x86_64.bundle --uninstall-component=vmware-player
または
# vmware-installer -u vmware-player ←未確認
でもできるみたいだ。

ではWindows 7インストールしていきます!

VMware Player のホーム画面から Create a New Virtual Machine を選択

Screenshot_from_2015-03-16 11:46:06
このような画面が開く。ここでインストールするイメージファイルを選択するか、ドライブを選択して簡単インストールを行います。このあとも表示にしたがって選択していくとインストールが開始されます。
Screenshot_from_2015-03-16 12:07:24
しばらく待ちます。
Screenshot_from_2015-03-16 13:21:21
完了!

初期状態では起動時に

Screenshot from 2015-03-16 13:19:41
と表示されて3D support がサポートされていないと言われ、このままではAeroを使用することができない。
ここで、/home/[ユーザー名]/vmware/[VM名]/[VM名].vmx ファイルの中に次の記述をどこでもいいので書き込む

mks.gl.allowBlacklistedDrivers = "TRUE"

このようにすると起動時に先ほどのようなエラーは表示されず Aero が使用出来るようになる。

Screenshot_from_2015-03-16 13:35:18

——————– 追記 ——————–
上で書いた内容だけでは(CPU内蔵グラフィックを利用する場合)不十分だったので付け加えておく。
もうひとつ必要なものとして driconf というものが必要である。

このソフトをインストールするのに次のページを参考にした。
http://ameblo.jp/yukisku/entry-11777593255.html

sourceforge.jp
sourceforge.jp(2)
からdriconf-0.9.1.tar.gzをダウンロードしてきて

$ tar -zxf driconf-0.9.1.tar.gz
$ cd driconf-0.9.1
# python setup.py install
# cp driconf.desktop /usr/share/applications/driconf.desktop

を実行して”3D Acceleration”というソフトを起動して”Image Quality”というタブの中の一番上”Enable S3TC …”をクリックして”はい”にする。

以上の操作をすべて行うと3D supportが有効になる。

CentOS 7にVirtual Boxをインストール

https://www.virtualbox.org/ を参考にしながらインストール
このサイトについて
Downloads →VirtualBox x.x.xx for Linux hosts
と順にクリックしていき
Oracle Linux 7 (“OL7”) / Red Hat Enterprise Linux 7 (“RHEL6”) / CentOS 7
の右にある AMD64 をクリックして rpm ファイルをダウンロードする。

terminal から root になり

# rpm -ivh VirtualBox-4.3-4.3.24_98716_el7-1.x86_64.rpm

とコマンドを実行する。
このとき Qt関係のパッケージがインストールされていないと、以下のようなエラーがでます。

エラー: 依存性の欠如:
libQtCore.so.4()(64bit) は VirtualBox-4.3-4.3.24_98716_el7-1.x86_64 に必要とされています
libQtGui.so.4()(64bit) は VirtualBox-4.3-4.3.24_98716_el7-1.x86_64 に必要とされています
libQtNetwork.so.4()(64bit) は VirtualBox-4.3-4.3.24_98716_el7-1.x86_64 に必要とされています
libQtOpenGL.so.4()(64bit) は VirtualBox-4.3-4.3.24_98716_el7-1.x86_64 に必要とされています

この場合

  • libQtCore.so.4
  • libQtNetwork.so.4

はパッケージ qt(Qt toolkit)に含まれており、

  • libQtGui.so.4
  • libQtOpenGL.so.4

上記の2つはパッケージqt-x11(Qt GUI-related libraries)に含まれているので

# yum -y install qt qt-x11

を実行すると解決できる。

Screenshot_from_2015-03-13 14:48:23

インストール完了!

—– 追記 —–
ちなみに、Virtual Boxのゲスト側でUSBを利用するためにはホスト側のユーザーがvboxusersというグループに属していないとならない。

# gpasswd -a ユーザー名 vboxusers

このコマンドで自分のユーザーをvboxusersに加えておきましょう。

 

NVIDIA driver を ノートPC に インストール

NVIDIA Optimus technology を使用しているノートパソコンにCentOS 7 をインストールしてドライバをインストールした。通常のデスクトップパソコンであれば、 NVIDIA のホームページ からドライバをダウンロードしてインストールすればいいのだが、NVIDIA Optimus technology を使用しているノートパソコンでは勝手が違い、ドライバの他にもbumblebee というものをインストールする。

*ドライバや bumblebee をインストールするのに ELRepo を利用するのでその導入

ELRepo : HomePage に書かれている通り

  1. パブリックキーをインポートする
    # rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
  2. CentOS 7 用の ELRepo をインストールする
    # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

で ELRepo の導入完了。

*ドライバ等のインストールと設定

https://www.centos.org/forums/viewtopic.php?t=7303 を参考にした。

  1. xorg の設定ファイルをバックアップする。設定ファイルは /etc/X11/xorg.conf にあるが特に設定していない人は無い。
  2. 次のコマンドを実行しインストールする。
    # yum install -y kmod-nvidia
    # yum install -y kmod-bbswitch
    # yum install -y VirtualGL
    # yum install -y bumblebee
  3. ファイル /etc/ld.so.conf.d/nvidia.conf を削除してコマンド /sbin/ldconfig を実行する。
  4. 1.で取ったバックアップを復元する。
  5. ファイル /usr/share/applications/nvidia-settings.desktop を編集する
    Exec=nvidia-settings → Exec=optirun nvidia-settings -c :8.0
  6. GPUを利用するユーザーを グループ bumblebee に追加する
    # gpasswd -a ユーザー名 bumblebee
  7. ファイル /etc/bumblebee/bumblebee.conf を編集する
    Driver=          → Driver=nvidia
    KernelDriver=    → KernelDriver=nvidia
    PMMethod=auto    → PMMethod=bbswitch
    LibraryPath=     → LibraryPath=/usr/lib64/nvidia:/usr/lib64/vdpau
    XorgModulePath=  → XorgModulePath=/usr/lib64/xorg/modules/extensions/nvidia,/usr/lib64/xorg/modules
  8. 再起動する。
  9. 確認&テスト
    アプリケーション → その他 → NVIDIA X Server Settings を開く
    設定画面が開きGPUの情報が表示されていればOK
    また、次のコマンドを実行する
    $ optirun glxgears
    このあとに次の画面が表示されていればOK
    Screenshot_from_2015-03-15 15:57:06

インストール後はプログラムを実行する際に optirun [プログラム名] とコマンド実行すれば描画にGPUが使用される。

CentOS 7 に tgif インストール

卒論の中に挿入する図を作成するのに必要となったので tgif をインストールした。

基本的に次のページと同じ方法でインストールできる。

centos6にtgifをインストール

途中いくつかはじかれたのでその点を挙げておく。

  1. xorg-x11-jpfonts-4.0-2vl6.src.rpm のダウンロードではバージョン変更のため
    ダウンロード先は
    ftp://ftp.ics.es.osaka-u.ac.jp/pub/mirrors/Vine/VineSeed/SRPMS.plus/xorg-x11-jpfonts-4.0-3vl7.src.rpm
    に変更
  2. rpmbuild –rebuild tgif-4.2.2-1vl5tpu0.src.rpm  でリビルドしたとき
    z_intrf.c:26:18: fatal error: zlib.h: No such file or directory
    #include <zlib.h>
    と”zlib.h”ファイルないぞと怒られたので
    # yum install zlib-devel
    して解決
  3. rpmbuild –rebuild –nodeps ftdumps-0.1.1-1vl5.src.rpm  でリビルドしたとき
    ftdumpmain.h:3:22: fatal error: ft2build.h: No such file or directory
    #include <ft2build.h>
    とこれまた”ft2build.h”怒られてしまったので
    # yum install freetype-devel
    して解決
  4. 知ってると思うが途中の ”i386″ は “x86_64” に読み替え
  5. 最後に tgif をインストールするときに
    “netpbm-progs” と “xorg-x11-fonts-misc” が必要と言われたので
    yum でインストールすればOK

2, 3, 5のパッケージの依存性の関係はシステムによって違うので出ない人もいるかもしれないが…

起動

 

tgif