在 Windows 11 上編譯 llama.cpp 並啟用 CUDA 的紀錄
這是一份在 Windows 11 環境下,將本機 LLM 推理引擎的代表作 llama.cpp 從原始碼編譯、啟用 NVIDIA GPU 的 CUDA 後端,並實際執行模型的紀錄。
這是一份在 Windows 11 環境下,將本機 LLM 推理引擎的代表作 llama.cpp 從原始碼編譯、啟用 NVIDIA GPU 的 CUDA 後端,並實際執行模型的紀錄。
依照上一篇文章的步驟建立了 SSH X11 轉發環境,xeyes 順利顯示在 Windows 端。然而 nautilus 卻怎麼都啟動不了。這是一篇記錄「明明 DISPLAY 已經正常運作,為什麼偏偏這個應用程式會當掉」的排查過程。
這台 Fedora 43 Server 既沒有安裝 X 伺服器,也沒有安裝桌面環境。現在想從這台機器把 GUI 應用程式顯示到 Windows 電腦上。這是一篇不安裝桌面環境,改用 SSH X11 轉發只傳送「單一應用程式」的紀錄。
本文整理了將 document.tex(採用 ltjsarticle 文件類別,以 LuaTeX-ja 為前提)以 LuaLaTeX 轉換成 PDF 所需的環境建置步驟。以 Windows + winget 為前提。
在嘗試透過 myhost.local (mDNS) 存取同一區域網路內的 Fedora Server 時,遇到了唯獨名稱解析失敗的狀況。透過 tcpdump 直接觀察封包進行排查後,發現原因是 firewalld 封鎖了 mDNS 的傳入流量。
2026 年 6 月,Microsoft 正式公開了 Coreutils for Windows。
winget install Microsoft.Coreutils
透過這個指令可安裝的 Microsoft.Coreutils,是 Microsoft 官方專案,可讓 Linux 與 macOS 日常使用的 ls、cp、rm、cat 等 UNIX 系指令,能在 Windows 上以原生方式執行。
本文將整理專案概要、支援指令、限制事項,以及與 WSL 和 PowerShell 的差異。
Microsoft.Coreutils 是由 Microsoft 維護、面向 Windows 的命令列工具集。
其內部是以以下專案為基礎構建:
並以 Rust 實作。
Microsoft 將此專案的目的說明為:
降低在 Linux、macOS、WSL、容器、Windows 之間來回切換的開發者摩擦
可透過 WinGet 輕鬆導入。
winget install Microsoft.Coreutils
WinGet 是 Windows 內建的套件管理員,可自動下載並安裝指定套件。
安裝後即可作為一般指令使用。
ls
cat file.txt
grep keyword log.txt
cp source.txt backup.txt
代表性的指令如下。
| 分類 | 指令範例 |
|---|---|
| 檔案列表 | ls |
| 檔案複製 | cp |
| 檔案移動 | mv |
| 檔案刪除 | rm |
| 內容顯示 | cat |
| 目前工作目錄 | pwd |
| 建立目錄 | mkdir |
| 休眠 | sleep |
| 管線處理 | tee |
| 搜尋 | grep, find |
對 Linux 使用者來說,熟悉的指令可直接使用。
這裡是最大的注意點!
PowerShell 內已經存在同名的別名或內建指令。
例如:
| 指令 | 問題 |
|---|---|
| ls | 與 PowerShell 別名衝突 |
| cp | 與 Copy-Item 衝突 |
| cat | 與 Get-Content 衝突 |
| rm | 與 Remove-Item 衝突 |
| pwd | 與 Get-Location 衝突 |
因此,
ls
即使執行了,也不一定會呼叫 Coreutils 版本。
Microsoft 建議使用 PowerShell 7.4 以上版本。
雖然目標是相容 Linux,但仍存在因 Windows 機制造成的限制。
Linux 的
kill
SIGTERM
SIGKILL
機制在 Windows 中不存在。
因此,
kill
timeout
目前尚未提供。
Linux:
grep error log.txt > /dev/null
Windows:
grep error log.txt > NUL
會是這樣。
Windows 是以 ACL 為基礎的權限管理。
因此,
chmod
chown
chgrp
等指令不會提供。
雖然可以讀取,但若要新建立,則需要:
Microsoft 有意排除了一部分指令。
最常被比較的是 WSL(Windows Subsystem for Linux)。
| 項目 | Microsoft.Coreutils | WSL |
|---|---|---|
| 導入成本 | 非常低 | 需要建置 Linux 環境 |
| 啟動速度 | 原生 | 有虛擬環境層 |
| Linux 相容性 | 部分 | 非常高 |
| Bash 環境 | 無 | 有 |
| apt 可用性 | 不可 | 可 |
| Shell 腳本相容性 | 有限制 | 高 |
WSL 是「Linux 環境本身」,而 Coreutils 則是「在 Windows 上使用類 Linux 指令的工具集」。
選擇「具名管道」,並將管道名稱設定為「COM1」。

