2018年12月28日 星期五

Gentoo 使用 soft raid

參考 https://wiki.gentoo.org/wiki/Complete_Handbook/Software_RAID

要加上 kernel modules
raid0, 或其他的

移除舊的 disk array
mdadm --stop /dev/md0
mdadm --remove /dev/md0
建立由 2 顆硬碟構成 mirror 的 disk array
mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdd1 /dev/sde1
蠻奇怪的,原先並未先建立 partition,直接用 /dev/sdd 及 /dev/sde,建好的 array 會不見,查到的一些資料,是用 /dev/sdd1 及 /dev/sde1,那就試試看先建 partition,再建 raid。
這裡有人討論使用整顆硬碟與分割區來建立 raid 的差別,What's the difference between creating mdadm array using partitions or the whole disks directly

檢視 disk array 建立的進度
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md0 : active raid1 sde1[1] sdd1[0]
      7813893440 blocks super 1.2 [2/2] [UU]
      [=>...................]  resync =  6.2% (489861248/7813893440) finish=678611.9min speed=179K/sec
      bitmap: 58/59 pages [232KB], 65536KB chunk

unused devices: <none>


檢視 disk array 的細節
# mdadm --detail /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Fri Dec 28 21:58:07 2018
        Raid Level : raid1
        Array Size : 7813894464 (7451.91 GiB 8001.43 GB)
     Used Dev Size : 7813894464 (7451.91 GiB 8001.43 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

     Intent Bitmap : Internal

       Update Time : Sat Dec 29 16:57:35 2018
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : bitmap

              Name : aj-i7:0  (local to host aj-i7)
              UUID : 6240fb09:05a34525:822baca9:8744a832
            Events : 13861

    Number   Major   Minor   RaidDevice State
       0       8       48        0      active sync   /dev/sdd
       1       8       64        1      active sync   /dev/sde

要把硬碟加回 disk array 時
mdadm /dev/md1 --re-add /dev/sda2
使用 mdadm --assemble 指令,可以重新 Assemble 先前建立的 array。

使用上,不用建立分割區,直接 mkfs.ext4 /dev/md0 即可。

使用的問題

剛開始使用,還不熟悉,常常不曉得 disk array 在那裡。
建好後,隔幾天又找不到 raid 了,
# mdadm --detail /dev/md0
mdadm: Array associated with md device /dev/md0 does not exist.
一直以為它又死了,再看 proc 的 status,卻又存在
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md127 : active (auto-read-only) raid1 sdd1[0] sde1[1]
      7813893440 blocks super 1.2 [2/2] [UU]
      bitmap: 0/59 pages [0KB], 65536KB chunk

unused devices: <none>
後來用 scan,終於找到了,不曉得怎麼改名了,改名的規則也不知是什麼。

# mdadm --detail --scan
ARRAY /dev/md/aj-i7:0 metadata=1.2 name=aj-i7:0 UUID=c984ff63:4925d7b3:d8922bdc:e9cc0d57

# ls -l /dev/md*
brw-rw---- 1 root disk 9,   0  2月 13 10:06 /dev/md0
brw-rw---- 1 root disk 9, 127  2月 13 10:06 /dev/md127

/dev/md:
總計 0
lrwxrwxrwx 1 root root 8  2月 13 10:06 aj-i7:0 -> ../md127

還在慢慢的適應這個玩意中。


Gentoo 使用 lm_sensors

參考 http://linux.vbird.org/linux_basic/0610hardware/0610hardware-fc4.php

# emerge -av sys-apps/lm_sensors

# sensors-detect
Scan for sensors of south bridges, CPUs or memory controllers
Intel digital thermal sensor...                             Success!
    (driver `coretemp')
Scan for Super I/O sensors
Found `Nuvoton NCT6793D Super IO Sensors'                   Success!
    (address 0x290, driver `nct6775')

probe the I2C/SMBus adapters now? (YES/no): 
Using driver `i2c-i801' for device 0000:00:1f.4: Kaby Lake (PCH)
Module i2c-dev loaded successfully.

Now follows a summary of the probes I have just done.
Driver `coretemp':
  * Chip `Intel digital thermal sensor' (confidence: 9)

Driver `nct6775':
  * ISA bus, address 0x290
    Chip `Nuvoton NCT6793D Super IO Sensors' (confidence: 9)

執行 etc-update,寫入設定檔,其所產生的 /etc/modules-load.d/lm_sensors.conf,。如下
# Generated by sensors-detect on Fri Dec 28 19:43:42 2018
coretemp
nct6775

要重新編譯 kernel,make xconfig 或 make menuconfig,加上下面兩個 driver module。
在 Device Drivers/Hardware Monitor Support 項目下
Intel Core/Core2/Atom temperature sensor (SENSORS_CORETEMP)
Nuvoton NCT6775F and compatibles (SENSORS_NCT6775)

 # make -j8 && make modules_install && make install

2018年12月21日 星期五

使用 rclone 同步雲端硬碟

原來是使用 net-misc/drive 的 Google Drive client 來同步 Google 的雲端硬碟。可是在使用 push 指令來 sync 整個目錄時,會一直出現很多個重複的目錄,例如
ds +- etc/a.txt
   +- etc/b.txt
   +- etc/....

好像也沒有辦法避免這種困擾,猜想在進行同步時,是可以平行上傳檔案,而 Google drive 是以 unique id 來代表,如下列網址代表 [我的雲端硬碟 > ds > etc] 的目錄
https://drive.google.com/drive/folders/1TNCFVIHv8wzcOvAt2q0xq7VL2TyFzJfe?ogsrc=32
後來,找到 rclone 這個程式,可以指定一次傳一個檔案,就可以解決上述問題。另外,這個程式看起來,更成熟完備一點。

sync 的指令
rclone sync "dspace.calendar/etc/" "gDspace:GET_proj/dspace_backup/dspace.calendar/etc" -v -u --fast-list -P --checkers 1 --transfers 1
要注意目錄的表示法,不然會 sync 到上一層或下層目錄。

備份的畫面
2018-12-22 10:53:35 INFO  : assetstore/11/01/26/110126386227520817426129509087509376115_dir/00001/TileGroup0/1-0-1.jpg: Copied (new)
2018-12-22 10:53:41 INFO  : assetstore/11/01/26/110126386227520817426129509087509376115_dir/00001/TileGroup0/1-1-0.jpg: Copied (new)
2018-12-22 10:53:43 INFO  : assetstore/11/01/26/110126386227520817426129509087509376115_dir/00001/TileGroup0/1-1-1.jpg: Copied (new)
Transferred:      694.862M / 1.385 GBytes, 49%, 213.906 kBytes/s, ETA 57m44s
Errors:                 0
Checks:               155 / 155, 100%
Transferred:          547 / 10549, 5%
Elapsed time:    55m26.3s
Transferring:
 *     assetstore/11/01/26/…TileGroup0/2-0-0.jpg: 100% /10.567k, 0/s, -


2018年12月20日 星期四

在 Gentoo 啟動 Vmware Workstation Server

首先使用  stefantalpalaru 的 gentoo-overlay/app-emulation/ 安裝 vmware-workstation-15.0.2.10952284-r2。USE flag 主要為 "server -bundled-libs"。

產生憑證

要產生憑證,參考 Create Self-Signed Certificates
建立 openssl.cnf
[req]
default_bits            = 2048
default_keyfile         = rui.key
distinguished_name      = req_distinguished_name
#Don't encrypt the key
encrypt_key             = no
prompt                  = no
string_mask             = nombstr

[ req_distinguished_name ]
countryName             = US
stateOrProvinceName     = California
localityName            = Palo Alto
0.organizationName      = VMware, Inc.
emailAddress            = ssl-certificates@vmware.com
commonName              = localhost.localdomain
然後執行指令
openssl req -nodes -new -x509 -keyout rui.key -out rui.crt -days 3650 -config openssl.cnf
再將 rui.crt 和 rui.key 複製到 /etc/vmware/ssl/ 的目錄下。

其實在 trace 安裝的程式檔後,發現不用這麼麻煩,在安裝的 /etc/init.d/vmware-workstation-server 中,即有檢查和產生憑證的指令
# Check if certificates exist.  If not, we need to generate them, ala sshd.
if [ ! -e /etc/vmware/ssl/rui.key -o ! -e /etc/vmware/ssl/rui.crt ]; then
    checkpath -d -m 0600 /etc/vmware/ssl
    openssl req -x509 -days 365 -newkey rsa:2048 -keyout /etc/vmware/ssl/rui.key -out /etc/vmware/ssl/rui.crt -config /etc/vmware/ssl/hostd.ssl.config
    checkpath -f -m 0600 /etc/vmware/ssl/rui.key /etc/vmware/ssl/rui.crt
fi

建立 service

參考 /etc/init.d/vmware-workstation-server,建立 /lib/systemd/system/vmware-workstation-server.service
[Unit]
Description=VMware Workstation Server
Wants=vmware-authentication.service
Wants=vmware.target

[Service]
Type=simple
PIDFile=/var/run/vmware/vmware-hostd.PID
#ExecStartPre=/opt/vmware/sbin/vmware-authdlauncher
ExecStart=/opt/vmware/bin/vmware-hostd -a -d /etc/vmware/hostd/config.xml

Restart=on-abort

[Install]
WantedBy=multi-user.target
在 terminal 中,以 root 的身分執行 vmware,會出現下列錯誤 
/opt/vmware/lib/vmware/bin/configure-hostd.sh: line 15: rc-service: command not found

rc-service 的指令,那是 OpenRC 的指令,查詢 service 的 status。後來在 CentOS 7 安裝,參考安裝後的程式,確認其功能,若是啟動則傳回 on,否則為 off。

修改 /opt/vmware/lib/vmware/bin/configure-hostd.sh,把 rc-service 的指令改成 systemctl。
#!/bin/bash

action="$1"

case $action in
  add)
    #rc-update -q add vmware-workstation-server default
    #rc-service vmware-workstation-server start
    systemctl -q enable vmware-workstation-server
    systemctl -q start vmware-workstation-server
    ;;
  remove)
    #rc-update -q del vmware-workstation-server default
    #rc-service vmware-workstation-server stop
    systemctl -q disable vmware-workstation-server
    systemctl -q stop vmware-workstation-server
    ;;
  status)
    # rc-service -q vmware-workstation-server status
    systemctl -q is-active vmware-workstation-server && echo on || echo off
    ;;
  *)
    exit 1
    ;;
