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