変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

Linux

clamd failed

ただ/var/run/clamav/ を作りなおしてもダメらしい。
作ってもすぐ消される。
# systemctl -l status clamd
clamd.service – SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server.
   Loaded: loaded (/etc/rc.d/init.d/clamd)
   Active: failed (Result: exit-code) since 木 2014-12-18 20:06:42 JST; 20min ago
  Process: 1077 ExecStart=/etc/rc.d/init.d/clamd start (code=exited, status=1/FAILURE)
 systemd[1]: Starting SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server….
 clamd[1099]: clamd daemon 0.98.4 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
 clamd[1099]: Log file size limited to 4294967295 bytes.
 clamd[1099]: Reading databases from /var/clamav
 clamd[1099]: Not loading PUA signatures.
 clamd[1099]: Bytecode: Security mode set to “TrustSigned”.
 clamd[1099]: Loaded 3709847 signatures.
 clamd[1099]: TCP: Bound to address 127.0.0.1 on port 3310
 clamd[1099]: TCP: Setting connection queue length to 30
 clamd[1099]: LOCAL: Socket file /var/run/clamav/clamd.sock could not be bound: No such file or directory
 clamd[1099]: Can’t unlink the socket file /var/run/clamav/clamd.sock
 clamd[1077]: Starting Clam AntiVirus Daemon: ERROR: LOCAL: Socket file /var/run/clamav/clamd.sock could not be bound: No such file or directory
 clamd[1077]: ERROR: Can’t unlink the socket file /var/run/clamav/clamd.sock
 clamd[1077]: [失敗]
 systemd[1]: clamd.service: control process exited, code=exited status=1
 systemd[1]: Failed to start SYSV: Clam AntiVirus Daemon is a TCP/IP or socket protocol server..
 systemd[1]: Unit clamd.service entered failed state.
 
ググってみるとシャットダウン時に消しているらしいので起動時に作り直す様にした。
# vi /etc/rc.d/init.d/clamd
start(){
        echo -n “Starting Clam AntiVirus Daemon: “
        # ClamAV起動前にディレクトリを作成するようにした
        mkdir /var/run/clamav > /dev/null 2>&1
        chown clamav:clamav /var/run/clamav > /dev/null 2>&1
        daemon clamd
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/clamd
    return $RETVAL
}
stop() {
        echo -n “Stopping Clam AntiVirus Daemon: “
        killproc clamd
        rm -f /var/clamav/clamd.socket
        rm -f /var/run/clamav/clamav.pid
        RETVAL=$?
        echo
    ### heres the fix… we gotta remove the stale files on restart
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/clamd
    return $RETVAL
}
 



kdump failed

# systemctl  で観ていたら
kdumpがfailedになっていた。
※KVMのホストでは発生していないのは謎。
# system status kdump で観てみると

No memory reserved for crash kernel.

とあったので、起動時の問題っぽいから・・・
# vi /etc/default/grub
GRUB_CMDLINE_LINUX=”rd.lvm.lv=centos/swap console=ttyS0,115200n8 crashkernel=auto vconsole.keymap=jp106 rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16″

GRUB_CMDLINE_LINUX=”rd.lvm.lv=centos/swap console=ttyS0,115200n8 crashkernel=128M vconsole.keymap=jp106 rd.lvm.lv=centos/root vconsole.font=latarcyrheb-sun16″
と設定を変え設定値で更新。
# grub2-mkconfig -o /boot/grub2/grub.cfg
再起動。
# reboot
するといいらしい。



WindowsPCの共有フォルダをLinuxで借りる方法

Androidのソースが大きすぎるのでWindowsPCのHDDを間借りすることにした。
# yum -y install cifs-utils
インストール:
cifs-utils.x86_64 0:6.2-6.el7
依存性関連をインストールしました:
libldb.x86_64 0:1.1.16-4.el7             libtalloc.x86_64 0:2.0.8-4.el7
libtdb.x86_64 0:1.2.12-3.el7             libtevent.x86_64 0:0.9.18-6.el7
libwbclient.x86_64 0:4.1.1-37.el7_0      pytalloc.x86_64 0:2.0.8-4.el7
samba-libs.x86_64 0:4.1.1-37.el7_0
完了しました!
# mkdir   /フォルダ
WindowsPC側で
共有するためのアカウントと共有フォルダを作る

アカウントは何でもいいが、パスワードを付けないとWindowsUpdateを全くやっていない一部のXP以外はネットワーク接続ができない。

共有するフォルダのプロパティで【共有】タグで【共有】ボタンを押し、先のアカウントで読み書きできるようにする。