esac
另外,可能出現下列錯誤,設定環境變數 export VMWARE_USE_SHIPPED_GTK=force,可解決問題
/opt/vmware/lib/vmware/lib/libstdc++.so.6/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/lib64/libproxy.so.1)
Failed to load module: /usr/lib/gio/modules/libgiolibproxy.so
後來,將 app-emulation/vmware-workstation 的 use flag 的 bundled-libs 拿掉,就不再出現上述錯誤。

在 /opt/vmware/bin 少了 vmware-vim-cmd,自行解壓 VM*.bundle,然後從 vmware-workstation-server 下 copy 過來。執行後,出現下列錯誤。
$ vmware-vim-cmd
filename:       /lib/modules/4.14.83-gentoo/misc/vmmon.ko
supported:      external
license:        GPL v2
description:    VMware Virtual Machine Monitor.
author:         VMware, Inc.
depends:        
retpoline:      Y
name:           vmmon
vermagic:       4.14.83-gentoo SMP mod_unload 
[AppLoader] Cannot get library dependencies. (4c)

[AppLoader] Fallback to use all shipped libraries.
[AppLoader] Cannot get library dependencies. (4c)

[AppLoader] Fallback to use all shipped libraries.
[AppLoader] Fail to launch with shipped libraries.
Fail to load executable. Exiting.
錯誤資訊在 /tmp/vmware-ajax 下,內容如下
$ cat vmware-apploader-9054.log
2019-01-28T11:04:53.416+08:00| appLoader| I125: Log for appLoader pid=9054 version=15.0.2 build=build-10952284 option=Release
2019-01-28T11:04:53.416+08:00| appLoader| I125: The process is 64-bit.
2019-01-28T11:04:53.416+08:00| appLoader| I125: Host codepage=UTF-8 encoding=UTF-8
2019-01-28T11:04:53.416+08:00| appLoader| I125: Host is Linux 4.14.83-gentoo Gentoo Base System release 2.6
2019-01-28T11:04:53.416+08:00| appLoader| W115: Unable to get output of command "/usr/bin/lsb_release -sd 2>/dev/null"
2019-01-28T11:04:53.416+08:00| appLoader| I125: Invocation: "/opt/vmware/lib/vmware/bin/vmware-vim-cmd"
2019-01-28T11:04:53.416+08:00| appLoader| I125: Calling: "/opt/vmware/lib/vmware/bin/vmware-vim-cmd"
2019-01-28T11:04:53.416+08:00| appLoader| I125: VMDEVEL not set.
2019-01-28T11:04:53.416+08:00| appLoader| I125: Using configuration file: /etc/vmware/config
2019-01-28T11:04:53.416+08:00| appLoader| I125: Use library directory: /opt/vmware/lib/vmware
2019-01-28T11:04:53.416+08:00| appLoader| I125: Setup root library: /opt/vmware/lib/vmware/bin/vmware-vim-cmd
2019-01-28T11:04:53.417+08:00| appLoader| I125: Try libraries from cached path.
2019-01-28T11:04:53.417+08:00| appLoader| E110: ldd(1) failed with errno 24: Too many open files (3,-1)
2019-01-28T11:04:53.417+08:00| appLoader| E110: ldd(1) failed with errno 24: Too many open files (4,-1)
2019-01-28T11:04:53.417+08:00| appLoader| I120: Fallback to use all shipped libraries.
2019-01-28T11:04:53.417+08:00| appLoader| E110: Fail to launch with shipped libraries.
2019-01-28T11:04:53.417+08:00| appLoader| W115: Unable to load dependencies for /opt/vmware/lib/vmware/bin/vmware-vim-cmd
2019-01-28T11:04:53.417+08:00| appLoader| W115: Unable to execute /opt/vmware/lib/vmware/bin/vmware-vim-cmd
上述 log 有兩個錯誤,第一個是缺少 lsb-release 指令,只要 emerge -av sys-apps/lsb-release 安裝即可。

