Linux, 工作, 生活, 家人

Gentoo

[Gentoo] 電腦升級案 32bit -> 64bit Linux

最近發現有一台電腦己經有點舊了, 首先是電源供應器的風扇掛了, 這個電源供應該應該有十年了, 印像中還沒有支援新的 ATX 接頭, 當年好像是用很便宜的價格從瘋狂賣客買的.
將電源風扇換成磁浮風扇之後, 似乎有好一點, 不過問題是, 很難開機, 還好這一台是一開就不關的 Server.
但是最近工作型態改變, 而且我買了一個瓦特計(像這樣), 沒事就在量電腦的電量. 發現常常使用的測試用電腦瓦特數非常高, Intel Q6600 + ATI 4850 要耗用 200W 左右.

所以最近就在找下一代的解決方案. 目標高效低功耗PC.

接下來是新電腦清單
CPU: Intel i5-4670T 45W

本來有考慮 Intel i5-4570T, Max TDP 少 10W, 但是速度比較快, 後來想想, 如果要 Multi-Thread 編 Code , 還要跑 VM 的話, 還是多核好一點. 所以後來就選 4670T. 不管是 4570T/4670T, 台灣都買不到, 只有向淘寶購物, 這也是我第一次跑去淘寶買東西. 不過搞進來花了不少時間, 不清楚轉運規則呀(而且淘寶網頁流程也寫的不清楚, 轉運公司更是複雜, 搞好久才知道原來洶寶上的電話才是該打的電話, 轉運公司的客服無法處理國際單). 弄進來這顆 CPU 是 QS 版, 雖然不是 ES 版(QS/ES差別), 但是還是有點悶. (購入價是比 Tray 低一點啦, 4570T 有 BOX 價, 一般人可以考慮買這個). TRAY 的缺點是沒有風扇, 還好我之前有不小心多買一套 CPU 風扇, 所以將就著用…… Intel 為什麼不出 BOX 版… -_-!

另外, 4670T 那個 Up To 3.3G 是指只開1核時, TurboBoost 可以到 3.3G, 四核全開只能到 2.9G. (我也被搞混一陣子過, 所以現在清楚了).
詳情可以看這個網頁 Intel® Core™ i5 Desktop Processor Turbo boost frequency table
BIOS 還是有可以調整的選項, 我猜四核要跑 3.3G 也是可以, 只是 TDP 就不是 45W 了, Max TDP BIOS 內也可以調整(驚!!).

MotherBoard: Gigabyte H87-D3H

之前某一次用 ASUS 接 HDMI 還是 DVI 輸出有問題, 沒有辦法正確判斷電視種類, 但是 Gigabyte 的主機板 OK, 之後就都換 Gigabyte 的, 目前二塊在我手上還活的好好的, 所以第三塊還是用 Gigabyte 的. 也沒有特別的理由. 選這塊的原因是因為內建 Intel 網卡. 不過電腦機殼就只能選 ATX 了.

Power: 海韻 S12G 450W 金牌

我承認我選 Power 就是看那家貨比較齊全就買那家的, 金牌 450W 很難選, 生產的不多, 這個也沒有模組化, 不過我用過模組化的 Power , 又不是會飛天會唱歌, 所以有和沒有都 OK. 至於金牌和銅牌的論述就算了, 我自己拿來做 Server 的, 省個 5% 也高興, 反正金牌和銅牌沒有差很多, 就當買心理因素吧 XD.

Case : Cooler Master Silencio 550

上一個 Case 是買 Antec 的 P280 靜音機殼, 其實沒有感覺很安靜. 比較起來, CM 550 用料和 P280 各有優缺點, 很難說誰好誰不好, 不過CM 550 有一個 SATA 插槽, 這個還不錯, 可以拿來 hot-plug 用. 硬碟是橫置, 免螺絲, 不過還是要拆背蓋才能裝 Power 和 Cable. 這樣設計沒有比較好, OK?
不過我的 Antec P280 有一個墊子壞了, 寫信問代理商沒有回, 丟 FB 也還沒有回… 呃. 希望 CM 會好一點. 對了, CM 多一個 SD 插槽, Linux 下抓的到, 算是加分吧.

記憶體 : 用舊的KingSton DDR3-1067 (省錢 XD)

HDD : Seagate NAS 64M ST3000VN000

3T 的硬碟要搞開機有點麻煩. 不過還是要用.

花了一些功夫的成果照

接下來來是 Gentoo 安裝心得, 各位可以 END 看最後面了.