# mount -t cifs -o user=ユーザ,password=パスワード //WindowsPCのIPアドレス/共有フォルダ   /フォルダ
#
何も出ないけど使える。
自動接続する場合は
echo //WindowsPCのIPアドレス/共有フォルダ /フォルダ cifs user=ユーザ,password=パスワード,defaults 0 0 >> /etc/fstab
でいいらしい。
しかしandroidのソースをコピーしてみると
cp: シンボリックリンク `/フォルダ/android-x86/ndk/sources/cxx-stl/llvm-libc++/libcxx/test/strings/basic.string/string.nonmembers/string_opgtEQ’ を作成できません: サ ポートされていない操作です
と出てきた。シンボリックリンク は使えないらしい。
もちろん repo init すら通らない。
Get http://git.android-x86.org/manifest
Traceback (most recent call last):
File “/フォルダ/android-x86/.repo/repo/main.py”, line 500, in <module>
_Main(sys.argv[1:])
File “/フォルダ/android-x86/.repo/repo/main.py”, line 476, in _Main
result = repo._Run(argv) or 0
File “/フォルダ/android-x86/.repo/repo/main.py”, line 155, in _Run
result = cmd.Execute(copts, cargs)
File “/フォルダ/android-x86/.repo/repo/subcmds/init.py”, line 390, in Execute
self._SyncManifest(opt)
File “/フォルダ/android-x86/.repo/repo/subcmds/init.py”, line 163, in _SyncManifest
m._InitGitDir(mirror_git=mirrored_manifest_git)
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2076, in _InitGitDir
self._UpdateHooks()
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2098, in _UpdateHooks
self._InitHooks()
File “/フォルダ/android-x86/.repo/repo/project.py”, line 2126, in _InitHooks
os.symlink(os.path.relpath(stock_hook, os.path.dirname(dst)), dst)
OSError: [Errno 95] Operation not supported
とは云え
# df -H
ファイルシス              サイズ  使用  残り 使用% マウント位置
/dev/mapper/centos-root      41G   22G   19G   55% /
devtmpfs                    1.7G     0  1.7G    0% /dev
tmpfs                       1.8G     0  1.8G    0% /dev/shm
tmpfs                       1.8G  9.0M  1.7G    1% /run
tmpfs                       1.8G     0  1.8G    0% /sys/fs/cgroup
/dev/sda2                   521M  168M  354M   33% /boot
/dev/sda1                   210M   10M  200M    5% /boot/efi
/dev/mapper/centos-home      20G   34M   20G    1% /home
/dev/sdb1                    63G   21G   39G   35% /usbSSD
//WindowsPCのIPアドレス/共有フォルダ  3.1T  537G  2.5T   18% /フォルダ
3.1Tは魅力的なサイズだ。(大笑
http://thinkit.co.jp/free/tech/26/4/1.html などを見てダミーファイルを作ろうとしたが
# dd if=/dev/zero of=/フォルダ/ext3.img bs=1G count=1 seek=128
何時まで経っても終わらないので・・・
dd のseek オプションで一瞬で大きなファイルを作るを参考に
128GB=128 × 1024 (MB) × 1024 (KB) × 1024 (B)=137438953472 だから
# dd   if=/dev/zero   of=/フォルダ/ext3.img  seek=137438953472   bs=1   count=1
1+0 レコード入力
1+0 レコード出力
1 バイト (1 B) コピーされました、 0.00187216 秒、 0.5 kB/秒
で、サクっとエリアを借り、フォーマット
# mkefs -t ext4  /フォルダ/ext3.img
ke2fs 1.42.9 (28-Dec-2013)
/フォルダ/ext3.img is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
8388608 inodes, 33554432 blocks
1677721 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2181038080
1024 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): [ENTER]done
Writing superblocks and filesystem accounting information:
長い。タスクマネージャで調子を見ていたらHDDの起動音が・・・ディスクが止まっていたらしい。すぐに
done
メモリが24GBなのでキャシュしていたのかな?
ま、他にも何かあるのかもしれない。
適当にマウントしてみると
# df -h
ファイルシス              サイズ  使用  残り 使用% マウント位置
・・・
//WindowsPCのIPアドレス/共有フォルダ   2.8T  756G  2.0T   28% /フォルダ
/dev/loop0                  126G   61M  120G    1% /ext3.imgをマウントしたフォルダ
とりあえずコレでシンボリックリンクも貼り放題。
巨大なファイル(qemuのイメージファイルとか)のコピーをWindowsのタクスマネージャで見てみると、瞬間最大で100MB/秒強(LANが1Gbpsなので上限値)とか、USB2でSSDにつなぐより速いのでrepoのダウンロードも短くて済みそうだが、nucのCPUファンが唸りっぱなしになった。
 
いつも使う訳ではないのでスクリプトで切り替える様にする
ssdmount.sh

 # WindowsPCのIPアドレス
WINPC_IP_ADDRESS=192.168.*.*
# WindowsPCの共有フォルダ
WIN_SHARE_FOLDER=共有フォルダ名
# WindowsPCのアカウント
WIN_ACC=user=ユーザ名,password=パスワード
# 共有フォルダのマウント先
WINPC_SHARE_MOUNT_POINT=マウントするフォルダ名
# WindowsPCの共有フォルダにあるext4イメージファイル
EXT_IMG=${WINPC_SHARE_MOUNT_POINT}/イメージファイル名
# ext4イメージファイルのマウント先
EXT4_MOUNT_POINT=イメージファイルをマウントするフォルダ名
#
if [ “$1” == “-u” ]; then
    echo  umount  mode
    mount  |  grep  “on ${EXT4_MOUNT_POINT}”
    mount  |  grep  “on ${WINPC_SHARE_MOUNT_POINT}”
    #EXT4イメージをアンマウント
    umount  ${EXT4_MOUNT_POINT}
    #共有フォルダをアンマウント
    umount  ${WINPC_SHARE_MOUNT_POINT}
elif [ “$1” == “-m” ]; then
    echo  mount  mode
    #共有フォルダをマウントするフォルダを作る
    if [ ! -e ${WINPC_SHARE_MOUNT_POINT} ]; then
        echo  make ${WINPC_SHARE_MOUNT_POINT}
        mkdir  ${WINPC_SHARE_MOUNT_POINT}
        chmod  0777  ${WINPC_SHARE_MOUNT_POINT}
    fi
    #EXT4イメージファイルをマウントするフォルダを作る
    if [ ! -e ${EXT4_MOUNT_POINT} ]; then
        echo  make ${EXT4_MOUNT_POINT}
        mkdir  ${EXT4_MOUNT_POINT}
        chmod  0777  ${EXT4_MOUNT_POINT}
    fi
    #共有フォルダをマウント
    mount -t cifs -o ${WIN_ACC}    //${WINPC_IP_ADDRESS}/${WIN_SHARE_FOLDER}    ${WINPC_SHARE_MOUNT_POINT}
    #EXT4イメージをマウント
    if [ -e ${EXT_IMG} ]; then
        mount   ${EXT_IMG}    ${EXT4_MOUNT_POINT}
    fi
    mount  |  grep  “on ${EXT4_MOUNT_POINT}”
    mount  |  grep  “on ${WINPC_SHARE_MOUNT_POINT}”
else
    echo unknown mode [$1].
    echo option -m or -u.
fi

いつも思うけど、手打ちしたものをシェルスクリプトにしてしまうと長くなるなぁ~
しかし、WindowsPC側にEXT4イメージファイルを配置してnucから使うのはトリッキーではあるけれど・・・
チョット使ってみたいのでKVMゲストをWindowsPCに作るには便利だ。
バックアップも取りやすい。
Windows10のプレビュー版もモサモサと動く(サクサクではない
 
参考 : http://ry.tl/mount.html



【KVMゲスト】Android-x86でWifiしたい・・・ing

https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/chap-Virtualization_Host_Configuration_and_Guest_Installation_Guide-PCI_Device_Config.html#sect-Virtualization_Host_Configuration_and_Guest_Installation_Guide-PCI_Assignment-AI_device_to_a_host
を見ると
 
# vi /var/log/dmesg
[    4.871293] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUG disabled
[    4.871299] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEBUGFS enabled
[    4.871304] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TRACING disabled
[    4.871307] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_DEVICE_TESTMODE disabled
[    4.871311] iwlwifi 0000:02:00.0: CONFIG_IWLWIFI_P2P disabled
[    4.871315] iwlwifi 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6235 AGN, REV=0xB0
[    4.871353] iwlwifi 0000:02:00.0: L1 Disabled; Enabling L0S
# lspci | grep Centrino
02:00.0 Network controller: Intel Corporation Centrino Advanced-N 6235 (rev 24)
# virsh nodedev-list –cap pci
pci_0000_00_00_0
pci_0000_00_02_0
pci_0000_00_16_0
pci_0000_00_19_0
pci_0000_00_1a_0
pci_0000_00_1b_0
pci_0000_00_1c_0
pci_0000_00_1c_2
pci_0000_00_1d_0
pci_0000_00_1f_0
pci_0000_00_1f_2
pci_0000_00_1f_3
pci_0000_02_00_0
# virsh nodedev-dumpxml pci_0000_02_00_0
<device>
<name>pci_0000_02_00_0</name>
<path>/sys/devices/pci0000:00/0000:00:1c.2/0000:02:00.0</path>
<parent>pci_0000_00_1c_2</parent>
<driver>
<name>iwlwifi</name>
</driver>
<capability type=’pci’>
<domain>0</domain>
<bus>2</bus>
<slot>0</slot>
<function>0</function>
<product id=’0x088e’>Centrino Advanced-N 6235</product>
<vendor id=’0x8086′>Intel Corporation</vendor>
</capability>
</device>
# virsh edit Android4.4
<controller type=’virtio-serial’ index=’0′>
<address type=’pci‘ domain=’0x0000‘ bus=’0x02 slot=’0x00‘ function=’0x0‘/>
</controller>
がダメ。

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
    </hostdev>
が
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>
に書き換わったけど変更はできた。

# virsh start Android すると
エラー: ドメイン Android4.4 の起動に失敗しました
エラー: サポートされない設定: host doesn’t support passthrough of host PCI devices
それどころかホストがらの切り離しにも失敗。
# virsh nodedev-dettach pci_0000_02_00_0
エラー: デバイス pci_0000_02_00_0 の切断に失敗しました
エラー: この操作はサポートされていません: neither VFIO nor KVM device assignment is currently supported on this system
 



KVMゲストがSPICEでつながらなくなった?

原因は不明。
yum update したら
いっぱいアップデートがあがったせい?
よく判らないから、/etc/libvirt/qemu.conf を一旦戻し、
spice_tls = 0 を付けてみた。
libvirt で qemuの disable-ticketing
の設定方法は不明のまま。
http://www.spice-space.org/page/SSLConnection の記事が更新されていたのも気になっている。
X-Windowを入れてデスクトップでも確認できるようにした方がよさそう。
参考1:http://manual.geeko.cpon.org/ja/cha.libvirt.connect.html#sec.libvirt.connect.auth.libvirt.sasl
参考2:http://www.atmarkit.co.jp/ait/articles/1006/29/news083.html
ブリッジ接続(br0)をDHCPからstaticにIPを割り振ったのも影響しているかもしれない。
 
しばらくして、SPICEの繋ぐIPアドレスはKVMのゲストではなく、KVMのホストの方だったと思い出した。(大笑
アップデートのおかげなのか?qemu.confを元に戻してもつながるようになった。(感謝感謝
これで電子証明書は無駄になったけどいいや(笑
 
前に買った中華タブレットが不調なのでまた大きな画面でAndroid4.4で遊べるようになるのは助かる。
 



Android X86 4.4 RC2 を入れてみた

# wget http://sourceforge.net/projects/android-x86/files/Release%204.4/android-x86-4.4-RC2.iso/download
100%[======================================>] 348,127,232 3.49MB/s 時間 2m 31s
2014-11-18 18:21:18 (2.20 MB/s) – `download’ へ保存完了 [348127232/348127232]
# mv download android-x86-4.4-RC2.iso
# mv android-x86-4.4-RC2.iso /tmp
パーテーション設定でディスクが認識せず失敗。
リセットすると
Booting from Hard Disk
Boot failed: not a bootable disk
No bootable device.
何が悪いんだろう・・・
1.CentOS7は64ビット(x86_64)。これでデバイスをうまくいかないのは、AndroidX86が32ビット版だからだろう。

