ভার্চুয়ালবক্স এবং সিপিইউডির মূল বিষয়গুলি
VBoxInternal/CPUM/HostCPUIDআপনার ভার্চুয়াল মেশিনের এক্সট্রাডেট সেট করতে হবে । এটি অতিথিদের সিপিইউডির নির্দেশনার জন্য ভার্চুয়ালবক্সের প্রতিবেদনের কাস্টম ফলাফল তৈরি করবে । ইএএক্স নিবন্ধকের মানের উপর নির্ভর করে এই নির্দেশ প্রসেসরের তথ্য দেয় - বিক্রেতা, প্রকার, পরিবার, স্টেপিং, ব্র্যান্ড, ক্যাশে আকার, বৈশিষ্ট্যগুলি (এমএমএক্স, এসএসই, এসএসই 2, পিএই, এইচটিটি) ইত্যাদি আরও ফলাফল আপনি ম্যাঙ্গেল, অতিথিকে বোকা বানানোর সম্ভাবনা তত বেশি।
vboxmanage setextradataভার্চুয়াল মেশিনটি কনফিগার করতে আপনি কমান্ডটি ব্যবহার করতে পারেন । উদাহরণ স্বরূপ,
vboxmanage setextradata WinXP VBoxInternal/CPUM/HostCPUID/80000003/ebx 0x50202952
EAX এর সাথে 80000003₍₁₆₎ সেট করার সাথে কল করা হলে, সিপিইউডিকে EBX রেজিস্টারে 50202952₍₁₆₎ প্রদান করবে ₍₁₆₎ (এখন থেকে, হেক্সাডেসিমাল সংখ্যা 0xNN বা NNh হিসাবে লেখা হবে)
সিপিইউ বিক্রেতার স্ট্রিং সেট করা হচ্ছে
যদি EAX 0 হয় (বা এএমডি তে 80000000h), সিপিইউডিইড EBX, EDX, ECX (অর্ডারটি লক্ষ্য করুন) এ ASCII স্ট্রিং হিসাবে বিক্রেতাকে ফেরত দেয়। একটি এএমডি সিপিইউয়ের জন্য তারা এ জাতীয় চেহারা:
| Register | Value | Description |
|----------|------------|--------------------------------|
| EBX | 6874_7541h | The ASCII characters "h t u A" |
| ECX | 444D_4163h | The ASCII characters "D M A c" |
| EDX | 6974_6E65h | The ASCII characters "i t n e" |
( এএমডি সিপিইউইড স্পেসিফিকেশন , সাবকিশন "সিপিইউডিএন Fn0000_0000_E" থেকে নেওয়া )
আপনি যদি ইবিএক্স, ইডিএক্স এবং ইসিএক্সকে কনটেটেট করেন তবে আপনি পাবেন AuthenticAMD।
আপনার যদি বাশ এবং traditionalতিহ্যবাহী ইউনিক্স ইউটিলিটিগুলি থাকে তবে আপনি সহজেই নীচের কমান্ডগুলি সহ বিক্রেতাকে সেট করতে পারেন:
vm='WinXP' # UUID works as well
# The vendor string needs to have 12 characters!
vendor='AuthenticAMD'
if [ ${#vendor} -ne 12 ]; then
exit 1
fi
ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
registers=(ebx edx ecx)
for (( i=0; i<${#vendor}; i+=4 )); do
register=${registers[$(($i/4))]}
value=`echo -n "${vendor:$i:4}" | ascii2hex`
# set value to an empty string to reset the CPUID, i.e.
# value=""
for eax in 00000000 80000000; do
key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
vboxmanage setextradata "$vm" $key $value
done
done
সিপিইউ ব্র্যান্ডের স্ট্রিং সেট করা হচ্ছে
যদি EAX 80000002h, 80000003h, 80000004h হয়, সিপিইউডিএস EAX, EBX, ECX, EDX, মোট 3 * 16 = 48 টি অক্ষর রেজিস্টারে ব্র্যান্ড স্ট্রিংয়ের 16 ASCII অক্ষর প্রদান করে; স্ট্রিংটি নাল অক্ষর দিয়ে সমাপ্ত করা হয় । নোট করুন যে এই বৈশিষ্ট্যটি পেন্টিয়াম 4 প্রসেসরের সাথে প্রবর্তিত হয়েছিল। এইভাবে ব্র্যান্ড স্ট্রিংটি পেন্টিয়াম 4 প্রসেসরের দিকে নজর দিতে পারে:
| EAX Input Value | Return Values | ASCII Equivalent |
|-----------------|-----------------|------------------|
| 80000002h | EAX = 20202020h | " " |
| | EBX = 20202020h | " " |
| | ECX = 20202020h | " " |
| | EDX = 6E492020h | "nI " |
|-----------------|-----------------|------------------|
| 80000003h | EAX = 286C6574h | "(let" |
| | EBX = 50202952h | "P )R" |
| | ECX = 69746E65h | "itne" |
| | EDX = 52286D75h | "R(mu" |
|-----------------|-----------------|------------------|
| 80000004h | EAX = 20342029h | " 4 )" |
| | EBX = 20555043h | " UPC" |
| | ECX = 30303531h | "0051" |
| | EDX = 007A484Dh | "☠zHM" |
|-----------------|-----------------|------------------|
(থেকে নেওয়া রেফারেন্স প্রোগ্রামিং ইন্টেল আর্কিটেকচার নির্দেশনাবলী এক্সটেনশানগুলি , উপধারা 2.9, "CPUID নির্দেশ", টেবিল 2-30। ☠ হয় নাল অক্ষর (সংখ্যাগত মান 0)।)
যদি আপনি ফলাফলগুলি একসাথে রাখেন তবে আপনি পাবেন Intel(R) Pentium(R) 4 CPU 1500MHz☠।
আপনার যদি বাশ এবং traditionalতিহ্যবাহী ইউনিক্স ইউটিলিটিগুলি থাকে তবে আপনি সহজেই নীচের কমান্ডগুলি সহ ব্র্যান্ডটি সেট করতে পারেন:
vm='WinXP' # UUID works as well
# The brand string needs to have 47 characters!
# The null terminator is added automatically
brand=' Intel(R) Pentium(R) 4 CPU 1500MHz'
if [ ${#brand} -ne 47 ]; then
exit 1
fi
ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
eax_values=(80000002 80000003 80000004)
registers=(edx ecx ebx eax)
for (( i=0; i<${#brand}; i+=4 )); do
eax=${eax_values[$((${i} / 4 / 4))]}
register=${registers[$((${i} / 4 % 4 ))]}
key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
value=`echo -n "${brand:$i:4}" | ascii2hex`
# set value to an empty string to reset the CPUID, i.e.
# value=""
vboxmanage setextradata "$vm" $key $value
done
আপনার যদি উইন্ডোজ কমান্ড প্রম্পট থাকে তবে আপনি ব্র্যান্ডটি চালিয়ে Intel(R) Core(TM)2 CPU 6600 @ 2.40 GHz1 এ সেট করতে পারেন :
set vm=your-vm-name-or-uuid
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/eax 0x65746e49
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/ebx 0x2952286c
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/ecx 0x726f4320
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/edx 0x4d542865
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/eax 0x43203229
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/ebx 0x20205550
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/ecx 0x20202020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/edx 0x20202020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/eax 0x30303636
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/ebx 0x20402020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/ecx 0x30342e32
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/edx 0x007a4847

1HostCPUID মান থেকে VirtualBox বাগ রিপোর্ট তোলা হয়েছিল # 7865 ।