å°ãåã«ãã³ã³ãã¥ãŒã¿ãŒã®1ã€ã«16 GBã®ã¡ã¢ãªãã€ã³ã¹ããŒã«ããŸããã ãã®äžã«ãCore i5 750ãæèŒãããã¶ãŒããŒã
Foxconn P55MXããããŸãããã®å€ãCPUã亀æããããšã¯å¯èœã§ããããããŸã§ã®ãšããã¯æ£åžžã«åäœããå¿
èŠãªãã¹ãŠãå®è¡ããŸãã
ããã«èå³æ·±ããã®ããããŸãã ãã¶ãŒããŒãã¯16 GBã®RAMãå
¬åŒã«ãµããŒãããŠããŸããã äžèšã®ããŒãžã®ä»æ§ã¯ãæ倧8 GBããµããŒããããŠããããšã瀺ããŠããŸãã ããŒãã«ã¯ã¹ãããã2ã€ãããªãã®ã§ããã¶ãŒããŒããçºå£²ãããæç¹ã§ã¯8GBã®ã¹ããªããã¯çãããã®ã§ãããšæãããŸããã ãšã«ãããã£ãŠã¿ãããšã«ããŸããã å€ãã®å Žåããã¶ãŒããŒãã¯ã¡ãŒã«ãŒãå
¬åŒã«äž»åŒµããŠãããããå€ãã®RAMããµããŒãããŠããŸãã
ææ°ã®BIOSããŒãžã§ã³ïŒããŒãžã§ã³946F1P06ïŒãã€ã³ã¹ããŒã«ãããŠããããšã確èªãã8ã®ã¬ãã€ãã®ããªã ã®ãã¡2ã€ãæ¿å
¥ããŸããã ãã®åŸãUbuntu 16.04ãããŠã³ããŒããããã¹ãŠãå®å
šã«æ©èœããŸããã ããŒããããã¥ã¡ã³ãã«èšèŒãããŠãããããå€ãã®ã¡ã¢ãªããµããŒãããŠãããšããç§ã®çè«ã¯æ£ããããšãå€æãããããå¿ããŠããŸããã RAMãè¿œå ããã®ã奜ãã§ãã²ãŒã ãå ±ãããããšãå¬ããæããŸããã
ããããæ°ãæåŸãç§ã¯Windows 10ãããŒãããããšããŸãããåºæ¬çã«ãã³ã³ãã¥ãŒã¿ãŒã¯Linuxã§å®è¡ãããŸãã æã
ãäœãããã§ãã¯ããããã«Windowsãèµ·åããå¿
èŠããããŸãã ãã®æãã楜ãã¿ãå§ãŸããŸããã
GRUBã衚瀺ãããããã¡ãã¥ãŒããWindows 10ãéžæããEnterããŒãæŒããŸãã WindowsããŒãç»é¢ãçæé衚瀺ãããåŸãããã«æ»ã®ãã«ãŒã¹ã¯ãªãŒã³ã«è¿ããããŸããã
åæ¢ã³ãŒãïŒACPI_BIOS_ERRORã ç§ã¯å€ãã®ããšãã°ãŒã°ã«ã§èª¿ã¹ããã®æ¬è³ªã¯BIOSã®ACPIããŒãã«ã«ããçš®ã®åé¡ã«ããããšãçºèŠããŸããã ãšããããACPIããŒãã«ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ããŒããŠã§ã¢ã®æ§ææ¹æ³ãäŒããŸãã Windowsã€ã³ã¹ããŒã«USBãã©ã€ãããèµ·åããããšãããšãåããšã©ãŒãçºçããŸããã ã ããããã©ãã¯ã¹ã³ã³ã¯åãã€ããŠããªãã£ããšæãã ãã®ã³ã³ãã¥ãŒã¿ãŒã¯ãå®éã«ã¯16 GBã®RAMããµããŒãããŠããŸããã 8 GBã«æ»ããšãããŠã³ããŒããæåããŸããã RAMãã¹ããåªããŠãããããã¡ã¢ãªããŒãšããŠã¯æªããããŸããã
BIOSã®ä¿®æ£ã®ããã«FoxconnãµããŒãã«é£çµ¡ããããšããŸããããå¿çããããŸããã§ããã é»åã¡ãŒã«ã¢ãã¬ã¹ã¯Webãµã€ãã«ãªã¹ããããŠããŸãããæ©èœããŸããã ããããFoxconnã¯ãã¶ãŒããŒããæ±ã£ãŠããªãã§ãããã 圌ãããµããŒããæäŸããŠããªãããã§ãã
ãã®æç¹ã§ãæ®éã®äººã¯åã«ããããã8 GBã®ã¡ã¢ãªãèŸä»»ããããæ°ããã³ã³ãã¥ãŒã¿ãŒã賌å
¥ããŸãã ããããç§ã¯ãããªã«ç°¡åã«giveããããããŸããã§ããã çè«çã«ã¯ãã³ã³ãã¥ãŒã¿ãŒã¯Linuxã§å®å
šã«åäœããããã16 GBã䜿çšã§ããããšãç¥ã£ãŠããŸããã ããã§ç§ã¯ACPIãåŠã³ãBIOSèšå®ãè©Šãå§ããŸããã
ããã€ãã®ã¡ã¢ãªèšå®ã§éã¶ããšãã§ããèå³æ·±ãBIOSã»ã¯ã·ã§ã³ãèŠã€ããŸããã ãã©ã¡ãŒã¿ã®1ã€ã¯ãã¡ã¢ãªãªãããæ©èœãã§ããã 圌女ã¯å«ãŸããŠããŸããã BIOSã®ããã¥ã¡ã³ãã§ã¯ããã®ãªãã·ã§ã³ã«ãããå
±æç©çã¡ã¢ãªã®äžã«ãããã³ã°ããããã®ããªãŒããŒã©ããPCIã¡ã¢ãªããèš±å¯ãããŠãããšãããŠããŸãã ã€ã³ã¿ãŒãããã§ã®æ€çŽ¢ã§ã¯ã64ãããOSã§èµ·åãããšãã«æå¹ã«ããå¿
èŠãããããšã瀺ãããŸããã å®éšã®ããã ãã«ãªãã«ããŠãWindowsãå®éã«èµ·åããŸããïŒ ãããã圌女ã¯4 GBæªæºã®RAMãã䜿çšã§ããªããšèšããŸããã ããããããã¯è¯ãã£ãã§ããã¡ã¢ãªããŒãç©ççã«åãå€ãããšãªãWindowsã«ã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã
Ubuntuãåãã§ãã ã¡ã¢ãªã®åãããã³ã°æ©èœãç¡å¹ã«ãããšãRAMã4 GBæªæºã«å¶éãããŸããã çŸæç¹ã§ã¯ãäœããã®ã¡ã¢ãªãããã³ã°ã®åé¡ããããšç¢ºä¿¡ããŠããŸããã ACPI_BIOS_ERRORãšã©ãŒãšãã®åå ããã詳现ã«èª¿æ»ããããšã«ããŸãããACPI_BIOS_ERRORãšã©ãŒãã§ãã¯ã説æãã
ãã®åªãã Microsoftãã©ã€ããŒãããã°
ããã¥ã¡ã³ãã«åºäŒããŸããã
ãã®ææžã«ãããšã以åã®ããŒãžã§ã³ã®Windowsã§ã¯ãã«ãŒã¹ã¯ãªãŒã³ã«è¡šç€ºãããŠãã4ã€ã®ãšã©ãŒãã©ã¡ãŒã¿ãŒãèŠã€ããå¿
èŠããããŸããã Windows 10ã¯ããã©ã«ãã§ãã¹ãŠã®æ
å ±ãé衚瀺ã«ããŸãããã¬ãžã¹ããªã«ãšã³ããªãè¿œå ããããšã«ãããè¿œå ã®ãšã©ãŒæ
å ±ã®è¡šç€ºãå床æå¹ã«ã§ããŸãã ããã«ã
superuser.comã§ã®æ£ããçãããããŸã ã
ããã«å¿ããŠã¬ãžã¹ããªãç·šéããåŸãBIOSã§ã¡ã¢ãªåãããã³ã°æ©èœãå床ãªã³ã«ããWindowsãèµ·åããŸããã BSODã®å·Šäžé
ã«4ã€ã®è¿œå ã³ãŒãã衚瀺ãããããã«ãªããŸããã
ãããïŒ ãããã£ãŠããã©ã¡ãŒã¿ãŒ1ã¯0x0000000000000002ã§ãã Microsoftã®ããã¥ã¡ã³ãã§ã¯ã0x02ã«çãããã©ã¡ãŒã¿ãŒ1ã¯ãPCIã«ãŒããã¹ã®ãªãœãŒã¹ã®ãªã¹ãã®åŠçã«åé¡ãããããšã瀺ããŠããŸãã ãã©ã¡ãŒã¿ãŒ2ã3ãããã³4ã¯ããããªå€ã®ããã«èŠããããããããã¯ãããããã€ã³ã¿ãŒã§ãã ãããŠãããã«ãã€ã³ã¿ãããªãå ŽåãMicrosoftã¯ãåé¡ã¯PCIãã³ãŒãé åãE820 BIOSã«ãã£ãŠè¿ãããã¡ã¢ãªé åã®ãªã¹ããšéè€ããããšã ãšèšããŸãã
ããã£ã å€ãã®æ
å ±ããããŸãããã©ããã§èª¿æ»ãéå§ã§ããŸãã E820 BIOSãåŒã³åºããšã¡ã¢ãªé åã«é¢ããæ
å ±ãã©ã®ããã«æäŸãããããšããæ
å ±ãèŠã€ããŸããã ãã®åŸã圌ã¯Linuxã«æ»ããdmesgã³ãã³ãã䜿çšããŠãE820ãšACPIã«ç¹ã«æ³šæããŠããã¹ãŠã®ã«ãŒãã«éå§æ
å ±ã調ã¹ãŸããã èŠã€ãã£ããã®ã¯æ¬¡ã®ãšããã§ãã
BIOS-e820ïŒ[mem 0x0000000000000000-0x000000000009ebff]䜿çšå¯èœ
BIOS-e820ïŒ[mem 0x000000000009ec00-0x000000000009ffff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x00000000000e0000-0x00000000000fffff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x0000000000100000-0x00000000cf77ffff]䜿çšå¯èœ
BIOS-e820ïŒ[mem 0x00000000cf780000-0x00000000cf78dfff] ACPIããŒã¿
BIOS-e820ïŒ[mem 0x00000000cf78e000-0x00000000cf7cffff] ACPI NVS
BIOS-e820ïŒ[mem 0x00000000cf7d0000-0x00000000cf7dffff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x00000000cf7ed000-0x00000000cfffffff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x00000000fee00000-0x00000000fee00fff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x00000000ffb00000-0x00000000ffffffff]äºçŽæžã¿
BIOS-e820ïŒ[mem 0x0000000100000000-0x000000042fffffff]䜿çšå¯èœ
åŸã§ç§ã¯ãããèŠãŸããïŒ
acpi PNP0A08ïŒ00ïŒãã¹ãããªããžãŠã£ã³ããŠãç¡èŠ[mem 0x400000000-0xfffffffff
ãŠã£ã³ããŠ]ïŒã·ã¹ãã RAM [mem 0x100000000-0x42fffffff]ãšç«¶åïŒ
ãã¹0000ãžã®PCIãã¹ãããªããžïŒ00
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[io 0x0000-0x0cf7ãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[io 0x0d00-0xffffãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[mem 0x000a0000-0x000bffffãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[mem 0x000d0000-0x000dffffãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[mem 0xd0000000-0xdfffffffãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[mem 0xf0000000-0xfed8ffffãŠã£ã³ããŠ]
pci_bus 0000ïŒ00ïŒã«ãŒããã¹ãªãœãŒã¹[ãã¹00-ff]
ããïŒ ç«¶åã®èŠåã衚瀺ãããŸããïŒ ç§ã¯ããã«æ°ã¥ããªãã£ãã§ãããããã¡ã¢ãªãã€ã³ã¹ããŒã«ããåŸãLinuxã¯ããŒãã®ãã³ã«ãã®ã¡ãã»ãŒãžã衚瀺ãå§ããŸããã BIOSã§ã¡ã¢ãªåãããã³ã°æ©èœãç¡å¹ã«ããŠLinuxãèµ·åããããšããŸããã ãã®å ŽåãæåŸã®e820é åã0x100000000ãã0x42fffffffffã«æ¶ããããã競åã¡ãã»ãŒãžãæ¶ããã¡ã€ã³ããªããžãŠã£ã³ããŠã0x400000000ãã0xfffffffffã«ãªã£ãå¥ã®ãã«ãŒããã¹ãªãœãŒã¹ãããªã¹ãã«è¡šç€ºãããŸããã
ããã§ã©ããªããŸãã Linuxã¯ã競åã«æ°ä»ããACPIãæäŸãã競åããPCIç¯å²ãç¡èŠããããã16 GBã§åäœããŸãããWindowsã¯å«æªæãæ±ããŠãã«ãŒã¹ã¯ãªãŒã³ãåãåºããŸãããBIOSã«åé¡ããããŸãïŒãWindowsã責ããããšã¯ã§ããŸããã å®éãéè€ããŠãããããæ··ä¹±ããŠããããšãããããŸãã
çŸæç¹ã§ã¯ãç¶è¡ãããã©ããã¯ããããŸããã§ããã 0x400000000ãã0x42fffffffffffãŸã§ã®ã¡ã¢ãªã®æåŸã®768 MBã¯ããã¶ãŒããŒããPCIã«äœ¿çšããã¡ã¢ãªé åã®å·šå€§ãªé åã®å
é ã«ããããããŸãã æããã«ããã¶ãŒããŒããPCIãæåŸ
ããŠããå Žåãæ¬åœã«æªãããšãèµ·ããå¯èœæ§ããããŸãã ãããã£ãŠããã¶ãŒããŒãã¯15.25 GBã®RAMã®ã¿ããµããŒãããŠããŸããïŒ
ããã... Linuxã§ã¯ããã®è¿œå ã®PCIãããã³ã°é åã®ãµããŒããªãã§ããã¹ãŠãããŸãæ©èœããŸãïŒ å€§ããªPCIç¯å²ã0x400000000ã®ä»£ããã«0x430000000ããå§ãŸãããã«ãã€ãŸãç©çRAMã®çµããã®çŽåŸã«ACPIããŒãã«ãäœããã®æ¹æ³ã§å€æŽãããšã©ããªããŸããã ãã®åŸã競åã解æ¶ãããPCIãããã³ã°ãŠã£ã³ããŠã®ã»ãšãã©ãåŒãç¶ã䜿çšå¯èœã«ãªããŸãã
åŒã³åºãã¯åãå
¥ããããŸãã
ACPIããŒãã«ãæãå§ããŸããã 幞ããªããšã«ãLinuxã¯ãã³ããéåžžã«ç°¡åã«ããŸãã ããã«ã¯ç¹å¥ãªããŒã«ããããŸãããsysfsã§ããŒãã«ãç°¡åã«èŠã€ããããšãã§ããŸãã
/ sys /ãã¡ãŒã ãŠã§ã¢/ acpi /ããŒãã«
ããã«ãããŸãã GRUBã«ACPIããŒãã«ãæ°ããããŒãžã§ã³ã«çœ®ãæããæ©äŒãããããšãå¬ããæããŸãã ãããã£ãŠãã©ã®ããŒãã«ãé¢ä¿ããŠããããèŠã€ããå ŽåãGRUBã䜿çšããŠãã®ããŒãã«ã®æ°ããããŒãžã§ã³ãã€ã³ã¹ããŒã«ã§ããŸãã çè«çã«ã¯ãWindowsã¯ããã«æºè¶³ããŠããŸãã
ä»ã®ããŒã«ã®äžã§ããç§ã¯
iaslã䜿çšããŠããŸããŸãªACPIããŒãã«ã解æãã眮æããå€0x400000000ãèŠã€ããŸããã ã»ãšãã©ã®å Žåããã®å€ã¯éãã€ãé ïŒãªãã«ãšã³ãã£ã¢ã³ïŒã§ãµã€ãºã¯64ããããªã®ã§ã
binwalkã
å®è¡ããŠãã¹ãŠã®ããŒãã«ãã¡ã€ã«ãæ€çŽ¢ããŸããã
binwalk -R '\ x00 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00' *
OEMBããŒãã«ã«ã¯1ã€ã®çµæããããŸããã 次ã®64ãããã¯ãŒãã¯0x1000000000ã§ãããã¡ã€ã³ããªããžãŠã£ã³ããŠã®ç«¶åã¡ãã»ãŒãžã®çµäºã¢ãã¬ã¹ããããããã«å€§ãããªããŸããã éåžžã«ææãªæãããã OEMBããŒãã«ã¯ãACPIä»æ§ã«ããæšæºããŒãã«ã§ã¯ãªããããç¹å¥ã§ãã Linuxã¯ç¡å¹ãªãã§ãã¯ãµã ã«ã€ããŠæå¥ãèšããŸãããããã¯åé¡ã§ã¯ãªããšæããŸãã ããªãã¯ç§ã次ã«äœãããããæšæž¬ãããšæããŸã...
OEMBããŒãã«ã®ã³ããŒãäœæãããã€ã0x04ã®çŽåã®ãã€ã0x00ã0x30ã«çœ®ãæããŠãå€ã0x430000000ã«å€æŽããŸãïŒããã¯éã®é åºã§ããããšãæãåºããŠãã ããïŒã ãã®å€æŽãããã³ããŒããã¡ã€ã«/boot/oemb.datã«é
眮ããŸãã ãã®åŸãGRUBã䜿çšããŠOEMBããŒãã«ãç§ã®ã³ããŒã«çœ®ãæãã次ã®ã³ãã³ããããŒãã³ãã³ãã®ãªã¹ãã«äžæçã«è²Œãä»ããŸããïŒUbuntuãéžæããåŸãGRUBã«æåãeããå
¥åããŸãïŒã
acpi --exclude = OEMB /boot/oemb.dat
ã¢ã€ãã¢ã¯ãOEMBããŒãã«ãé€ããã¹ãŠã®ACPIããŒãã«ãããŒããã次ã«/boot/oemb.datã®å
容ãããŒãããŠè¿œå ã®ããŒãã«ãšããŠè¿œå ããããã«GRUBã«æ瀺ãããšãããã®ã§ãã ããã«ãããå€ãOEMBããŒãã«ãæ°ããOEMBããŒãã«ã«å¹æçã«çœ®ãæããããŸãã
OKãLinuxãèµ·åããŠ...
acpi PNP0A08ïŒ00ïŒãã¹ãããªããžãŠã£ã³ããŠãç¡èŠ[mem 0x400000000-0xfffffffff
ãŠã£ã³ããŠ]ïŒã·ã¹ãã RAM [mem 0x100000000-0x42fffffff]ãšç«¶åïŒ
. WTF? , PCI - , , . , OEMB , .
iasl DSDT. , DSDT
_CRS
, .
iasl -d DSDT
.dsl _CRS, PCI, . DSDT , . _CRS . , _CRS , 0xCF78E064. Linux dmesg :
ACPI: Early table checksum verification disabled
ACPI: RSDP 0x00000000000F9820 000014 (v00 ACPIAM)
ACPI: RSDT 0x00000000CF780000 000044 (v01 012110 RSDT0821 20100121 MSFT 00000097)
ACPI: FACP 0x00000000CF780200 000084 (v01 012110 FACP0821 20100121 MSFT 00000097)
ACPI: DSDT 0x00000000CF780460 006FE7 (v01 946F1 946F1P06 00000000 INTL 20051117)
ACPI: FACS 0x00000000CF78E000 000040
ACPI: APIC 0x00000000CF780390 00008C (v01 012110 APIC0821 20100121 MSFT 00000097)
ACPI: MCFG 0x00000000CF780420 00003C (v01 012110 OEMMCFG 20100121 MSFT 00000097)
ACPI: OEMB 0x00000000CF78E040 000082 (v01 012110 OEMB0821 20100121 MSFT 00000097)
ACPI: HPET 0x00000000CF78A460 000038 (v01 012110 OEMHPET 20100121 MSFT 00000097)
ACPI: GSCI 0x00000000CF78E0D0 002024 (v01 012110 GMCHSCI 20100121 MSFT 00000097)
ACPI: DMAR 0x00000000CF790100 000090 (v01 AMI OEMDMAR 00000001 MSFT 00000097)
ACPI: SSDT 0x00000000CF7917C0 000363 (v01 DpgPmm CpuPm 00000012 INTL 20051117)
! OEMB. . OEMB?
dmesg OEMB. , , , GRUB , OEMB, . , DSDT 0xCF78E064 OEMB. - , - . .
DSDT, OEMB, , , GRUB , OEMB.
. GRUB
write_byte
,
write_word
,
write_dword
read_
. GRUB OEMB? BIOS' . , RAM, .
. GRUB:
write_byte 0xCF78E0B5 0x30
0x00 0x04 0x30, 64- PCI 0x0000000430000000. OEMB, Linux , , , , .
Linux dmesg PCI.
PCI host bridge to bus 0000:00
pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff window]
pci_bus 0000:00: root bus resource [mem 0x000d0000-0x000dffff window]
pci_bus 0000:00: root bus resource [mem 0xd0000000-0xdfffffff window]
pci_bus 0000:00: root bus resource [mem 0xf0000000-0xfed8ffff window]
pci_bus 0000:00: root bus resource [mem 0x430000000-0xfffffffff window]
pci_bus 0000:00: root bus resource [bus 00-ff]
! 0x430000000-0xfffffffffff , . , Linux , Windows .
! Windows 16 RAM, GRUB write_byte. Windows 10, , . - Windows, , RAM, . !
GRUB, /etc/grub.d/00_patchbios :
# This file patches the BIOS in my Foxconn P55MX motherboard to work
# properly when I have 16 GB of RAM installed. It's a nasty hack.
# Basically, the BIOS is hardcoded in the OEMB ACPI table
# to have a PCI address range from 0x400000000 to 0xfffffffff, but
# that overlaps with 16 GB of RAM being installed, because the RAM
# uses up (among other ranges) 0x100000000 to 0x42fffffff.
# This patch changes the table to actually list a PCI range of:
# 0x430000000 to 0xfffffffff
echo "write_byte 0xCF78E0B5 0x30"
sudo update-grub
. GRUB.
, . PCI - . , RAM. Linux 16 RAM, . , PCI/PCIe - , , , , . , , , ACPI BIOS .
, , ! , - . , .