ジャンル不定の日記です。

東芝Windows 7リカバリディスクの流用に失敗

先日中古(ジャンク)で購入した東芝ノートPCのリカバリディスクをVirtualboxの仮想環境に流用を試みた。

購入したノートの方をWin10無料アップグレードできるようなら先にやりたいと考えてるんで、
Win10無料アップグレードはWindows Updateが進まないとできないと思うから届いてからずっとやってるんだが、Windows Update糞遅い・・・
一昨日届いてからずっとアップデートしてるんだが、頻繁に動いてるんだかよくわからん状況になってなかなか進まないんで、待ちくたびれたから先にリカバリディスクの流用を試みることにした。


まず、普通にVMを作成してリカバリディスクから起動すると、
「エラー」とだけ表示されて終わるw

先日のHPノートのVistaリカバリディスク流用と同じように、dmidecodeでBIOS情報を確認して、
DmiSystemVendor
DmiSystemProduct
DmiSystemSerial
DmiSystemUuid
DmiSystemFamily
DmiSystemSKU
を設定したら、突破成功!
上記設定の中に不要なものがあると思うから1個づつ試したかったが、イメージのロードが長くてめんどいからまとめてやって一発成功。
注意点は、FamilyとSKUの値が"0000000000"。
不要なデータな気もするが、数字だけの値を設定する場合は、
VBoxManage setextradata "Win7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSKU" "string:0000000000"
の様に "string:値" と書く必要があるらしい。そのまま数値入れたらエラーでVMの起動ができなかった。


で、リカバリディスクは使用できたんだが、パーティションの初期化をして3.8Gibコピーされたところで「エラー」・・・
ERROR: 0A-0224-0000
とエラー番号が出るんでそれでググってみたが、別機種含めて東芝のリカバリディスクでよく出るエラーぽい。
解決方法は見つからなかったが、リカバリディスクは2枚組で1枚目のコピーが終わったところで出てるような気配なんで、正常ならディスクの入れ替えが発生する箇所ではないかと。
光学ドライブのハードまたはデバイスの順番が想定外なんじゃないかと思う。

実機の方はデバイスマネージャで見るとHDDも光学もIDEぽいんで、
とりあえずHDDをプライマリ・マスタにして、プライマリ・スレーブ、セカンダリ・マスタ、セカンダリ・スレーブのパターンを試してみたがダメだった。

光学ドライブの問題だとは思うので、HDDのリカバリ領域からのリカバリならこの問題突破できるような気がする。
というわけで、次はHDDのリカバリ領域からの仮想化を試してみようと思う。

Android上のchrootなLinuxでXfceを起動しようとしたが・・・

Android上のchrootなLinuxでGUIを起動している先人たちがいるので真似したが、現時点でうまく行ってない。
とりあえず、メモも兼ねて現状までまとめる。

SDカードの第2パーティションがext4になっててAndroid上で /storage/ext4sd にマウントされるようになってる。
/storage/ext4sd/.linux 以下にArch Linux(armv7)のrootfsを展開してある。


cd /storage/ext4sd
まず、ディレクトリ移動。

mount -o bind /dev .linux/dev
mount -o bind /proc .linux/proc
mount -o bind /sys .linux/sys
chroot環境の構築でカーネルは共有なので、システムが作成するディレクトリはmountでハードリンクする。

busybox busybox chroot .linux env -i bash
chrootする。
chrootの第1引数は新しいルートディレクトリだが、第2引数で実行するコマンドが指定できるので、env -iで環境変数を初期化する。
envの引数で更に実行するコマンドを指定できるので、bashを起動する。

groupadd -g 3003 aid_inet
gpasswd -a root aid_inet
idが3003のグループに所属していないとAndroidのカーネルによる制限でネットワーク(socket)が使えない。
ネットワークを使うには3003のグループを作成してユーザーを所属させる必要がある。

su -
chrootした時点でプロンプトが[#]だが、suしないとグループ権限が使えない様でネットワーク使えないらしい。

rm /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
DNSで名前解決をするためには /etc/resolv.conf にネームサーバーのアドレスを書いておけばいいが、
Arch Linux ではsystemdで動的に書き換えるようで /etc/resolv.conf がシンボリックリンクになってる。
削除してから書き込む。
8.8.8.8はGoogleの公開ネームサーバー。

pacman -Syu
Arch Linuxのアップデート。

pacman -S xfce4
pacman -S xorg-server
pacman -S xf86-video-fbdev
xfceを使うために必要そうなパッケージのインストール。
ビデオデバイスは、fbdevを使うぽい。


Xfceは startxfce4 コマンドで起動できるようなんだが、 /dev/tty0 ないと言われて起動できない。startxコマンドでも同じ。
Android上で /dev を確認しても、 /dev/tty0 じゃなくて名前が違うぽい。
わからないんで、とりあえず現時点ではここまで。


あと、今回は /dev /proc /sys の3つをAndroid環境からハードリンクしている。
上記3つはメモリだからリブートすれば復活すると思うが、
先日、ネットワークの使い方がわからなくて試行錯誤している際に /system/bin をハードリンクして、
後始末の際にシンボリックリンクと間違えて rm -r で消しちゃってAndroidのROM焼きしなきゃ復旧できない事態になった。
後始末で消すときは、きちんとumountするか端末リブートするかで慎重にやらんとね。