※x86 だけど _64が付くとは書かれてない。

2.だからrhel7もダメ。でもrhel6でもダメで、rhel5で落ち付いた。
【動いたスクリプト】

#ネットワークインストールするリポジトリURL指定
IMAGE=/tmp/android-x86-4.4-RC2.iso

#KVM上での名前を指定
IMAGE_NAME=Android4.4
IMG_PATH=/var/lib/libvirt/images

#virt-installでインストールする
  virt-install \
  --name ${IMAGE_NAME} \
  --ram 1024 \
  --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=16,format=qcow2 \
  --vcpus=1 \
  --os-type linux \
  --os-variant=rhel5 \
  --arch=i686 \
  --accelerate \
  --graphics spice,listen=0.0.0.0 --channel spicevmc \
  --cdrom=${IMAGE}

 ※修正個所 

CFDISKコマンドがfdiskとちょっと違うので、このページの通りにやった方がよさそう。
ネットワークはWifiがうまくいっていないが youtobeも観れるし、中で端末ターミナルを実行すると ip addr で IPアドレスが取れてたからキニシナイ方針。
Googleアカウントを登録しておけばPlayStoreも使えるみたいだ。
他のAndroidエミュレータなどよりは速く動いている感じがする。
spiceでマウスを画面の外に出すにはShift+F12
AndroidX86を正しくシャットダウンするには、Spiceの画面上部分の時刻表示のある黒いバーをマウスでダラダラとドラッグすると、POWER OFFってボタンが出てくるので、それを押す。
デバッグするアプリを放り込む方法が思いつかない。 ←重要!
 