在做完了基本的 memory test 之後, 接下來就是開始安裝 Gentoo.
*) Use Legacy BIOS
首先第一件事情, 強迫BIOS使用 Legacy BIOS, UEFI 貌似也可以用, 不過我並不打算花時間研究這個, 而且這一台電腦並沒有要裝 Windows. (剛想到, 以前都拿舊電腦裝 Linux, 現在買新的裝 Linux. 十年河東十年河西呀…)

因為這次是要安裝 64Bit Linux, 所以是拿 kubuntu 13.10 x64 版開機.
(P.S 這不是安裝手冊, 所以我只會記錄我覺得重要的部份).

*) Booting Disk.
如何讓 BIOS 認到 3T 的硬碟是最重要的, 要安裝套件 gdisk 取代 fdisk. 忘了 parted 吧, 那是給 geek 用的 (誤)
# apt-get install gdisk
這時候還是用 kubuntu 哦….

重點
1) 要切一個 1M Partition 給 UEFI 用(我有預留,不確定不留可不可以)
2) 沒有 Primary Partition 的概念了.
3) Partition Code 不一樣, 第一個 Partition ID 是 EF02, Linux Raid 是 FD00

系統切四個, UEFI, System , Data, Swap , 看起來像這樣

Disk /dev/sda: 5860533168 sectors, 2.7 TiB
Logical sector size: 512 bytes
Disk identifier (GUID): 601175B7-D96A-4316-AA27-856D195717F4
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 5860533134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number Start (sector) End (sector) Size Code Name
1 2048 4095 1024.0 KiB EF02 BIOS boot partition
2 4096 209719295 100.0 GiB FD00 Linux RAID
3 209719296 5830086655 2.6 TiB FD00 Linux RAID
4 5830086656 5860533134 14.5 GiB FD00 Linux RAID

接下來將 sda 的 partition copy 到 sdb 去
# sgdisk -R=/dev/sdb /dev/sda
重新亂數產生 sdb 的 UUID
# sgdisk -G /dev/sdb
大功告成, 接下來就可以檢查 sdb , 沒有問題之後就可以建 Raid 了.

Ref:
http://en.wikipedia.org/wiki/BIOS_Boot_Partition_%28GPT%29
http://forums.funtoo.org/viewtopic.php?pid=9944

*) Create Raid / Format Disk
可以參考我自己以前寫的文章(Linux Software Raid 系統轉移)
# modprobe raid1
# apt-get install mdadm
GRUB2 開機一定要 0.90 的 raid partition, 我沒有找到用新版也可以的文章, 不想賭人品.
# mdadm –create /dev/md1 -l 1 -n 2 –metadata=0.90 /dev/sda2 missing
其他不用應該沒關係.
# mdadm –create /dev/md2 -l 1 -n 2 /dev/sda3 missing
# mdadm –create /dev/md3 -l 1 -n 2 /dev/sda4 missing

先建一顆, 等到去睡覺的時候再 Sync .

Grub 1.97 之後有支援 ext4, 不過在 grub 內的 module name 還是叫 ext2.mod .
# mkfs.ext4 /dev/md1
# mkfs.ext4 /dev/md2
# mkswap /dev/md3

* ) Download Gentoo stage3 x64 from server
ftp://ftp.twaren.net/Linux/Gentoo/releases/amd64/current-stage3

* ) Modify Gentoo Configure

# mount –bind /proc proc
# mount –bind /sys sys
# mount –bind /dev dev
# chroot disk

modify /etc/portage/make.conf
# nano /etc/portage/make.conf

GENTOO_MIRRORS=”
ftp://ftp.twaren.net/Linux/Gentoo
http://gentoo.oregonstate.edu
ftp://ftp.nsysu.edu.tw/Unix-like/Gentoo/

SYNC=”rsync://rsync.tw.gentoo.org/gentoo-portage”

MAKEOPTS=”-j5″

https://wiki.gentoo.org/wiki/AMD64/FAQ

# echo “nameserver 8.8.8.8″ > /etc/resolv.conf
# emerge sync

修改 /etc/fstab
用 blkid dump 出來之後, 填到 fstab 去
# blkid
# vim /etc/fstab
/dev/md1: UUID=”a12d45e4-3eab-4f12-ba6a-111111111111″ TYPE=”ext4″
/dev/md2: UUID=”a34bb49d-6ecd-4f34-8a1b-222222222222″ TYPE=”ext4″
/dev/md3: UUID=”856c43d9-00ef-4756-9732-333333333333″ TYPE=”swap”