另外一個是是
SSetup root library: /opt/vmware/lib/vmware/bin/vmware-vim-cmd

與 CentOS 下正常運作的結果比較,應該是
Setup root library: /usr/lib/vmware/lib/libvmware-vim-cmd.so/libvmware-vim-cmd.so
而 libvmware-vim-cmd.so 是一個指到 libvmware-hostd.so 的 link
# ls -l /usr/lib/vmware/lib/libvmware-vim-cmd.so/libvmware-vim-cmd.so 
lrwxrwxrwx. 1 root root 57  1月 27 15:21 /usr/lib/vmware/lib/libvmware-vim-cmd.so/libvmware-vim-cmd.so -> /usr/lib/vmware/lib/libvmware-hostd.so/libvmware-hostd.so

其實,/opt/vmware/lib/vmware/bin 下的執行檔,大多是指到 appLoader 的symbolic link,如 vmware,vmware-hostd 等。然而,像執行 /opt/vmware/bin/vmware-hostd 時,都可以正確的Setup root library,唯獨 vmware-vim-cmd 不行,真是詭異。

最後確認,只要建立正確的 symbolic link 即可。只是在嘗試的過程中,建立的 link 是錯的,就一直失敗。
# ln -sf /opt/vmware/lib/vmware/lib/libvmware-hostd.so/libvmware-hostd.so libvmware-vim-cmd.so/libvmware-vim-cmd.so