update phpmyadmin

いつまでもアップデートしないと思ったらリポジトリィがepelだった。

yum --enablerepo=epel update phpMyAdmin
================================================================================
  Package            アーキテクチャー
                                    バージョン                リポジトリー  容量
 ================================================================================
 更新します:
  phpMyAdmin         noarch         4.2.10.1-1.el7            epel         4.0 M
トランザクションの要約
 ================================================================================
 更新  1 パッケージ

完了。
ps. 2014/12/23

yum --enablerepo=epel update phpMyAdmin

================================================================================
Package             アーキテクチャー
バージョン             リポジトリー   容量
================================================================================
更新します:
phpMyAdmin          noarch          4.3.2-1.el7            epel          4.2 M
トランザクションの要約
================================================================================
更新  1 パッケージ
ps. 2014/12/24
しかし、phpmyadminのページにはこう書かれていた。
phpMyAdmin の新しいバージョンが提供されています。アップグレードの検討をお奨めします。最新バージョンは 4.3.3 で、2014-12-21 にリリースされています。

# yum --enablerepo=epel info phpMyAdmin
インストール済みパッケージ
名前                : phpMyAdmin
アーキテクチャー    : noarch
バージョン          : 4.3.2
リリース            : 1.el7
容量                : 20 M
リポジトリー        : installed
提供元リポジトリー  : epel
要約                : Handle the administration of MySQL over the World Wide Web
URL                 : http://www.phpmyadmin.net/

