人難免手賤,我也不例外。前些日子,我想將我的VAIO SZ57做GHOST備份時,將來源及目的指錯了……(對,手真是賤 Orz)
所以就開始重灌,我趁這個機會將OS改灌成Gentoo Linux amd64的版本 (因為我插了4G的RAM,這也算是手賤吧……XD)
然後在上面灌VM,之前我是灌VMWare Server,不過經Ai長輩推薦,我就改灌成VirtualBox (bin版,因為要用到usb支援)
一切百廢待興,慢慢在重灌一些軟體,重新設定service時,我發現我的VirtualBox有個VT-x開不起來。
這就怪了,我的CPU (Intel Core 2 Duo T7500) 應該有支援呀,進了BIOS也什麼都不能調整,去查了才知道,原來被SONY封印了。
然後為了這個又找了一些文章,其中看到這篇最接近我的環境 (同樣是SZ系列)
How to Enable Intel VT and AHCI on a Napa / Santa Rosa platform Phoenix BIOS Vaio laptop
(因為會去改到BIOS的資料,所以找相同的比較保險 @@)
文章裡寫的很詳細,主要就是說先確定BIOS的版本是目前最新版 (舊型SZ是R0112N0,新型SZ是R0122S5),可能不同版抓出來的代碼會不同 (吧),不知道,這方面我不熟 Orz
然後你會需要一個可以開機為DOS的裝置,看是磁片還是隨身碟,請不要用光碟(cd-r),因為你會需要寫資料進去。(我是用microSD轉接成SD再接在讀卡機上接到USB Orz)
以下是要做的動作:
1.下載symcmos,將它放到你的DOS開機裝置裡。
2.在BIOS畫面時按F2進開機選單,選DOS開機的裝置。原文在這裡有寫說要設成預設值,我是沒有還原預設值啦,雖然預設也沒有多少項目可以設……
3.開機後,在提示符號後面輸入指令「symcmos -v2 -lDefault.txt」。其中Default.txt是要輸出的檔案名稱。「-」的前面有空白,「-l」與檔名中間沒空白。
4.然後就是修改Default.txt,我是忘了怎麼在DOS下做文字檔的編輯了,所以我是直接用讀卡機接到另一台上面去改。
5.當然原來的Default.txt是一定要備一下的,所以就複製成別的名字再來改,我複製成VT_AHCI.txt。
For Napa SZs – R0112N0
AHCI: (015C) [0000] —> (015C) [0001]
VT-x: (0354) [0000] —> (0354) [0001]
For Santa Rosa SZs – R0122S5
AHCI: (0189) [0000] —> (0189) [0001]
VT-x: (02F1) [0000] —> (02F1) [0001]
6.重開機到DOS,執行「symcmos -v2 -uVT_AHCI.txt」就會更新到BIOS去了。
7.再重開,由硬碟開機。
這整個過程,最麻煩的是DOS開機的部分,我試了不少方式,最後被我找到有人在Gentoo下成功做好開機片。
======================以下為DOS開機片的做法======================
它藏在FreeDOS on a USB Flash Drive的討論串裡。
I got it to work from linux! Yay!
I used FreeDOS, syslinux, and mkbootfat.
Step by step notes: http://www.stilen.com/notes/usb_dos_boot.txtI ran into the problem where the bootloader couldn’t understand the filesystem due to heads and sectors information.
Once this was modified, it worked.
Hope this is helpful to others
由於原來這篇「FreeDOS on a USB Flash Drive」的方式,我試了以後失敗,所以就照這位看來很興奮的朋友的方式來試試。而且他似乎也是用Gentoo (我看到emerge XD)
其實一步一步照做就好了,它都有說明。(下面的說明是被我加過料的)
它的方式還是會用到FreeDOS的iso,只是他發現原本format成DOS開機片時,似乎會有問題,要自己改geometry (我不確定這是啥,總之是最前面mbr那的格式問題,爛M$的問題……)
# 我抓到的也是這個代號,這邊設一下變數,後面的script比較好copy-paste XD
export DISK=/dev/sdb
# 去抓FreeDOS的Full CD ISO (url可以自己再去找一下)
wget http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/distributions/1.0/fdfullcd.iso
# 要將ISO mount起來
mkdir Freedos_fdfullcd
mount -o loop fdfullcd.iso Freedos_fdfullcd# 將需要的檔copy出來
mkdir boot_root
cp ./Freedos_fdfullcd/freedos/setup/odin/{command.com,kernel.sys} boot_root/
mkdir boot_kernels
unzip ./Freedos_fdfullcd/freedos/packages/src_base/kernels.zip -d boot_kernels
#—————————–
# syslinux – Install
#
# Provides:
# mbr.bin
#
#—————————–# 裝syslinux,確定mbr.bin的位置,我的就和這裡寫的不同,我的在 /usr/share/syslinux/mbr.bin
# 後面下參數時要注意一下
emerge –deep -ta syslinux
equery files syslinux |grep mbr.bin
# /usr/lib/syslinux/mbr.bin#—————————–
# makebootfat – Install
#
# Provides:
# makebootfat
#
#—————————–# makebootfat已經有進portage了,我是直接emerge makebootfat來安裝的
wget http://prdownloads.sourceforge.net/advancemame/makebootfat-1.4.tar.gz?download
tar -xvf makebootfat-1.4.tar.gz
cd makebootfat-1.4
./configure
make
make install
export PATH=$PATH:/usr/local/bin#—————————–
# coreutils – Install
#
# Provides:
# shred
#
#—————————–# 查了一下shred,還真是有趣的東西 XD
# Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.
# 不過他下面只覆寫了一次 (-n 1)
# 好像可以用別的來代替? (dd?)
emerge sys-apps/coreutils#—————————–
# Remove partitions
#—————————–shred -n 1 –size=1k $DISK
sync#—————————–
# Show current geometry
#—————————–fdisk -l $DISK
Disk /dev/sdb: 1007 MB, 1007681536 bytes
31 heads, 62 sectors/track, 1024 cylinders
Units = cylinders of 1922 * 512 = 984064 bytes
Disk identifier: 0xa1abf5adDisk /dev/sdb doesn’t contain a valid partition table
#—————————–
# Add MBR on to Disk
#—————————–# 我的在這一步有出錯,不過原因好像是因為我的SD Card插到讀卡機時,卡榫被移到防寫那邊去了
# 後來對卡榫加工後 (磨了一點),好像就OK了
# 另外要注意syslinux的位置
makebootfat \
-o $DISK \
-E 255 \
-1 ./boot_kernels/source/ukernel/boot/fat12.bin \
-2 ./boot_kernels/source/ukernel/boot/fat16.bin \
-3 ./boot_kernels/source/ukernel/boot/fat32lba.bin \
-m /usr/lib/syslinux/mbr.bin \
-D boot_root#—————————–
# FIX geometry,
# Sectors & Heads changes
# based on error message when
# command.com couldn’t be
# found.
# AND
# setup a parition on the usb
#—————————–# 這步沒做的話,開機時應該會有個錯誤,也就是他的這份文件最開頭的那部分寫的
# 因為我之前用別的方法做的測試裡,有類似的訊息…
# 這個問題會發生的原因,我想是因為M$….
fdisk -S 63 -H 32 $DISKCommand (m for help): d
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-976, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-976, default 976):
Command (m for help): t
Hex code (type L to list codes): c
Command (m for help): a
Command (m for help): p
Command (m for help): w#—————————–
# Look at Disk Now
#—————————–fdisk -l $DISK
Disk /dev/sdb: 1007 MB, 1007681536 bytes
32 heads, 63 sectors/track, 976 cylinders
Units = cylinders of 2016 * 512 = 1032192 bytes
Disk identifier: 0×000f35d4Device Boot Start End Blocks Id System
/dev/sdb1 * 1 976 983776+ c W95 FAT32 (LBA)#—————————–
# Unmount the disk if mounted
#—————————–# 這步是以防萬一,事實上,上面完全沒有做mount的動作 @@
umount ${DISK}1#—————————–
# Install image into Partition
#—————————–# 需要的事前準備做完了,寫進去就可以了
makebootfat \
-o ${DISK}1 \
-1 ./source/ukernel/boot/fat12.bin \
-2 ./source/ukernel/boot/fat16.bin \
-3 ./source/ukernel/boot/fat32lba.bin \
-P boot_root#—————————–
# Boot to FreeDOS with usb
#—————————–Yay!
其實我只是照做啦…
之前用freedos好像有做到可開機,可是會有錯誤訊息的地步。
而這篇有明確提到相同的問題,然後苦主很厲害,知道怎麼解決 (我是廢材…)
以上,寫的亂七八糟的。



















































