後來發現很早以前,自己就曾整理過相關資料了,Enable Vmware Workstation Server

systemctl stop vmware-workstation-server.target 時,自動開機的 VM 會自動關閉。不過VM 必須安裝 vmware tool。
# systemctl status vmware-hostd.service
 vmware-hostd.service - VMware Workstation Server
   Loaded: loaded (/lib/systemd/system/vmware-hostd.service; static; vendor preset: disabled)
   Active: deactivating (stop) since Tue 2019-01-29 12:51:41 CST; 18s ago
  Process: 30743 ExecStartPre=/bin/sh /opt/vmware/lib/vmware/bin/check-certificates.sh (code=exited, status=0/SUCCESS)
 Main PID: 30774 (vmware-hostd); Control PID: 31034 (sh)
    Tasks: 37 (limit: 4915)
   Memory: 3.0G
   CGroup: /system.slice/vmware-hostd.service
           ├─30774 /opt/vmware/lib/vmware/bin/vmware-hostd -a /etc/vmware/hostd/config.xml
           ├─30837 /opt/vmware/lib/vmware/bin/vmware-vmx -s sched.group= -# product=1;name=VMware Workstation;version=15.0.2;buildnumber=10>
           ├─31034 /bin/sh /opt/vmware/lib/vmware/bin/shutdown-autostart-vm.sh
           └─31052 /opt/vmware/lib/vmware/bin/vmware-vim-cmd -U root hostsvc/autostartmanager/autostop

 1月 29 12:51:41 aj-i7 sh[31034]: filename:       /lib/modules/4.14.83-gentoo/misc/vmmon.ko
 1月 29 12:51:41 aj-i7 sh[31034]: supported:      external
 1月 29 12:51:41 aj-i7 sh[31034]: license:        GPL v2
 1月 29 12:51:41 aj-i7 sh[31034]: description:    VMware Virtual Machine Monitor.
 1月 29 12:51:41 aj-i7 sh[31034]: author:         VMware, Inc.
 1月 29 12:51:41 aj-i7 sh[31034]: depends:
 1月 29 12:51:41 aj-i7 sh[31034]: retpoline:      Y
 1月 29 12:51:41 aj-i7 sh[31034]: name:           vmmon
 1月 29 12:51:41 aj-i7 sh[31034]: vermagic:       4.14.83-gentoo SMP mod_unload
 1月 29 12:51:42 aj-i7 /opt/vmware/lib/vmware/bin/vmware-hostd[30774]: Accepted password for user root from ::1

