顯示具有 yocto 標籤的文章。 顯示所有文章
顯示具有 yocto 標籤的文章。 顯示所有文章

2023年10月17日 星期二

筆記 systemd-networkd

 簡單的說 ubuntu 體系的常會在開機時卡在 systemd-networkd-wait-online 很久很久, 如果機器本身是需要設定固定 ip, 沒有對外更沒有啥 dhcp server 可連線時就會卡很久

這裡有位高手提供一個解法: 首先:

sudo systemctl edit --full systemd-networkd-wait-online.service

在裡面找到 ExecStart, 改成像這樣:

ExecStart=/usr/lib/systemd/systemd-networkd-wait-online --timeout=10

就可以跳過這個無意義工作.

2023年5月7日 星期日

samba & error 0x80070032

 這個問題是, 在當 windows copy 檔案到 samba server 的共享目錄時會發生的問題. 以微軟的文件我猜測就是數據重覆刪除的問題:

https://learn.microsoft.com/zh-cn/troubleshoot/windows-server/backup-and-storage/request-not-supported-smb-data-deduplication

但這並不完全是 samba 的問題. 0x80070032 這問題困擾我很久, 原本以為是 samba 的鍋, 因為 nfs 沒這問題, 但別人的 windoz pc 你不可能每臺都強迫裝 nfs client, 而且更別提現在 windoz 端 nfs client 僅只有支援 nfs v2 v3 沒有支援到 v4, 所以 unicode 的支援上會有相當程度的問題.

appuals 上的文章是我目前看過對這問題追的最徹底的, 他提了很多解法, 但請注意這些解法通常只針對 windows 對 windows 檔案共享出問題, 我的問題是 samba, 然後 samba 其實很少人碰到這問題, 碰到也不知道怎麼解, 最少你拿這些關鍵字去 google 九成九都是廢話, 或丟在那沒人回的問題.

我的問題發生的來源很簡單, 我把 tmpfs 開給 samba 分享出去, tmpfs 本身不支援 (因為不需要支援) data deduplication, 所以丟回給 samba 說我不支援, samba 再丟會給 windoz client, windoz 對用戶說遇到 0x80070032 的錯誤.

如果你掛的是其它的檔案系統像 ext4, xfs, samba 就不會有這問題, appuals 的文章最後最後一段有略略提到這件事: "If the issue persists on a server, then check if installing the Deduplication server role and configuring it solves the problem.", 但 server 端可能的問題太多, 也不一定就是檔案系統.

tmpfs 即便可以掛載那麼多奇奇怪怪的型態, 也並沒有那麼萬能.





2019年1月9日 星期三

i.mx6 aplay ssi timeout issue.

Situation: when play a wav file using aplay, got this message:
--
fsl-ssi-dai 202c000.ssi: Timeout waiting TX FIFO filling
aplay: pcm_write:2011: write error: Input/output error
--
In the i.mx6 platform, SSI not work may cause from codec clock not exist (not init.), or dts description not correct, or other, in my case, it cause from SDMA firmware, if SDMA firmware too old, SSI does not work, and HDMI audio not work too.

Ccause from: SDMA firmware version not match or not exist.
#dmesg|grep sdma
[    3.595490] imx-sdma 20ec000.sdma: no iram assigned, using external mem
[    3.596311] imx-sdma 20ec000.sdma: loaded firmware 1.1

SDMA firmware ver 1.1 work in kernel 4.1.15 and early, but not work fine in 4.9.88 and later (4.14.78)

Solution: copy firmware file from kernel 4.9.88
#dmesg|grep sdma
[    3.595611] imx-sdma 20ec000.sdma: no iram assigned, using external mem
[    3.596440] imx-sdma 20ec000.sdma: loaded firmware 3.3

nxp's i.mx6 bsp kernel 4.14.87 (L4.14.87_1.0.0_ga, yocto 2.5.1) does not had firmware file, so i copied from 4.9.88 (L4.9.88_2.0.0_ga, yocto 2.4.2) :

# git clone git://source.codeaurora.org/external/imx/linux-imx.git linux-4.9.88-2.0.0-ga -b imx_4.9.88_2.0.0_ga
# cd linux-4.9.88-2.0.0-ga
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf imx_v6_v7_defconfig
#mkdir rootfs
# make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf INSTALL_MOD_PATH=rootfs firmware_install
# ls rootfs/lib/firmware/imx/sdma/sdma-imx*


2018年4月27日 星期五

yocto rebuild package

rebuild 其實很簡單, -f -c clean 再 -f -c deploy (有的套件不支援) 或 -f -c compile 就好. 麻煩的是你要知道這套件叫什麼名字. 因為隨著引入的 meta 套件不同, 命名會有所不同.
例如在 error task log 裡有提到
qtquickcontrols2_git.bb
在 yocto 的套件命名規則裡, 底線 "_" 之後都是版本, 之前都是套件名稱, 所以特別把在這之前的名稱過濾出來即可:
bitbake qtquickcontrols2 -f -c clean;bitbake qtquickcontrols2 -f -c compile
多下一個 clean 會比較保險.

linux kernel 在 yocto 官方名稱記得是叫 linux-yocto, 所以像 intel 的 yocto bsp 重編 kernel 你就要下 bitbake linux-yocto -f -c deploy

2018年2月1日 星期四

yocto 編譯跳過 EULA

bash script

export EULA=1
source fsl-setup.release.sh
bitbake fsl-image-qt5

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 全程都沒有再遇上問題. 我把之前的問題重新提出來回一遍:
  • 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. 其它的會亂超頻.
這顆 CPU 是我用過第二難搞的 CPU, 第一難搞的是 intel Pentium2 SL2W8

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 有問題....