Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

在此记录一下如何在 Linux 下启用 PCIe Passthrough 给虚拟机提供宿主 PCIe 设备。 我用的是 Ubuntu 22.04,现在新的系统内核一般内置了 vfio-pci 模块,可以直接使用。以 Intel Xeon E5-2670 为例子。 通过内核启动参数使用需要修改 /etc/defaults/grub,给 GRUB_CMDLINE_LINUX_DEFAULT 增...

其中用到的程式碼可能會有變化。根據實際情況理解。 整體設計make-tinycore-linux 是一個把以下流程跑一遍的腳本: 12345678910111213141516apply_build_rc ---------------------- 應用 build.rc 設定(如果有)apply_tc_settings ------------------- 根據設置判斷 Tiny...

回顧先前的壹、貳篇已經大概講述了一個 Linux 系統的基本要素,以及怎麼基於 tinycore linux 的 initrd 來製作自定義的 initrd。在這篇開始之前先來回顧一下。 首先,一個 Linux 系統包含兩個基本部分,程序和數據。程序是 Linux 內核,而數據就是初始的根文件系統。啟動一個 Linux 操作系統即是由引導器加載 initrd,以及命令行參數 cmdline,...

開搞步驟基於別人的 initrd 開始搞是很簡單的事。就像把大象放進冰箱裡一樣,思路很簡單,就四步: 下載 initrd 解壓 initrd 修改 initrd 打包 initrd 但都知道細節才是重點,本文將一步步解釋如何實現以上四點,以及其中的工具怎麼用 在繼續之前,不妨先弄一個目錄作為工作目錄,就叫 tinycore-linux-build 好了 本文將使用 x86_64 架構的 ...

本文是一系列我嘗試製作一個迷你發行版的筆記,皆旨以最简单的语言(可能还是很啰嗦的语言)来描述如何造一個自己的迷你 Linux 發行版。 啟我還在唸書的時候有很多很大的想法,其中一個便是自己造一個系統。但操作系統編寫是一個龐大的工程,且世界上已經有很多人為此付出很多勞動和心血,業界也是碩果累累。如果論現在重新造一個操作系統有何意義,那大概就只剩下研究操作系統這個領域了。 我從一開始便明白操作...

雖說用 Node 是經常的事情,但還是第一次嘗試用 Typescript 寫 NodeJS 程式。今天想寫一個簡單的網站,這裡記錄一下這個簡單的過程。 所需的是 TypeScript 編譯器以及對應的類型定義,我這戲需要用到 Express,所以 Express 和其類型定義也需要安裝。 12npm install expressnpm install typescript ts-node ...

本文的最終目的是編寫出能調用 Webpack 來施行構建流程的 Kotlin Build Script。 前言因為惱於 JavaScript 的無類型,又不喜歡 TypeScript 的類型系統,於是就有了嘗試用 Kotlin 開發前端的嘗試。 不過一番搜尋和嘗試後,我放棄了。兩個類型系統相差懸殊,Kotlin 依舊保留了大量的 JVM 平台行為,各種容器和類型的包裝並不能輕易地和前端開發...

最近在嘗試 Kotlin/JS 的程式構建,遇到 Coroutine 和 Promise 的互相轉換問題。 Promise -> suspend func從 Promise 轉換為 suspend function 是比較簡單的。Kotlin 的 suspend function 都能通過 suspendCoroutine() 暫時掛起。給 Promise 增加一個擴展函數 ...

它从何而来在我的项目里,经常会出现一个叫做 FileServiceAdapter 的东西,从第一个项目开始我就设计了这个东西,到现在它的设计还没有完善。根据命名规则可知,它并不是一个实体类。的确它并不能实际使用,必须继承他实现一个子类才能使用。 它的设计基于业务实体,例如订单、票据、用户等。订单可能有订单相关的附件,票据也会有票据相应的附件。实体有不同的种类,实体都有其对应的实体 ID (E...

本篇所使用的雖然不是標準的 Jwt Token ,重點不在此,而是 Spring 的攔截器使用。 Jwt Token 是一串字符串,分三個部分: 頭 內容 簽名 例如: 1dWlkPTEmZXhwaXJlPTE1OTY0MTg0MDExMDAmdHlwZT10ZXN0JnVzZXI9MTIz.cGVybWl0dGVkPXRlc3Qmcm9sZXM9YSUyQ2IlMkNjJTJDZCUy...