安裝完之後,/etc/vmware/netmap.conf 有網路的設定,不然 VM 會沒網路
# This file is automatically generated.
# Hand-editing this file is not recommended.
network0.name = "Bridged"
network0.device = "vmnet0"
network1.name = "HostOnly"
network1.device = "vmnet1"
network2.name = "NAT"
network2.device = "vmnet8"

還有要執行
emerge --config app-emulation/vmware-workstation
但很奇怪,執行之後,netmap.conf 的內容會不見

2018年12月18日 星期二

複製 CentOS 5 系統

老掉牙的系統,但為了讓系統繼續撐著,要想辦法轉成 VM。可以使用 Vmware 的 Converter 程式來將實體機轉成 VM。不幸的是,並非總是能成功的使用 Converter 來轉成 VM,我要轉的系統即是此種不成功的例子。既然如此,就藉此機會來練功一下,學習如何手動移轉 Linux 系統,不用重新安裝。

備份檔案

要複製系統的硬碟,視自己的狀況,可以直接接上電腦,也可以用 USB 界面連接。
首先,依據原系統的規劃及使用狀況,在新的硬碟上,建立分割區。由於 CentOS 5 的 bootloader 使用 GNU GRUB 0.97,硬碟的 partition table 只能用 MBR ,不能使用 GPT。

我所用的硬碟分割規劃如下
檔案系統              容量  已用 可用 已用% 掛載點
/dev/sda3            23G   16G  6.3G  72% /
/dev/sda5            19G  6.9G   11G  40% /home
/dev/sda1           243M   26M  205M  12% /boot
/dev/sda6           244G  170G   62G  74% /opt
然後,依次複製每個分割區的檔案,其中 -xdev 的選項,是只讀取該分割區的檔案。
mount /dev/sda1 /mnt/hdd
cd /boot
find ./ -xdev -print0 | cpio -pa0V /mnt/hdd

mmount /dev/sda3 /mnt/hdd
cd /
find ./ -xdev -print0 | cpio -pa0V /mnt/hdd

mount /dev/sda5 /mnt/hdd
cd /home
find ./ -xdev -print0 | cpio -pa0V /mnt/hdd
針對要複製的目錄,重複執行上述步驟。

重建 initrd

要下載 CentOS 5.x 的 ISO 來執行 linux rescue
重建 initrd 才行
mkdir /mnt/sysimage
mount /dev/sda3 /mnt/sysimage

mount --bind /proc /mnt/sysimage/proc
mount --bind /dev /mnt/sysimage/dev
mount --bind /sys /mnt/sysimage/sys
chroot /mnt/sysimage

mount /dev/sda1 /boot
cp -p /boot/initrd-$(uname -r).img /boot/initrd-$(uname -r).img.bak
mkinitrd -f -v /boot/initrd-2.6.18-371.el5.img 2.6.18-371.el5
用不同版本的 CentOS 或其他的 Linux OS 所建立的 initrd,在開機時,會出現錯誤。下圖是使用原來的 initrd 所出現的錯誤,無法找到 swap 分割區。

