serial port 是很古老的硬體, 但現在一堆機器 console 開始走回 serial port console 的老路, 不管是從以前到現在都有的 network manager machine 還 UEFI BIOS, 也就是說, 要跟的上時代, 就是找回過去 serial port console 的使用方法, 雖然聽起來有點古怪.
修改 grub2 部份, /etc/default/grub
grub2:
#grub terminal. --unit=0 意思就是 COM1, 往後類推.
GRUB_TERMINAL="serial vga_text gfxterm"
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=1 --word=8 --parity=no --stop=1"
#kernel parameter
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS1,115200n8 splash"
grub2 部份使用 update-grub 去 update grub, 順路檢查語法正不正確. 在 update kernel 時也會順路補上這些參數, 不需要去 /boot/grub/grub.conf 裡再改一次.
ubuntu linux 16.04: (或任何使用 systemd 的 distro. 這裡假設為 ttyS0)
# systemctl enable serial-getty@ttyS0.service
特別注意這行, 因為每臺機器都會有點不同, 要用它設定的路徑才會有效.
Created symlink from /etc/systemd/system/getty.target.wants/getty@ttyS0.service
# mkdir -p /etc/systemd/system/getty.target.wants/getty@ttyS0.service.d/
# pico /etc/systemd/system/getty.target.wants/getty@ttyS0.service.d/override.conf
---
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin myusername %I $TERM
Type=idle
---
myusername 就是你的預設使用者名稱, 也可以是 root.
目前已知在 i386, AMD64 distro 版本上要另外打開, 但 arm64 / armhf 似乎會看 /proc/cmdline 裡有沒有特別指定 console serial port 另外叫 systemd 打開 serial-port getty serrvice, 並不需要特別 enable 它. 也就所以要特別在 systemctl 裡特別去看它叫啥名字, 否則自動登入功能無法連動.
使用 sysinitV 的部份下次再補上.
2017年7月8日 星期六
2017年7月7日 星期五
[不定時 update] AMD ryzen 一些筆記
一開始就是拿來跑 ubuntu + VM workstation 所以以下筆記全以 linux 為主. 目前僅知的幾點:
- ASM1083 PCI bridge 有些先天的問題在 IOMMU v2 上只能用 kernel parameter "iommu=soft" 迴避. ASM1083 的問題也同樣出現在 Z87 VT-d 上過, IDT PES12N3A 就一點問題都沒有. 現在 IOMMU 開, PCI 全都不插東西. (見 update)
- AGESA 1004 以後對記憶體相容性有大幅度改善, 但後來交差驗證跟我碰到的問題無關.
- kernel NMI 錯誤 ("NMI watchdog: BUG: soft lockup" 這個) 無法用設定 hung_task_timeout_secs (echo 0 > /proc/sys/kernel/hung_task_timeout_secs) 解, 兩者無關. 後來是換掉 power 後解決.
- SATA 界面會跟 WD 藍標某特定款 power manager 衝突的問題, 後來不知道為什麼解決, 我懷疑也是那顆 Power 的關係... 換了一顆新巨 400w 就好了.
- SVM 功能在 AGESA 1004a VMworkstation 12.5.5 會碰上 WinXP 不能開機的問題 (1004 可以), AGESA 1006 可以.
- BIOS 中 C-state report 把它直接關掉. 我嚴重懷疑這個問題是 linux kernel 的 power manager 沒寫好出的包, 因為有不少 CPU (Summit-Ridge, Baytrail-I/T, Apollo-lake) 上都有一模一樣的問題. C-state 關掉後 cpufreq-info 裡仍舊可以看的到頻率仍舊可升降 (Baytrail 不行), 功耗實測上竟然也沒什麼變化..
- 散熱器可以用舊有 socket754/939 兩爪扣具. 1700X 的熱度我用過去給 Athlon64 3000+ 的風扇是綽綽有餘... (這次用的板子是 asus prime B350 plus)
- USB 3.1 因為沒設備我不確定 VM workstation 有沒有辦法 bridge 過去, 看 workstation 的文件是 guest 只有支援到 3.0....
目前環境 ubuntu 16.04.2LTS, kernel 4.10.0-26 (linux-image-extra-virtual-hwe-16.04-edge), VMware Workstation 12.5.6.
update 170726: 結果進氣道 12cm 風扇讓它接 12v 全速跑後, 一切正常了, yocto compile 也可以一次到底了(但不是每一次)... 果然太小看散熱問題了
update 170807: sensor 要使用 it87 這個 driver:
https://github.com/groeck/it87
git clone https://github.com/groeck/it87.git;make;make install
搭配 lm_sensor 套件就可以看到了這樣.
update 171127: 24號下班前看到華碩有放了一版 171120 的 BIOS (AGESA 1071 的 update) 就拿來試, 目前看來編 yocto 時 gcc 會 segment fail 的問題解掉了 (yocto 2.2.1, x86-64 用的 gcc 為 6.2.0). 不錯啊, 拖了七個月這個問題終於解決了...
ps. 在這之前開關 kernel ASLR (Address space layout randomization) 沒有差別, 有沒有關掉 rcu 對我也沒有差別, 都會死.
update 180503: 華碩後來放出的 BIOS (4008, 4011) 在 AMD CBS 裡多了一個 OPcache 的選項, 把這個選項關掉後, 之前 gcc 不定時掛點的問題解決的比之前要徹底, 最少這次我編 yocto 2.2.1 全程都沒有再遇上問題. 我把之前的問題重新提出來回一遍:
update 2019/03/06 AMD-Vi iommu 跟 ASM1083 的問題可以在 kernel 追加以下參數解決:
"amd_iommu=on iommu=pt kvm_amd.npt=1"
可以在 /etc/defaut/grub, "GRUB_CMDLINE_LINUX" 追加, 再執行 update-grub.
update 170726: 結果進氣道 12cm 風扇讓它接 12v 全速跑後, 一切正常了, yocto compile 也可以一次到底了(但不是每一次)... 果然太小看散熱問題了
update 170807: sensor 要使用 it87 這個 driver:
https://github.com/groeck/it87
git clone https://github.com/groeck/it87.git;make;make install
搭配 lm_sensor 套件就可以看到了這樣.
update 171127: 24號下班前看到華碩有放了一版 171120 的 BIOS (AGESA 1071 的 update) 就拿來試, 目前看來編 yocto 時 gcc 會 segment fail 的問題解掉了 (yocto 2.2.1, x86-64 用的 gcc 為 6.2.0). 不錯啊, 拖了七個月這個問題終於解決了...
ps. 在這之前開關 kernel ASLR (Address space layout randomization) 沒有差別, 有沒有關掉 rcu 對我也沒有差別, 都會死.
update 180503: 華碩後來放出的 BIOS (4008, 4011) 在 AMD CBS 裡多了一個 OPcache 的選項, 把這個選項關掉後, 之前 gcc 不定時掛點的問題解決的比之前要徹底, 最少這次我編 yocto 2.2.1 全程都沒有再遇上問題. 我把之前的問題重新提出來回一遍:
- IOMMUv2. kernel 4.15.0 用的 IOMMUv2 driver 看起來不會再像過去那樣跳一堆錯誤後 PCI 死掉. 不過這次我直接在 kernel 裡關掉 (iommu=soft), 沒有多試, 我只能確定編的編不過跟 IOMMU 沒關係, 也跟 SR-IOV 沒有關係. (見 update)
- DDR4 相容性. 這次用預設的 DDR4-2400 在跑不需要降, 降了其實也沒什麼用.
- KERNEL NMI錯誤, 這個跟 c-state 有關係, BIOS 中可以將 c-state report 關掉, 沒辦法關 c-state 的板子需要把 CPU governor 全調成 performance 來迴避問題 (跟 Baytrail 的問題很像, 其實我懷疑是 linux kernel 自己的問題). 神奇的是就算調到全速, CPU 自己的省電功能依舊有效. 據說, 關掉這個可以讓 PCIe 跑快一點..
- SATA.. 這個確定是 WD 的問題. WD 從有 IDE 以來就這個樣子不意外
- SVM: 後來預設變關掉, 我是打開
- c-state 同 kernel NMI message.
- 散熱器不需要太好的...
- VMware workstation 14 也沒有支援 USB 3.0 gen.2.
- kernel ASLR 在 host / guest OS 我都關掉, 好像有快那麼一點點.
- BIOS 中 performance bias 為 auto 或 none. 其它的會亂超頻.
update 2019/03/06 AMD-Vi iommu 跟 ASM1083 的問題可以在 kernel 追加以下參數解決:
"amd_iommu=on iommu=pt kvm_amd.npt=1"
可以在 /etc/defaut/grub, "GRUB_CMDLINE_LINUX" 追加, 再執行 update-grub.
ubuntu hwe kernel 4.15.0 & 4.18.0 下都工作正常. 話說這個參數其實是另一篇寫給 QEMU pass-through PCIe memory 用的參數, 如果沒用到虛擬機 & kernel KVM 功能的話, 不如直接一點把 BIOS 中 IOMMU / SR-IOV 等全關掉省的麻煩...
update 191017: 有關 yocto build 會掛掉已經間接證實是 yocto builder 自己的問題, 簡單的說, yocto 在編譯時最大會開到 CPU h/w threads 數平方個 task, 8core 共 64 tasks, 16core 時會爆增到 256 tasks, RAM 加到 32G 看來無解. 解法是在
[build directory]/conf/local.conf 裡增加
BB_NUMBER_PARSE_THREADS = "4"
的敘述, 限制每一個套件在編譯時使用的最大 threads, 16core 下建議設定 4-5.
設太多是 yocto builder 會把 OS 給炸了而不是 CPU 有問題....
update 191017: 有關 yocto build 會掛掉已經間接證實是 yocto builder 自己的問題, 簡單的說, yocto 在編譯時最大會開到 CPU h/w threads 數平方個 task, 8core 共 64 tasks, 16core 時會爆增到 256 tasks, RAM 加到 32G 看來無解. 解法是在
[build directory]/conf/local.conf 裡增加
BB_NUMBER_PARSE_THREADS = "4"
的敘述, 限制每一個套件在編譯時使用的最大 threads, 16core 下建議設定 4-5.
設太多是 yocto builder 會把 OS 給炸了而不是 CPU 有問題....
訂閱:
文章 (Atom)