さて、yumのepelリポジトリィにアップされるのはいつ頃かな?



【失敗】 CentOS7でKVM(仮想化)Windoesのゲストを作る

※成功例のページはココ
# vi create_kvm_windows_guest.sh

# 元ネタ http://www.server-world.info/query?os=CentOS_6&p=kvm&f=8
#ISOイメージのパス指定
ISOIMG=/tmp/9841.0.140912-1613.FBL_RELEASE_CLIENTENTERPRISE_VOL_X64FRE_EN-US.ISO
#KVM上での名前を指定
  # KVM DOMAIN NAME
  IMAGE_NAME=Win10
  # VIRTUAL DISK FILEPATH
  IMG_PATH=/var/lib/libvirt/images
  # SPICE CLIENT PASSWORD
  PASSWORD=password
  # USE MEMORY SIZE (MB)
  RAM=3096
  # VIRTUAL DISK SIZE (GB)
  DISK=15
virt-install \
  --name ${IMAGE_NAME} \
  --ram ${RAM} \
  --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=${DISK},format=qcow2 \
  --vcpus=1 \
  --os-type windows \
  --os-variant=win2k8 \
  --network bridge=br0 \
  --graphics spice,port=5900,listen=0.0.0.0,password=${PASSWORD} \
  --video qxl \
  --cdrom ${ISOIMG}
※nucの容量上の問題からメモリやボリュームの量はかなり少な目にしています。
port=5900を指定するとTLS指定になってしまうらしいので ハズした。

portを指定する場合は /etc/libvirt/qemu.conf の
  • spice_listen = “0.0.0.0”
  • spice_tls = 1
  • spice_tls_x509_cert_dir = “/etc/pki/libvirt-spice”

のコメントを解除し、かつ電子署名を作成しないといけないだろう。

# ./create_kvm_windows_guest.sh
ISOイメージファイルはkvmからのアクセス制限のため /tmpに配置。
SPICEにポート:5900  パスワードはpasswordで接続でき、インストまでは進んだけど・・・
ディスクの空き容量が15GBしかなかったので頓挫しそうになった。
インスト終わった時点で8GBにまで増えた。
と云う訳で古いSSDを用意。
・・・
[ 3083.007029] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 3083.022819]  sdb: sdb1 sdb2 sdb3 sdb4
[ 3083.027416] sd 6:0:0:0: [sdb] No Caching mode page found
[ 3083.027478] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 3083.027536] sd 6:0:0:0: [sdb] Attached SCSI disk
しかしexFATもNTFSでもroot権限になってしまうので、ext3にフォーマットしなおさないとダメだった。
ps.
書かなかったので自分で引っかかってしまった。
firewall-cmdが有効なら、

firewall-cmd –zone=public –add-port=5900/tcp
※ Windowsが安定したら --permanent を付けた方がいい。再起動したら設定が消えるから・・・

iptablesが有効なら、EJECTの前に
-A INPUT -p tcp -m tcp –dport 5900-j ACCEPT
を事前に登録すること。 orz
そして、操作が遅くリブートしてしまったらCD-ROMが認識できないしBIOS画面も開かず
NO BOOTABLE DEVICE
と表示されるだけなので、
以下の方法で残骸を消す。
virsh destroy Win10
virsh undefine Win10
rm /var/lib/libvirt/images/Win10.qcow2
そして、ゲストを作り直す。
やっと間に合ったと思ったら、ブルースクリーン【終了】。
今回のプレビューはJ1900だとダメなのかな?割り当てたDISK:13GBとRAM:2GBでは足りなかったかな?