設定 grub

執行及進入 grub 後
grub> root (hd0,0)
grub> setup (hd0)
修改 grub.conf,重新開機。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-400.1.1.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-400.1.1.el5 ro root=UUID=bfe28135-6004-4078-ae40-14dbbf727354 rhgb quiet
    initrd /initrd-2.6.18-400.1.1.el5.img
title CentOS (2.6.18-92.el5)
    root (hd0,0)
    kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet
    initrd /initrd-2.6.18-92.el5.img
在 grub 中,硬碟編號由 hd0 開始。root 是設定系統的分割區,可以用 root=/dev/sda3,也可以用 label 或 uuid。用 /dev/sda3 來指定,當接線改變,或硬碟編號改變,會有找不到 root device 的困擾,用 uuid 則可確保找到正確的分割區。使用指令 blkid,可以列出分割區的 uuid。


2018年12月15日 星期六

新購電腦 - CPU i9 9900K

規格及配備

Intel Core i9-9900K CPU @ 3.60GHz
主機板 ASUS PRIME Z370M-PLUS II,LGA1151

Intel Core i7-5820K CPU @ 3.30GHz
主機板 ASUS STRIX X99 GAMING,LGA2011-3

Intel Core i7-3930K CPU @ 3.20GHz
主機板 Gigabyte GA-X79S-UP5-WIFI,LGA2011

Intel Xeon CPU E5-2660 @ 2.20GHz
主機板 Huana X79,LGA2011

性能比較

針對新購的電腦做一個效能的比較,編譯指令如下
time emerge lxde-base/lxterminal

三台電腦的比較
Intel Core i9-9900K CPU @ 3.60GHz
real 0m12.985s
user 0m9.274s
sys 0m3.844s

Intel Core i7-5820K CPU @ 3.30GHz 
real 0m23.195s
user 0m16.537s
sys 0m6.831s

Intel Core i7-3930K CPU @ 3.20GHz
real 0m29.790s
user 0m21.155s
sys 0m8.650s

Intel Xeon CPU E5-2660 @ 2.20GHz
real 0m39.462s
user 0m30.595s
sys 0m12.536s


其中 i9-9900K 內建 UHD Graphics 630 IGP。另外,我手邊有 2013 年 8 月左右購買的  GeForce GTX 650 Ti (GK106 core) 和 GeForce GTX 650,然後 2018 年 12 月新買的 ASUS 出的 Nvidia GT 710 (2GB) 的卡。要來決定那個顯卡配那一台機器較為適合。


顯卡測試
__GL_SYNC_TO_VBLANK=0 glxgears

650: i7-5820K: 8000 => i9-9900K 6300 FPS
650TI i7-5820K: 8100 => i9-9900K 6494
i9-9900K 內建 4680 FPS

GT710: i7: 6400, i9: 5350

顯卡 i7-5280K 系統 i9-9900K 系統 i9-3930K 系統 E5-2660 系統
GTX 650 8,000 FPS 6,300 FPS 6,900 FPS 未測
GTX 650Ti 8,100 FPS 6,599 FPS 未測 未測
GT 710 6,400 FPS 5,350 FPS 無法開機 5,300 FPS
內建顯卡 4680 FPS
2021-02-15 補測,i9-9900K+GTX 1060,16,295 FPS

GTX 605Ti 在 i7-3930K 上,大約 7,000 FPS。綜合起來,同一顯示卡,在 CPU 越快的系統上,顯卡的 FPS 越低,真是奇怪的現象。

GV-N650OC-1GI: 長14.5CM, GTX650TI-PH-1GD5 長 19CM,會和其他零件或走線干涉太多,還是用技嘉的較短的板子吧,機殼內比較清爽。

使用 i9 內建顯卡,在 Vmware VM 啟動時,會出現下列警告,所以還是使用 Nvidia 的顯卡吧,雖然好像也快不了多少。
Hardware graphics acceleration is not available.
No 3D support is available from the host.

最後,內建顯卡還是沒用上。