After installation edit /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT=”root=/dev/md1 real_root=/dev/md1 rootfstype=ext4 net.ifnames=0″
有人說加 domdadm, 不過對我沒有用, net.ifnames=0 就是用傳統的 ethernet 命名方式, 要不然 Gentoo 又要用 PredictableNetworkInterfaceNames 了.
我覺得這個超麻煩的, 雖然安全一點, 不過我不喜歡.
Ref. http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

# ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules
另一種 Disable PredictableNetworkInterfaceNames 的方式

我後來在 Kernel 內有看到 Predictable Network Interface Name 的選項, 早知道後來要改很多次 Kernel , 就直接在 Kernel compile 時閹了它.

setlocale: LC_ALL: cannot change locale (zh_TW.UTF-8)
解法參考:http://ubuntuforums.org/showthread.php?t=1471876

vim /etc/locale-gen
add
zh_TW UTF-8
zh_TW.UTF-8 UTF-8

than
# locale-gen

*) Install GRUB
如果在 install GRUB 時有看到奇怪的字串像是
Path `/boot/grub’ is not readable by GRUB on boot.
記得要裝 mdadm 才會正常

# emerge mdadm
兩個目錄一樣
# ln -sf /boot/grub /boot/grub2
# grub2-mkconfig -o /boot/grub2/grub.cfg
# grub2-install /dev/sda
# grub2-install /dev/sdb

如果有裝完 mdadm, grub 應該安全就沒有問題了

*) Linux Kernel
RTC 和 USBSerial 相關的 Driver 要裝一裝.

如果要讓 lm_sensor 可以正常運作, it87 module 要 install
所以要 edit /etc/conf.d/modules , 加上.
modules=”it87 intel-agp nf_nat_pptp nf_nat_proto_gre”

*) X
這是一個神奇的經驗, 我第一次知道原來 X 是不用設定任何東西的.
首先按照
https://wiki.gentoo.org/wiki/Xorg/Configuration
在 Kernel 加上
[TEXT]
< *> Intel 8xx/9xx/G3x/G4x/HD Graphics
[*] Enable modesetting on intel by default
[/TEXT]
這選項非常重要.

edit /etc/portage/package.use
加上
x11-drivers/xf86-video-intel dri glamor sna udev uxa xvmc
全開就對了.
然後 X 就莫名奇妙的動起來了 (什麼 O_O)

*) MySQL ==> MariaDB

MariaDB 是從 MySQL Fork 出來的 Project .
http://en.wikipedia.org/wiki/MariaDB

大家都知道, MySQL 自從被 Oracle 拿到之後, 就千方百計的想要消滅它.
不過這也無可厚非, business is business.

這邊就是直接搬 mysql db 過去, 用 mysql_upgrade 升級
不過這邊有一個問題, mysql 自己的 innodb 似乎升不過去,
可能要用 mysql_dump , 我自己那些 db 都是不重要的, 所以就……

# /etc/init.d/mysql stop
# emerge -1 mariadb
# /etc/init.d/mysql start
# mysql_upgrade -u root -p
# mysqlcheck –repair –all-databases -u root -p

Ref:
http://od-eon.com/blogs/stefan/migrating-from-mysql-to-mariadb-on-gentoo/

*) Samba
smbpasswd 不能用了
改用
pdbedit -a -u user
加入
選項與參數:
-L :列出目前在資料庫當中的帳號與 UID 等相關資訊;
-v :需要搭配 -L 來執行,可列出更多的訊息,包括家目錄等資料;
-w :需要搭配 -L 來執行,使用舊版的 smbpasswd 格式來顯示資料;
-a :新增一個可使用 Samba 的帳號,後面的帳號需要在 /etc/passwd 內存在者;
-r :修改一個帳號的相關資訊,需搭配很多特殊參數,請 man pdbedit;
-x :刪除一個可使用 Samba 的帳號,可先用 -L 找到帳號後再刪除;
-m :後面接的是機器的代碼 (machine account),與 domain model 有關!

http://linux.vbird.org/linux_server/0370samba.php

*) radvd
如果有出現
“radvd could not daemonize”
建 radvd 的 /var/run/radvd 並且 chown radvd .

*) cacti
抓自身的 snmp 要用 127.0.0.1 , 不能用 localhost .
編輯 /etc/portage/package.use
net-analyzer/net-snmp lm_sensors diskio ucd-compat netlink

Ref:
http://forums.cacti.net/about15067.html
http://www.powercram.com/2010/01/multi-cpu-graphing-in-cacti.html

*) konqueror 一直開一直開 (我是裝 KDE)
http://forums.gentoo.org/viewtopic-t-966160-start-0.html
裝 dolphin 就好了

*) 中文
幹, 什麼年代了, 中文還是很難搞. 而且裝了還是很難用 (哭哭)
# emerge scim-bridge scim-tables
按照 Gentoo 的文件 http://www.gentoo-wiki.info/Input_Methods
加上
[Qt]
DefaultInputMethod=scim-bridge

在 ~/.xprofile 加上
[TEXT]
export LC_CTYPE=zh_TW.UTF-8
export GTK_IM_MODULE=scim-bridge
export QT_IM_MODULE=scim-bridge
export XMODIFIERS=”@im=SCIM”
scim -d
[/TEXT]

*) Dropbox
emerge net-misc/dropbox
再在 user mode 下執行 dropbox 就可以了.

*) Power/Frequency
結論是, 什麼都不用動. 系統會自己跑 800Mhz~2.9G.
Linux kernel version 3.12.3-gentoo. 看起來問題不大.

不過 cpufreq-info 回報的 CPU Frequency 是錯的, 要用 i7z 去看.
如果 i7z 執行有問題, 可以參考這個網頁最後 patch 一下就可以執行了.
https://bbs.archlinux.org/viewtopic.php?pid=1306943
P.S 我是 patch 之後會出現 C7 State .

可以開啟內鍵的 Intel pstate driver, 這會啟動 pstate-drver 取代 cpufreq-acpi 管理程式. 不過i7z 內顯示的頻率就會變得很怪, 但是按照 intel 的說法 ondaemnd 己經不適合 intel 目前的管理模式了, 我現在也不太確定到底什麼是正確的.
還是用原來的 cpufreq-acpi driver 跑 ondaemnd.

Ref.
https://bbs.archlinux.org/viewtopic.php?pid=1306943
http://forums.gentoo.org/viewtopic-p-7442152.html
http://forums.gentoo.org/viewtopic-p-7396848.html#7396848
phc-intel
http://forums.gentoo.org/viewtopic-t-932096-start-0.html
http://www.expreview.com/25426.html

*) Un-Plug SATA

# echo 1 > /sys/block/sdg/device/delete
or
# hdparm -F /dev/sdb # force flush write cache
# hdparm -Y /dev/sdb # spin down and switch off the drive completely (until the kernel makes it spin up again)

不過我都是 unmount 就算了.
Ref.
http://forums.gentoo.org/viewtopic-p-6660527.html?sid=e63439cb70cd4c79f96cec3249590058

*) Vmware 抓不到 USB Device 的問題

在 /etc/init.d/vmware 前先執行
# /etc/init.d/vmware-USBArbitrator start
可以用
# rc-update add vmware-USBArbitrator boot
確保先執行.

如果沒有這個檔案, 可以解開 vmware 的 Package 再 copy 進去.

*) Sound
預設 sound 應該就可以工作, 有一個小問題是要在 alsa 內指定 default sound device.
要不然就會有如下的字樣
[TEXT]
ALSA lib pcm_dmix.c:1022:(snd_pcm_dmix_open) unable to open slave
[/TEXT]

可以在 ~/.asoundrc 加入如下的內容就可以了
[TEXT]
defaults.pcm.!card 1
defaults.pcm.!device 7

pcm.!default {
type hw
card 1
}

ctl.!default {
type hw
card 1
}
[/TEXT]
可以用
# aplay -L
# aplay -l
查看 device 和 hw mixer 的資訊

Ref.
Gentoo USB Device not Reconzgized
https://bbs.archlinux.org/viewtopic.php?pid=1356156

*) Disable UltraNav Touchpad
首先安裝 xinput
# emerge -av xinput

再來就是用 xinput 列出 device
[TEXT]
$ DISPLAY=:0 xinput
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ Logitech USB-PS/2 Trackball id=13 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint id=10 [slave pointer (2)]
⎜ ↳ Synaptics Inc. Composite TouchPad / TrackPoint id=9 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=14 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Keyboard with UltraNav id=11 [slave keyboard (3)]
↳ Lite-On Tech IBM USB Keyboard with UltraNav id=12 [slave keyboard (3)]
[/TEXT]
“Synaptics Inc. Composite TouchPad / TrackPoint id=9 [slave pointer (2)]” 這個就是我們要 Disable 的目標.

執行
# xinput –set-prop 9 “Device Enabled” 0
就可以 Disable touch pad, 如果要重新啟動, 就執行
# xinput –set-prop 9 “Device Enabled” 1
id = 10 的那個是小紅點, 如果不小心 diable 小紅點, 可以交換一下 id 試試看

*) 心得

這一台是我今年年末大升級的機器, 雖然花了將近一萬五. (驚, 有這麼多).
不過在節能上還是看起來很威的.
舊平台是 4850e + 780G + 4*HDDs, 當然 Power , HDD 也有差異, 不過應該相去不遠.

待機耗電 : 3.xW (OLD: 10W)
開機不跑程式 : 58W (如果只有裝 2*HDDs, 是 3xW, OLD: 9XW)
全速執行程式 : 100W (OLD: 130W)
一核全速 : 6XW (只有裝 2*HDDs)

大概比前一個平台省了約 30~40W, 算是小弟對節能的小小貢獻.

若是和另一台 Q6600 + ATI 4850 顯卡比, 這一台待機就要耗 160W, 跑個程式就要耗 210W 以上. 想必新電腦省電很多很多了 :p
和 Q6600 (o.c 3.0G) 比, 這台的 compile 速度也快上很多, 不過我不知道是不是我的心理因素, 我沒有去測試過. 不過應該符合我目前對這個平台速度和節能的期望了.

一句話: 我很滿意 🙂

==
VMWARE workstation 12 or VMWARE Player 12 在新的系統有個小問題 USB Arb 有錯誤訊息, 有跑 Process 不過懶得查了, 短時間沒找到解決方案, 改用 VirtualBox

2016-04-25T04:24:42.623+08:00| usbArb| I125: VMware USB Arbitration Service Version 15.1.7
2016-04-25T04:24:42.623+08:00| usbArb| I125: USBGL: USB Sysfs found at /dev/bus/usb
2016-04-25T04:24:42.623+08:00| usbArb| I125: USBArb: Attempting to connect to existing arbitrator on /var/run/vmware/usbarbitrator-socket.
2016-04-25T04:24:42.623+08:00| usbArb| I125: SOCKET creating new socket, connecting to /var/run/vmware/usbarbitrator-socket
2016-04-25T04:24:42.623+08:00| usbArb| I125: SOCKET connect failed, error 2: No such file or directory
2016-04-25T04:24:42.623+08:00| usbArb| I125: USBArb: Failed to connect to the existing arbitrator.
2016-04-25T04:31:01.719+08:00| usbArb| I125: USBArb: UsbArbPipeConnected: Connected to client, socket:4
2016-04-25T04:31:01.730+08:00| usbArb| I125: USBArb: Closing client, error:2
2016-04-25T04:31:01.730+08:00| usbArb| I125: USBArb: Client 0 disconnected

 

升級到 Linux kernel 4.5 直接安裝 app-emulation/vmware-modules 就可以了

後記: 升級到 Linux kernel 3.18 long term stable version

vmware 要從這邊下載 patch
https://aur.archlinux.org/packages/vmware-patch/

記得 kvm 要關
https://wiki.archlinux.org/index.php/VMware

Kernel 3.18 要升級到 udev 2.16 以上, userspace firmware helper 要關掉.
https://wiki.gentoo.org/wiki/Udev/upgrade

3 留言

  1. 小弟用RaspberryPi跑下面的服務:
    1. NAT
    2. Web server
    3. Samba server
    比用PC省電很多皮董可以評估看看。
    理論最大耗電50W以下,詳細可參考此連結https://docs.google.com/spreadsheet/ccc?key=0Al9Pllast922dEs3T2pNaHdnV0ZuN2ZHWHI4eU1NY2c&usp=sharing

  2. 文章作者的留言

    我手上有比 RaspberryPi 更 Powerful 的 Platform . (ARM11MPCore/ARM9/MIPS4Core).
    不過問題是不能跑 VM/Cross Platform compiler.

    其實這個平台最耗電的是硬碟, 其他的是小咖的呀.

  3. TimLog

    i5-4670T 或 i5-4690T 要怎麼訂 ? 有人說乾脆到 intel 官網去訂,
    但我不清楚訂的方式,淘寶網有辦法嗎 ? 還是可以有另外別的方法 ?
    (有要跑 VM 和 其他 Eumlator )

回覆留言對象 取消回覆