CentOS7のKVM(仮想化)のCentOS7ゲストの雛型からブログ・サーバを作る

  1. ひな形からブログ鯖のゲストOSを作成
  2. ゲストを複製
    1. # virt-clone -o CentOS7.0 -n *ブログ鯖* -f /var/lib/libvirt/images/*ブログ鯖*.qcow2
      • 割り当て中 *ブログ鯖*.qcow2′ | 20 GB 00:31
      • *ブログ鯖*‘のクローニングに成功しました。
  3. クローン(複製)なのでユニークなハズのUUID、MACアドレス、マシン名までひな形と同じでは都合が悪すぎるのでオフライン(virt-edit)で書き換える
    1. 作成したゲストのMACアドレス確認
      1. # virsh domiflist *ブログ鯖*
        • インターフェース 種類 ソース モデル MAC
        • ——————————————————-
        • – bridge br0 virtio *MACアドレス*
  4. UUID生成
    1. # uuidgen
      • *****-**-*UUID*-**-******
  5. 作成したゲストのネットワークを設定
    1. # virt-edit -d *ブログ鯖* /etc/sysconfig/network-scripts/ifcfg-eth0
      • UUID=*****-**-*UUID*-**-******
      • HWADDR=”*MACアドレス*
  6. 作成したゲストのUDEV設定(MACアドレス変更)
    1. ※無かったけど環境次第かもしれない
      • # virt-edit -d *ブログ鯖* /etc/udev/rules.d/70-persistent-net.rules
        • SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”*MACアドレス*“, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″
  7. ホスト名変更
    1. 作成したゲストのホスト名設定
    2. # virt-edit -d *ブログ鯖* /etc/hostname
      • *ホスト名*
    3. 作成したゲストを起動
      1. # virsh start *ブログ鯖*
      2. ドメイン *ブログ鯖* が起動されました
    4. ルータで*MACアドレス*192.168.*.*が割り当てられていた。
  8. ひな形のMACアドレスが残っていないか確認。
    1. grep *MACアドレス* -r
    2. /etc /lib にはなかった
  9. スナップショット作成
    1. # virsh snapshot-create-as *ブログ鯖* *スナップショット名* ”*コメント*
      • ドメインのスナップショット LAMP が作成されました
  10. LAMP(Apache+MariaDB(MySQL)+PHP)をインストールする
  11. phpをインストールする。 ※元ネタ http://server-setting.info/blog/lamp-wordpress-centos7.html
    1. # yum -y install php-mysql php php-gd php-mbstring
    2. # php –version
      • PHP 5.4.16 (cli) (built: Oct 31 2014 12:59:36)
      • Copyright (c) 1997-2013 The PHP Group
      • Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
  12. mariadb(mysql)をインストールする。
    1. # yum -y install mariadb mariadb-server
    2. # mysql –version
      • mysql Ver 15.1 Distrib 5.5.37-MariaDB, for Linux (x86_64) using readline 5.1
  13. DB起動
  14. # systemctl list-units |grep mariadb
  15. # systemctl list-unit-files |grep mariadb
    • mariadb.service disabled
  16. # systemctl start mariadb.service
  17. # systemctl list-units |grep mariadb
    • mariadb.service
    • loaded active running MariaDB database server
  18. # systemctl list-unit-files |grep mariadb
    • mariadb.service disabled
  19. # systemctl enable mariadb.service
    • ln -s ‘/usr/lib/systemd/system/mariadb.service’ ‘/etc/systemd/system/multi-user.target.wants/mariadb.service’
  20. # systemctl list-unit-files |grep mariadb
    • mariadb.service enabled
  21. データベースのrootのパスワードを設定
    • # mysql_secure_installation
  22. ブログのDBとアカウントを作成 ※なぜかこの方法で作成したアカウントは不調なのでphpMyAdminから作り直し
    1. # mysql -u*管理ユーザー* -p*管理ユーザーのパスワード* -Dmysql < ブログ1用DB作成シェル.sql
    2. # mysql -u*管理ユーザー* -p*管理ユーザーのパスワード* -Dmysql < ブログ2用DB作成シェル.sql
      • DB作成シェル参考
        /* ユーザを新規に作成します。パスワードも設定します。 */
        insert into user set user=”*ブログのDBユーザ*“, password=password(“*ブログのDBユーザのパスワード*“), host=”localhost”;
        /* wordpress用にデータベースを作成します。 */
        create database *ブログのデータベース*;
        /* データベースにユーザが常にアクセスできるようにします。 */
        grant all on *ブログのDBユーザのパスワード*.* to *ブログのDBユーザ*;
        /* 最新に更新 */
        FLUSH PRIVILEGES;
  23. ブログのDBとアカウントを確認
    1. # mysql -uroot -p*rootのパスワード*
    2. # mysql -u*ブログ1用ユーザ* -p*ブログ1用ユーザのパスワード* -D*ブログ1用データベース*
    3. # mysql -u*ブログ2用ユーザ* -p*ブログ2用ユーザのパスワード* -D*ブログ2用データベース*
  24. Apacheをインストールする。
    1. # yum -y install httpd 済みだった
  25. Apacheの設定を変更
    1. # vi /etc/httpd/conf/httpd.conf
      • ServerName *実際のマシン名*
  26. Apacheの起動
    1. # systemctl start httpd.service
    2. # systemctl list-units |grep httpd
      • httpd.service
      • loaded active running The Apache HTTP Server
    3. # systemctl list-unit-files |grep httpd
      • httpd.service disabled
    4. # systemctl enable httpd.service
      • ln -s ‘/usr/lib/systemd/system/httpd.service’ ‘/etc/systemd/system/multi-user.target.wants/httpd.service’
    5. # systemctl list-unit-files |grep httpd
      • httpd.service enabled
  27. iptablesは使わずfirewallをそのまま使うのでファイアーウォール設定
    1. # firewall-cmd –state
      • running
    2. # firewall-cmd –list-services
      • dhcpv6-client ssh
    3. # firewall-cmd –add-service=http –permanent
      • success
    4. # firewall-cmd –list-services
      1. dhcpv6-client http ssh
  28. /var/wwwにブログのバックアップを展開
    1. /etc/httpd/conf.dにブログ1用マルチドメイン設定.confをコピー
    2. /etc/httpd/conf.dにブログ2用マルチドメイン設定.confをコピー
      • マルチドメイン設定参考
        • #NameVirtualHost *:80 ←1つめのマルチドメインのみ#を取る
          <VirtualHost *:80>
              ServerName        *ブログのURL*
              DocumentRoot    “ブログのWordPressの展開先フォルダのフルパス名
              <Directory “ブログのWordPressの展開先フォルダのフルパス名“>
                  Options Includes ExecCGI FollowSymLinks
                  AllowOverride All
                  Order allow,deny
                  Allow from all
              </Directory>
              ErrorLog logs/ブログのエラ-ログ*
              CustomLog logs/*ブログのアクセスログ* combined env=!no_log
          </VirtualHost>
  29. 再起動
    1. # systemctl restart httpd
  30. とりあえずwordpressの設定画面 適当にインストしてテーブルを作る。
  31. phpmyadminをインスト
    1. # yum –enablerepo=epel install -y phpMyAdmin php-mysql php-mcrypt
    2. PC(Windows)からphpMyAdminを使える様に変更
    3. # vi /etc/httpd/conf.d/phpMyAdmin.conf
      • Require ip 127.0.0.1 *PCのIPアドレス*
      • Require ip ::1
  32.  PHPのアップデートサイズを拡張
    1. # vi php.ini
      • post_max_size = 8M ⇒ 16M
      • upload_max_filesize = 2M ⇒ 16M
    2. # systemctl restart httpd
  33. phpmyadminからDBのバックアップをリストアする。
    1. ブラウザ(http://192.168.*.*/phpmyadmin/index.php)からDBバックアップファイルをアップロードしリストア
  34. バックアップ中に白画面になったら・・・処理時間を大幅に拡張
    1. # vi /usr/share/phpMyAdmin/libraries/config.default.php
      • $cfg[‘ExecTimeLimit’] = 300; ⇒ 3600;
  35. WordPressからバックアップファイル付きのメールがうまく送信できない場合は、ブログのURLに対応するように内部?IPアドレスをhostsに追記
    1. # vi /etc/hosts
      • *.*.*.* ブログ1URL
      • *.*.*.* ブログ2URL
  36. クライアント側をシャットダウンし、ゲスト側からブログのスナップショットを作成 ※動作中でも可能だけど、非常に重い。
    1. # virsh snapshot-create-as *ブログ鯖* *スナップ名* “**コメント**”
  37. KVMホスト起動時に一緒に起動させる場合
    1. virsh autostart *ブログ鯖*