i7-3930K (coretemp, it87)
 ~ $ sensors
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +44.0°C  (high = +81.0°C, crit = +91.0°C)
Core 0:        +44.0°C  (high = +81.0°C, crit = +91.0°C)
Core 1:        +39.0°C  (high = +81.0°C, crit = +91.0°C)
Core 2:        +38.0°C  (high = +81.0°C, crit = +91.0°C)
Core 3:        +34.0°C  (high = +81.0°C, crit = +91.0°C)
Core 4:        +36.0°C  (high = +81.0°C, crit = +91.0°C)
Core 5:        +34.0°C  (high = +81.0°C, crit = +91.0°C)

it8728-isa-0a30
Adapter: ISA adapter
in0:          +0.84 V  (min =  +0.00 V, max =  +3.06 V)
in1:          +1.50 V  (min =  +0.00 V, max =  +3.06 V)
in2:          +1.97 V  (min =  +0.00 V, max =  +3.06 V)
in3:          +2.03 V  (min =  +0.00 V, max =  +3.06 V)
in4:          +0.89 V  (min =  +0.00 V, max =  +3.06 V)
in5:          +1.06 V  (min =  +0.00 V, max =  +3.06 V)
in6:          +1.50 V  (min =  +0.00 V, max =  +3.06 V)
3VSB:         +3.36 V  (min =  +0.00 V, max =  +6.12 V)
Vbat:         +3.22 V
CPU fan1:        2027 RPM  (min =    0 RPM)
機殼 fan3:        1198 RPM  (min =    0 RPM)
temp1:        +30.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp2:        +41.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = thermistor
temp3:        +30.0°C  (low  = +127.0°C, high = +127.0°C)  sensor = Intel PECI
intrusion0:  ALARM

2018年12月5日 星期三

CentOS 6 下,安裝 Intel I219-V 網卡及 Nvidia 顯卡的 driver

CentOS 6 EOL (End of Life) 

2020年之後,CentOS 6 已完全死亡,以下的說明可能完全不再適用,留著當紀念,必要時可以回來參考。


-----------------------------------------------

應友人求助,幫忙在 CentOS 6 下,安裝 Intel I219-V 網卡的 driver。

硬體購買於 2018年 11月,規格太新,OS 要跑的軟體,只支援舊的 CentOS 6,無法驅動網卡。

硬體資訊

硬體的主要資訊如下
Motherboard
       型號: PRIME Z390-A
       供應商: ASUSTeK COMPUTER INC.

M.2 SSD,Non-Volatile memory controller
       型號: SSD Pro 7600p/760p/E 6100p Series
       供應商: Intel Corporation

網卡
       型號: Ethernet Connection (7) I219-V
       供應商: Intel Corporation

顯卡
       型號: GP108 [GeForce GT 1030] (rev a1)
       供應商: NVIDIA Corporation

因為無法啟動網路,使用 Gentoo 的安裝系統,再用 chroot 來安裝驅動程式。自從改用 docker 後,有一陣子沒碰 CentOS 了,安裝過程還真有點不順。

原先裝 CentOS 6.9,升級後,變成 6.10,就無法登入。只好重裝 6.10,但別人的電腦都可以用 USB DISK 安裝,這一台竟然就是無法用 USB DISK 安裝,甚至外接光碟機都不行。只好搬出古董 USB 燒錄器,燒一片 DVD RW 才能正常安裝。好在手邊還有燒錄器和 DVD RW,而且還有粗粗的迴紋針,因為它的光碟機竟然無法退出。

裝好後,用 Gentoo 的安裝 USB 開機,再 mount 裝好的 CentOS 系統
livecd ~ # /etc/init.d/lvm start
 * /run/lvm: creating directory
 * Starting lvmetad ...                                         [ ok ]
livecd ~ # vgchange -ay
  3 logical volume(s) in volume group "vg_ntu" now active
livecd ~ # mkdir /mnt/sysimage
livecd ~ # ls /dev/vg_ntu*
lv_home  lv_root  lv_swap
livecd ~ # mount /dev/vg_ntu/lv_root  /mnt/sysimage
livecd ~ # mount /dev/nvme0n1p1 /mnt/sysimage/boot
livecd ~ # mount --bind /proc /mnt/sysimage/proc
livecd ~ # mount --bind /dev /mnt/sysimage/dev
livecd ~ # mount --bind /sys /mnt/sysimage/sys
livecd ~ # chroot /mnt/sysimage
[root@livecd /]# source /etc/profile
[root@livecd /]# export PS1="(chroot) ${PS1}"
(chroot) [root@livecd /]# 

