zpool を旧ディスクから新ディスクにコピーしたついでに OpenIndiana へ移行しようとしたファイルサーバ、イーサネットのデバイス名が ifconfig -a で表示されてこないのでしばらく放置してあったのをやっとこネットワークに繋ぎました。
# dladm show-phys
LINK MEDIA STATE SPEED DUPLEX DEVICE
e1000g0 Ethernet up 1000 full e1000g0
e1000g1 Ethernet unknown 0 half e1000g1
まさか Intel の NIC でドライバが足りてないなんてことはないよなぁとか思ったりデバイス名なんだろうとか思っていたけど dladm show-phys で出てくるんですね。ってことで /etc/hostname.e1000g0 を作ったりとか色々して作業完了。
リゾルバ設定で /etc/nsswitch.conf のフルパスを思い出すのにちょっと時間かかった。もう歳ですね……。
2012年3月12日月曜日
2012年3月10日土曜日
大量のUSBフラッシュメモリを再フォーマットする
MacOS X上で100個オーバーなUSBメモリの内容をガンガン消したかったのでスクリプトを書きました。
以前に消去前の USB メモリ(恐らくイメージを事前作成し展開)のデータを dd で読み取って split して md5 で一通りチェックしたら最初の 30MB 分ぐらいにデータが入っていることがわかったので、まず dd でゼロクリアします。その後 MacOS X 上で FAT16 のファイルシステムを作成し、終わったらイジェクトします。
usbdisk_format.sh
#!/bin/sh
このスクリプトは引数して /dev/diskX といったデバイス名をとりますが、毎回これを指定するのは面倒なので、 USBメモリを見つけて上記スクリプトを叩くスクリプトを作りました。
このスクリプトは /dev/disk* ファイルを見つけて、そのデバイスが目的のブロックデバイスであるか、ブロックデバイスの容量やデバイス名などをベースに判断し、条件にあうデバイスは上記のスクリプトを並列実行し初期化します。
usb_batch.sh
あとは USB メモリを MacBook Air に刺しまくってスクリプトを実行するだけ・・・・!!
・
・
・
MacBook Air が落ちました。バスパワーが足りなくて、安定して並列初期化できるのは 4 枚ぐらいまでのようです。また一番大変なのは USB メモリを包装するビニール袋との戦いでした。
以前に消去前の USB メモリ(恐らくイメージを事前作成し展開)のデータを dd で読み取って split して md5 で一通りチェックしたら最初の 30MB 分ぐらいにデータが入っていることがわかったので、まず dd でゼロクリアします。その後 MacOS X 上で FAT16 のファイルシステムを作成し、終わったらイジェクトします。
usbdisk_format.sh
#!/bin/sh
DISK=$1 if [ "x$DISK" == "x" ]; then echo Usage: $0 /dev/disk1 exit 1; fi diskutil unmountDisk $DISK 2>&1 > /dev/null if [ $? -ne 0 ]; then echo $DISK: Unmount failure. fi mount | grep -q "$DISK" if [ $? -eq 0 ]; then echo $DISK: Still mounting. dont format this disk. exit 0 fi sudo dd if=/dev/zero of=$DISK bs=1m count=30 2>&1 > /dev/null if [ $? -ne 0 ]; then echo $DISK: dd failure. fi diskutil partitionDisk $DISK MBR 'MS-DOS FAT16' FUSION-IO 100% 2>&1 > /dev/null if [ $? -ne 0 ]; then echo $DISK: format failure. exit 1 fi diskutil unmountDisk $DISK 2>&1 > /dev/null if [ $? -ne 0 ]; then echo $DISK: Unmount failure. fi exit 0
このスクリプトは引数して /dev/diskX といったデバイス名をとりますが、毎回これを指定するのは面倒なので、 USBメモリを見つけて上記スクリプトを叩くスクリプトを作りました。
このスクリプトは /dev/disk* ファイルを見つけて、そのデバイスが目的のブロックデバイスであるか、ブロックデバイスの容量やデバイス名などをベースに判断し、条件にあうデバイスは上記のスクリプトを並列実行し初期化します。
usb_batch.sh
#!/bin/sh test_fusion_usb() { DISK=$1 diskutil info $DISK | grep -q 'USB DISK Media' if [ $? -ne 0 ]; then echo SKIP_1 return 1; fi diskutil info $DISK | grep -q '1.0 GB (1038090240 Bytes)' if [ $? -ne 0 ]; then echo SKIP_2 return 1; fi # echo $DISK is USB return 0; } DISKS=`ls -1 /dev/disk[0-9] /dev/dsk[0-9][0-9]` for d in $DISKS; do test_fusion_usb $d if [ $? -eq 0 ]; then echo Clearing $d sh usbdisk_format.sh $d & fi done
あとは USB メモリを MacBook Air に刺しまくってスクリプトを実行するだけ・・・・!!
・
・
・
MacBook Air が落ちました。バスパワーが足りなくて、安定して並列初期化できるのは 4 枚ぐらいまでのようです。また一番大変なのは USB メモリを包装するビニール袋との戦いでした。
登録:
投稿 (Atom)