CentOS7でKVM(仮想化)のCentOS7ゲストのひな形を作る

  1. CentOS7ネットワークインストールする方法でクライアントを作成する
  2. qcow2形式のイメージファイルを使いファイルサイズを使った分だけにする
  3. ゲストOS作成シェルファイルを作る
    1. # vi create_kvm_centos7_guest.sh
      • # CentOS7のネットワークインストールのURL
      • REPOS=http://ftp.riken.jp/Linux/centos/7/os/x86_64/
      • # KVM上での名前
      • IMAGE_NAME=CentOS7.0
      • #virt-installでインストールする
      • virt-install \
          --name ${IMAGE_NAME} \
          --ram 1024 \
          --disk path=/var/lib/libvirt/images/${IMAGE_NAME}.qcow2,size=20,format=qcow2 \
          --vcpus=1 \
          --os-type linux \
          --os-variant=rhel7 \
          --nographics \
          --location="$REPOS" \
          --bridge=br0 \ ※追記 virbr0を削除しbr0で接続している場合
          --extra-args='console=tty0 console=ttyS0,115200n8 serial'
      • ※ディスク容量を20GBに指定するオプション(size=20, )が抜けていた。
  4. ゲストOS作成
    1. # sh ./create_kvm_centos7_guest.sh
    2. — nographicsでは都合が悪いらしく、
      途中で1:vncか2:テキスモードとか聞いてくるので1:vncを選択。
      パスワードは空。
    3. vncクライアントを起動し、
    4. VNC Server:に
      画面に表示されていたIP:画面番号(192.168.*.*:*)を入力して【Connect】ボタンを押す。
      普通にインストール再起動。ここでvnc終わり
    5. 再びコンソールモード
    6. ホストrootでログイン
      # ip addr

      • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

        2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether *:*:*:*:*:* brd ff:ff:ff:ff:ff:ff
        inet 192.168.*.*/24 brd 192.168.*.255 scope global dynamic eth0
    7. クライアント側をシャットダウン
      # shutdown -h now
    8. ホスト側からゲストを起動
      # virsh start CentOS7.0
  5. クライアント側に変わり
  6. 全般的な更新+α
    # yum -y update
    # yum -y install yum-cron
    # systemctl start yum-cron
    # systemctl enable yum-cron
  7. selinuxをオフ
    # setenforce 0
    # getenforce

    • Permitive
  8. # cd /etc/selinux
    # mv config config.org : cp config.org config
    # sudo sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
    # reboot
    # getenforce

    • Disabled ※うまくいかない場合はココ参照
  9. とりあえずツールの類一式
    • # yum -y groupinstall base “開発ツール”
  10. nkfをインスト
    • # wget “http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fnkf%2F59912%2Fnkf-2.1.3.tar.gz” -O nkf-2.1.3.tar.gz
    • # tar zxvf nkf-2.1.3.tar.gz
    • # cd nkf-2.1.3
    • # make && make install
    • # cd
    • # rm -rf nkf-2.1.3*
    • # ln -s /usr/local/bin/nkf /usr/bin/nkf
  11. chkrootkitインストール
    1. ※元ネタ: http://centossrv.com/chkrootkit.shtml
    2. #chkrootkitダウンロード
      1. # wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
      2. # tar zxvf chkrootkit.tar.gz
    3. chkrootkitを移動
      1. # mkdir -p ~/bin && mv chkrootkit-0.50/chkrootkit ~/bin
      2. # rm -rf chkrootkit*
      3. # chkrootkit | grep INFECTED
        • Searching for Suckit rootkit… Warning: /sbin/init INFECTED
    4. chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
    5. # vi /etc/cron.daily/chkrootkit
      • #!/bin/bash
      • PATH=/usr/bin:/bin:/root/bin
      • TMPLOG=`mktemp`
      • # chkrootkit実行
      • chkrootkit > $TMPLOG
      • # ログ出力
      • cat $TMPLOG | logger -t chkrootkit
      • # SMTPSのbindshell誤検知対応
      • if [ ! -z “$(grep 465 $TMPLOG)” ] && \
        • [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
      • sed -i ‘/465/d’ $TMPLOG
      • fi
      • # upstartパッケージ更新時のSuckit誤検知対応
      • if [ ! -z “$(grep Suckit $TMPLOG)” ] && \
        • [ -z $(rpm -V `rpm -qf /sbin/init`) ]; then
      • sed -i ‘/Suckit/d’ $TMPLOG
      • fi
      • # rootkit検知時のみroot宛メール送信
      • [ ! -z “$(grep INFECTED $TMPLOG)” ] && \
        • grep INFECTED $TMPLOG | mail -s “chkrootkit report in `hostname`” root
      • rm -f $TMPLOG
    6. # chmod 700 /etc/cron.daily/chkrootkit
  12. chkrootkitで使用する安全なコマンドの確保
    1. chkrootkit使用コマンド退避先ディレクトリ作成
      • # mkdir chkrootkitcmd
    2. chkrootkit使用コマンドを退避先ディレクトリへコピー
      • # cp `which –skip-alias awk cut echo egrep find head id ls netstat ps strings sed ssh uname` chkrootkitcmd/
    3. 試してみる
      1. # chkrootkit -p /root/chkrootkitcmd|grep INFECTED
        • Searching for Suckit rootkit… Warning: /sbin/init INFECTED
    4. 使ったコマンド圧縮して保存
      1. # zip -r chkrootkitcmd.zip chkrootkitcmd/
      2. # rm -rf chkrootkitcmd
    5. FTPでchkrootkitcmd.zipをバックアップし消す
      1. # rm -f chkrootkitcmd.zip
  13. yum-prioritiesプラグイン導入
    1. # yum -y install yum-plugin-priorities
    2. # vi /etc/yum.repos.d/CentOS-Base.repo
      • enabled=1
      • を追記
  14. RPMforgeリポジトリ導入 ← 2016年7月20日頃から使用不可
    1. # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
    2. # rpm -ivh rpmforge-release-*.rpm
    3. # rm -f rpmforge-release-*.rpm
    4. # yum -y update rpmforge-release
  15. EPELリポジトリ導入
    1. # yum install epel-release
    2. # cd /etc/yum.repos.d
    3. # ls
    4. # vi epel.repo
      • enabled=1 -> enabled=0
    5. # yum –enablerepo=epel list
  16. Clam AntiVirusインストール
    1. # yum -y install clamd
    2. # chkconfig clamd on
    3. # sed -i ‘s/^Example/#Example/g’ /etc/freshclam.conf
    4. # freshclam
    5. # clamscan –infected –remove –recursive
  17. NTPサーバーインストール
    1. # yum -y install chrony ※不要
    2. # vi /etc/chrony.conf
      • server 0.centos.pool.ntp.org iburst
      • ・・・
      • server 3.centos.pool.ntp.org iburst
    3. ↓ 時刻同期先NTPサーバーを変更
      • # 日本標準時を提供しているNTPサーバー
      • server ntp.nict.jp iburst
      • # 上記サーバーと直接同期しているNTPサーバー
      • server ntp.jst.mfeed.ad.jp iburst
      • # プロバイダのNTPサーバー※無ければ設定不要
      • server プロバイダのNTPサーバー名 iburst
    4. 手動で時刻を補正(2回)
      1. # ntpdate ntp.nict.jp
      2. # ntpdate ntp.nict.jp
    5. サービスを登録
      1. # systemctl start chronyd
      2. # systemctl enable chronyd



top