要記後修改 /etc/resolv.conf,才能順利上網。

試了幾次,可能因為使用的 kernel 版本不同,透過 chroot 執行 yum update,好像會讓系統怪怪的。
所以,為了安裝 driver,不要執行 update,只要安裝 gcc 就好,再裝和使用的 kernel 相同版本的 kernel header,指令如下
(chroot) [root@livecd /]# cat /etc/redhat-release 
CentOS release 6.9 (Final)
(chroot) [root@livecd /]# yum install gcc
(chroot) [root@livecd /]# yum install "kernel-devel-uname-r == 2.6.32-754.el6.x86_64"

假若是運作的 OS,可以直接用 yum install "kernel-devel-uname-r == $(uname -r)"

可以列出 /boot 下的檔案,確認 kernel 的版。如 kernel-devel-2.6.32-696.el6.x86_64,就無法直接安裝了。要先下載再安裝,參考後面的顯卡安裝步驟。

到 Intel 官網下載最新的完整驅動程式,抓出 Linux 的部分, e1000e-3.4.2.1.tar.gz。解壓縮後,到 e1000e-3.4.2.1/src/ 目錄下。重新開機後,執行
make install

因為它的 Makefile 會透過 uname -r 取後 kernel 的版本,但在 chroot 下,會取得錯誤資訊,所以要修改 Makefile,直接寫死 kernel 的版本。

網卡的 driver 是 e1000e,裝好後,應該就能啟動網路了。設好網路後,可以安心做其他的事,如 yum update。假如有更新 kernel,要記後重新安裝網卡的 driver。

安裝 Nvidia 的 driver

安裝所需的 gcc 及 kernel-devel
yum install gcc
yum install "kernel-devel-uname-r == $(uname -r)"


有可能版本太舊,無法直接用 yum安裝,只好用 google 搜尋下載 kernel-devel-2.6.32-696.el6.x86_64.rpm,再用 yum 安裝。
wget http://ftp.scientificlinux.org/linux/scientific/6.6/x86_64/updates/security/kernel-devel-2.6.32-696.el6.x86_64.rpm
yum install kernel-devel-2.6.32-696.el6.x86_64.rpm

修改 /etc/inittab,讓 boot 進入 text mode。

預設會載入 open source 的 nouveau 驅動程式,必須修改 /etc/modprobe.d/blacklist.conf,加入
blacklist nouveau

先用指令 uname -r 確定 kernel 的版本。
然後執行下列指令,重新產生沒有包含 nouveau 的 initramfs,然後開機
mv initramfs-2.6.32-696.el6.x86_64.img initramfs-2.6.32-696.el6.x86_64.img.bak
dracut -v /boot/initramfs-2.6.32-696.el6.x86_64.img
開機後,下指令 init 3,關掉 X window。
然後下載 nvidia 的安裝程式,如 NVIDIA-Linux-x86_64-410.78.run,再執行下列指令安裝。
** 記住,要執行 nvidia-xconfig utility,產生設定檔,圖形界面才能開得起來。
chmod +x NVIDIA-Linux-x86_64-410.78.run
./NVIDIA-Linux-x86_64-410.78.run
執行後的訊息
Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64      
  (version: 410.78) is now complete.  Please update your XF86Config or         
  xorg.conf file as appropriate; see the file
  /usr/share/doc/NVIDIA_GLX-1.0/README.txt for details.


shutdown時,會出現錯誤的修復
[root@livecd ~]# shutdown -r now
shutdown: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
[root@livecd ~]# yum install libgcc_s.so.1


安裝 TeamViewer

另外,在其上安裝 TeamViewer。目前最新的 v14 不能裝,下載 v12 ,可以順利安裝。安裝指令如下,會自動安裝相關的套件
yum install teamviewer_v12.0.90041.i686.rpm

嗯,要是我自己使用的系統,我會裝較新的 OS,然後用 VM 跑舊的 OS。不過,這不干我的事了,我只是好玩,藉此練功一下。還不錯,花了一天的功夫搞定,學會怎麼在 kernel 加上 driver。

** 註記 **
TeamViewer 13 linux builds with recent QT version
Actually, TeamViewer is linked against Qt 5.2 currently.
選擇 v12,應該是要安裝 Qt 太麻煩,會把系統搞得一團亂,還是不要自找麻煩為宜吧。


網誌存檔