2023-07-06

vmware workstation pro no sound

 Host OS : Windows 10

Guest OS : debian 12

MB : ASUS_TUF-GAMING-B550-PLUS



Solution : Install Audio driver from ASUS. Then enable "Stereo MIX"



2023-02-26

富邦證券的E01交易軟體, 使用及新安裝時出現亂碼

 


解法 : 設定>時間與語言>語言>系統管理語言設定(在右側)>系統管理>變更系統地區設定>取消 "Beta : 使用 Unicode UTF-8 提供全球語言支援(U)">重開機

2023-01-06

【PYQT5】retranslateUi()

 作用就是重新編譯一遍 UI. retranslateUi 給這些widgets賦值文本和標題,需要翻譯的順便翻譯了

一般放在 UI 設計代碼的後面. 

2022-12-29

PyQt6-tools 安裝 Qt Designer

>>> 目前 (2022/12/29) 只有 python 3.9 下可成功安裝 pyqt6-tools/pyqt5-tools (順便安裝 pyqt6 or pyqt5 & Qt Designer.exe)


另外有 5 種方法可取得 qt designer.exe. 但多少都有些問題.

1. 直接下載 Qt designer 安裝檔 : Qt Designer Download . 開啟 designer.exe, 查詢 help -> about plugins, 會出現錯誤."cannot load library c:\program files (x86)\qt designer\plugins\designer\pyqt5.dll: unknown error 0x000000c1"

2. 安裝 Anaconda (非常肥大), 會自帶 Qt designer, 但卻無法啟用. (solved)

3. Install Qt Design Studio . 執行  qt-unified-windows-x64-4.6.1-online.exe, 但只選 Qt Design Studio.


 即可在 C:\Qt\Tools\QtDesignStudio\qt6_design_studio_reduced_version\bin 找到 designer.exe
4. pip install pyqt5designer. 僅安裝 Qt Designer. (不含 pyqt5 及 pyqt5-tools)
5. 在 GitHub 中尋找 QtDesigner


>>> Qt Designer中文頁面改成英文方法

在使用 Qt designer 時,中文看起來比較彆扭,想將其改成英文界面,發現工具根本沒有提供更改語言入口。

解決方法:

1、找到Qt庫安裝目錄,找到翻譯文件目錄 (C:\Users\Cliff\AppData\Roaming\Python\Python39\site-packages\qt6_applications\Qt\translations)

2、進入翻譯文件存放目錄

3、將上面兩個文件做名字替換,designer_en.qm名字改成designer_zh_CN.qm,designer_zh_CN.qm

文件可以命名其文件(建議將其改成designer_en.qm)

4、重啟設計器即可

2022-12-28

Anaconda QT Designer 無法開啟

啟用時 : Could not find the Qt platform plugin "windows" in ""

新增 : Environment variable: QT_QPA_PLATFORM_PLUGIN_PATH

值 :  例如 : C:\ProgramData\Anaconda3\pkgs\qt-5.9.7-vc14h73c81de_0\Library\plugins\platforms

內含 : qdirect2d.dll, qminimal.dll, qoffscreen.dll, qwindows.dll

2022-12-20

解決 python idle 無法打開的問題

 [狀況] 安裝 python 後,點選IDLE編譯程式沒有回應

[解決方法] Windows作業系統,使用按下 win+R 啟動執行對話窗,複製下面的指令後按enter

%USERPROFILE%\.idlerc

進入目錄後,把該資料夾的所有的文件都砍了

這樣就可以打開了

2021-06-25

linux驅動管理利器,詳解dkms工作原理 原文網址:https://kknews.cc/code/x6ay3yo.html

 

背景

最近遇到一個麻煩的問題,幾台伺服器在升級內核之後,新的內核啟動直接panic,無法正常驅動raid卡. 通過進入ramos,發現新的內核裡面沒有對應的raid卡驅動ko文件. 後面才發現老的內核中rraid卡驅動是從原始碼單獨編譯出來的. 換了新的kernel之後,忘了給新的內核重新編譯這個驅動就重啟了,導致kernel panic.

在linux中,每個驅動ko文件是與一個特定內核綁定的,也就是在老內核下面編譯的驅動在新內核下面無法使用,同樣的,在新內核下面編譯的驅動在老內核也無法使用.