使用 sudo nano /etc/default/grub 開啟 GRUB 設定檔。
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=ttyS0,115200n8"
儲存後,執行以下指令套用 GRUB 設定:
sudo update-grub
設定服務以允許透過序列埠登入。
sudo systemctl enable [email protected]
sudo systemctl start [email protected]
以系統管理員身分啟動。

以系統管理員身分啟動。
| 序列線路 | 速率 | 連線類型: |
|---|---|---|
| \.\pipe\COM1 | 115200 | Serial |
設定以上項目。


以系統管理員身分啟動。

[System.Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8")
[System.Console]::InputEncoding = [System.Text.Encoding]::GetEncoding("utf-8")
plink.exe -serial \\.\pipe\COM1 -sercfg 115200,8,n,1,N
按 Ctrl + C 結束。
這篇備忘錄記錄了 PLINK。
PLINK (PuTTY Link) 是 PuTTY 套件中的一個命令行工具,主要用於在 Windows 環境下通過命令行執行 SSH、Telnet 和 Rlogin 連接。它對於腳本化和自動化遠端操作非常有用。
與 PuTTY GUI 相比,PLINK 提供了無需圖形界面的方式來連接遠端伺服器,非常適合在批處理文件、PowerShell 腳本或 CI/CD 環境中使用。
PLINK 是 PuTTY 套件的一部分。你不需要單獨安裝它,只需下載 PuTTY 官方網站提供的 PuTTY 套件。
plink.exe:你可以選擇下載獨立的 plink.exe 可執行文件,或者下載整個 PuTTY 安裝程式。plink.exe 放置到 PATH 路徑:為了方便在任何地方調用 plink,建議將 plink.exe 所在的目錄添加到 Windows 的環境變量 PATH 中。PLINK 的基本語法與 SSH 類似,但有其特有的選項。
plink [user@]host [command]
範例:連接到遠端伺服器並執行 ls -l 命令。
plink [email protected] ls -l /var/www
如果沒有指定命令,PLINK 會啟動一個交互式 Shell 會話。
使用 -P 選項指定端口(注意是大寫 P)。
plink -P 2222 [email protected]
PLINK 支持使用 PuTTY 專有的 .ppk 格式的私鑰文件進行身份驗證。你需要使用 PuTTYgen 工具將 OpenSSH 格式的私鑰轉換為 .ppk 格式。
plink -i C:\path o\your\private_key.ppk [email protected]
你可以將 PLINK 執行的遠端命令的輸出重定向到本地文件。
plink [email protected] "cat /etc/nginx/nginx.conf" > nginx_config.txt
通過將命令用引號括起來,可以在遠端執行多個命令。
plink [email protected] "cd /var/www/html && git pull origin main"
為了實現免密碼登錄,你需要:
生成 OpenSSH 密鑰對 (如果還沒有)。
在 Linux/WSL/Git Bash 中:ssh-keygen -t rsa -b 4096
將公鑰部署到遠端伺服器。
使用 ssh-copy-id 或手動將公鑰內容添加到遠端伺服器的 ~/.ssh/authorized_keys 文件中。
使用 PuTTYgen 將私鑰轉換為 .ppk 格式。
Load,選擇你的 OpenSSH 私鑰文件 (id_rsa)。Save private key,將其保存為 .ppk 格式。你可以選擇不設置密碼。使用 PLINK 和 .ppk 文件連接。
plink -i C:\path o\your\id_rsa.ppk [email protected] "your_command"
-ssh:強制使用 SSH 協議。-batch:防止 PLINK 提示用戶輸入密碼或接受主機密鑰(適用於腳本)。-pw password:直接在命令行中提供密碼(不安全,應盡量避免)。-N:不執行遠端命令,僅用於端口轉發(隧道)。-L, -R, -D:用於本地、遠端、動態端口轉發(SSH 隧道)。PLINK 在自動化任務中非常有用。
deploy.bat)@echo off
set KEY="C:\path o\your\private_key.ppk"
set REMOTE_DIR=/var/www/html
echo 連接到 %HOST% 並部署...
plink -i %KEY% %HOST% "cd %REMOTE_DIR% && git pull origin main && npm install && npm run build"
if %ERRORLEVEL% NEQ 0 (
echo 部署失敗!
exit /b %ERRORLEVEL%
)
echo 部署成功!
PLINK 是 Windows 用戶在命令行環境中執行 SSH 和其他遠端連接的強大工具。它在自動化腳本、CI/CD 流程以及無需圖形界面的遠端操作中扮演著重要角色。通過理解其基本用法和如何與私鑰文件結合,可以大大提高遠端管理的效率和安全性。