在linux kernel原始碼樹中,已經包含了我們常見的很多驅動,那麼在安裝一個新的內核rpm包的時候,這些驅動也就被一起安裝了. 但是有些驅動不在原始碼樹裡面,這些驅動需要手動編譯安裝;還有一些驅動雖然在原始碼樹中,但是原始碼樹中的可能太老了,新的驅動也需要單獨編譯安裝.

使用dkms來管理原始碼樹外的驅動

dkms就是用來處理在kernel原始碼樹中不存在的驅動,或者我們自己維護的驅動的. 它可以保證新的kernel安裝之後,這些驅動被自動重新編譯,自動運行depmod命令,自動生成新的initram文件.

dkms這個工具存在於epel源中,需要先保證epel打開,然後yum -y install dkms就可以安裝這個工具了.使用rpm -ql dkms看下這個包安裝了什麼東西.

/usr/sbin/dkms是dkms命令行本身,是一個bash腳本.我們用的最多的是dkms status,用來查看當前dkms管理的驅動的狀態

/var/lib/dkms是dkms工作目錄.

/etc/kernel/目錄下面的兩個文件,分別是postinst和prerm的kernel hook,dkms自動管理驅動核心就是這兩個文件.

現在大部分驅動rpm包都有兩種形式的,一種是直接針對rhel特定版本(也就是特定內核)編譯好的. 還有就是一個dkms enabled的rpm包.

下面以megaraid_sas-07.710.06.00-1dkms.noarch.rpm這個dkms enabled包為例來操作.什麼是dkms enabled的rpm包呢

首先,這個rpm安裝文件的路徑一定是/usr/src/module-version目錄,比如這兒的/usr/src/megaraid_sas-07.710.06.00,然後這個包裡面一定有一個dkms.conf文件.

因為dkms工作的時候需要讀取這個dkms.conf文件,這個文件實際是一個shell腳本,dkms工作的時候會source進去.

我們看下安裝這個包的時候具體會做的事情

安裝之前,dkms status輸出為空,表示沒有管理任何驅動

這個包安裝的時候,會看到dkms add,dkms build(編譯驅動),dkms install(把編譯好的驅動安裝到/lib/modules/`uname -r`目錄下),跑depmod,跑dracut重新生成initramfs的過程(如果手動裝驅動,就是這些過程)

dkms enabled包的scripts,裡面是核心的dkms命令
dkms enabled包的安裝過程,能看到關鍵的步驟被執行

如果dkms只是能幫我們執行這些命令,那麼其實用處也不大. dkms最主要的用處是當我們安裝了一個新的kernel包之後,其會用到kernel hook給我們自動重新給新內核完成上面的事情.

dkms使用kernel hook自動管理驅動

在我們安裝了這個dkms enabled的驅動包之後,我們安裝一個新的內核

能看到這個新的kernel包安裝的過程中跑了一些腳本.

完成之後,dkms status直接顯示新的內核直接把這個驅動包安裝上了.

dkms的工作目錄/var/lib/dkms也顯示這個驅動包安裝到了新的內核.

那麼dkms在安裝新的內核包的時候,怎麼觸發給新的內核包重新編譯驅動的呢?

我們看下內核包的scripts,發現裡面有對/usr/sbin/new-kernel-pkg腳本的調用

而/usr/sbin/new-kernel-pkg裡面有對/etc/kernel/postinst.d/目錄下的腳本進行調用的邏輯.

dkms給/etc/kernel/postinst.d下面安裝了腳本

這個腳本裡面調用/usr/lib/dkms/dkms_autoinstaller進行自動安裝

dkms_autoinstaller調用dkms autoinstall,在autoinstall中,會對當前所有狀態為installed,並且dkms.conf配置匯總AUTOINSTALL=yes的模塊對安裝的內核進行編譯安裝.

總結

dkms是dell做的一個自動管理kernel原始碼樹外的驅動框架,現在大量用於各種硬體,特別是存儲硬體的驅動管理中. 其使用方法特別簡單,只需要將一個dkms enabled的原始碼包安裝即可. 後面的事情就是dkms自己處理了. 大家找硬體驅動包的時候可以找dkms enabled的,如果沒有也可以從原始碼用tarball的方式導入,自己再加個dkms.conf就可以了.



原文網址:https://kknews.cc/code/x6ay3yo.html