diff --git a/astro.config.mts b/astro.config.mts index 3ab3327..5b23eda 100644 --- a/astro.config.mts +++ b/astro.config.mts @@ -1,16 +1,19 @@ -import { defineConfig } from "astro/config" -import { SITE_URL } from "./src/consts" -import vue from "@astrojs/vue" -import tailwind from "@astrojs/tailwind" -import react from "@astrojs/react" -import { handleLocalCoverPlugin } from "./src/plugins/cover" -import { themePipeline } from "./src/plugins/theme" +import { defineConfig } from "astro/config"; +import { SITE_URL } from "./src/consts"; +import vue from "@astrojs/vue"; +import tailwind from "@astrojs/tailwind"; +import react from "@astrojs/react"; +import { handleLocalCoverPlugin } from "./src/plugins/cover"; +import { themePipeline } from "./src/plugins/theme"; +import remarkToc from "remark-toc"; +import rehypeSlug from "rehype-slug"; // https://astro.build/config export default defineConfig({ site: SITE_URL, markdown: { - rehypePlugins: [handleLocalCoverPlugin, ...themePipeline], + remarkPlugins: [[remarkToc, { heading: "目录", tight: true }]], + rehypePlugins: [rehypeSlug, handleLocalCoverPlugin, ...themePipeline], syntaxHighlight: "shiki", shikiConfig: { themes: { @@ -33,16 +36,13 @@ export default defineConfig({ "/active": { target: "https://active.nbtca.space", changeOrigin: true, - rewrite: path => path.replace(/^\/active/, ""), + rewrite: (path) => path.replace(/^\/active/, ""), }, "/saturday": { target: "http://localhost:4000", - rewrite: path => path.replace(/^\/saturday/, ""), + rewrite: (path) => path.replace(/^\/saturday/, ""), }, }, }, - // optimizeDeps: { - // exclude: ["dayjs"], - // }, }, -}) +}); diff --git a/package.json b/package.json index 4ca2246..60b6338 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "rehype": "^13.0.2", + "rehype-slug": "^6.0.0", + "remark-toc": "^9.0.0", "sharp": "^0.33.5", "tailwindcss": "^3.4.17", "unist-util-visit": "^5.0.0", @@ -49,6 +51,7 @@ "@cspell/eslint-plugin": "^8.19.2", "@eslint/js": "^9.25.1", "@hey-api/openapi-ts": "^0.53.12", + "@tailwindcss/typography": "^0.5.16", "@types/eslint__js": "^8.42.3", "@types/md5": "^2.3.5", "@types/qrcode": "^1.5.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05b8bc2..e26975f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,6 +80,12 @@ importers: rehype: specifier: ^13.0.2 version: 13.0.2 + rehype-slug: + specifier: ^6.0.0 + version: 6.0.0 + remark-toc: + specifier: ^9.0.0 + version: 9.0.0 sharp: specifier: ^0.33.5 version: 0.33.5 @@ -108,6 +114,9 @@ importers: '@hey-api/openapi-ts': specifier: ^0.53.12 version: 0.53.12(magicast@0.3.5)(typescript@5.8.3) + '@tailwindcss/typography': + specifier: ^0.5.16 + version: 0.5.16(tailwindcss@3.4.17) '@types/eslint__js': specifier: ^8.42.3 version: 8.42.3 @@ -2371,6 +2380,11 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@tailwindcss/typography@0.5.16': + resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' + '@tanstack/react-virtual@3.11.3': resolution: {integrity: sha512-vCU+OTylXN3hdC8RKg68tPlBPjjxtzon7Ys46MgrSLE+JhSjSTPvoQifV6DQJeJmA8Q3KT6CphJbejupx85vFw==} peerDependencies: @@ -2462,6 +2476,9 @@ packages: '@types/react@18.3.23': resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==} + '@types/ungap__structured-clone@1.2.0': + resolution: {integrity: sha512-ZoaihZNLeZSxESbk9PUAPZOlSpcKx81I1+4emtULDVmBLkYutTcMlCj2K9VNlf9EWODxdO6gkAqEaLorXwZQVA==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -2877,11 +2894,11 @@ packages: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -3752,6 +3769,9 @@ packages: hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + hast-util-is-element@3.0.0: resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} @@ -3767,6 +3787,9 @@ packages: hast-util-to-parse5@8.0.0: resolution: {integrity: sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==} + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + hast-util-to-text@4.0.2: resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} @@ -4139,6 +4162,12 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.castarray@4.4.0: + resolution: {integrity: sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -4222,6 +4251,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdast-util-toc@7.1.0: + resolution: {integrity: sha512-2TVKotOQzqdY7THOdn2gGzS9d1Sdd66bvxUyw3aNpWfcPXCLYSJCCgfPy30sEtuzkDraJgqF35dzgmz6xlvH/w==} + merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -4680,6 +4712,10 @@ packages: peerDependencies: postcss: ^8.2.14 + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -4799,6 +4835,9 @@ packages: rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + rehype-stringify@10.0.1: resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} @@ -4821,6 +4860,9 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + remark-toc@9.0.0: + resolution: {integrity: sha512-KJ9txbo33GjDAV1baHFze7ij4G8c7SGYoY8Kzsm2gzFpbhL/bSoVpMMzGa3vrNDSWASNd/3ppAqL7cP2zD6JIA==} + repeat-string@1.6.1: resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} engines: {node: '>=0.10'} @@ -8772,6 +8814,14 @@ snapshots: dependencies: tslib: 2.8.1 + '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)': + dependencies: + lodash.castarray: 4.4.0 + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.17 + '@tanstack/react-virtual@3.11.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@tanstack/virtual-core': 3.11.3 @@ -8875,6 +8925,8 @@ snapshots: '@types/prop-types': 15.7.14 csstype: 3.1.3 + '@types/ungap__structured-clone@1.2.0': {} + '@types/unist@3.0.3': {} '@types/uuid@10.0.0': {} @@ -9463,12 +9515,12 @@ snapshots: widest-line: 5.0.0 wrap-ansi: 9.0.0 - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -10475,6 +10527,10 @@ snapshots: vfile-location: 5.0.3 web-namespaces: 2.0.1 + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-is-element@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -10523,6 +10579,10 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text@4.0.2: dependencies: '@types/hast': 3.0.4 @@ -10871,6 +10931,10 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.castarray@4.4.0: {} + + lodash.isplainobject@4.0.6: {} + lodash.merge@4.6.2: {} log-symbols@6.0.0: @@ -11040,6 +11104,16 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdast-util-toc@7.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/ungap__structured-clone': 1.2.0 + '@ungap/structured-clone': 1.3.0 + github-slugger: 2.0.0 + mdast-util-to-string: 4.0.0 + unist-util-is: 6.0.0 + unist-util-visit: 5.0.0 + merge-stream@2.0.0: {} merge2@1.4.1: {} @@ -11246,15 +11320,15 @@ snapshots: minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist@1.2.8: {} @@ -11582,6 +11656,11 @@ snapshots: postcss: 8.5.3 postcss-selector-parser: 6.1.2 + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -11718,6 +11797,14 @@ snapshots: hast-util-raw: 9.1.0 vfile: 6.0.3 + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + rehype-stringify@10.0.1: dependencies: '@types/hast': 3.0.4 @@ -11772,6 +11859,11 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 + remark-toc@9.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-toc: 7.1.0 + repeat-string@1.6.1: {} require-directory@2.1.1: {} diff --git a/src/layouts/MarkdownPost.astro b/src/layouts/MarkdownPost.astro index 581a364..c211a25 100644 --- a/src/layouts/MarkdownPost.astro +++ b/src/layouts/MarkdownPost.astro @@ -76,7 +76,9 @@ const dateFormatted = formatDate(pubDate) - +
+ +
@@ -88,7 +90,13 @@ const dateFormatted = formatDate(pubDate)

- 作者: {frontmatter.author} 发表日期:{dateFormatted} + 作者: + { + typeof frontmatter.author === "object" + ? {frontmatter.author.name} + : frontmatter.author + } + ,发表日期:{dateFormatted}

diff --git a/src/pages/posts/getArch_cn.md b/src/pages/posts/getArch_cn.md index e215d99..5a2f79a 100644 --- a/src/pages/posts/getArch_cn.md +++ b/src/pages/posts/getArch_cn.md @@ -10,387 +10,8 @@ cover: tags: ["指南"] --- -# 前言 -Arch奉行[极简主义](https://wiki.archlinux.org/title/Arch_Linux),用户可以自行构建任何想要的功能,接下来以实际本机部署为例简单介绍如何构建属于自己的archlinux - -# 目录 - -- [准备工作](#准备工作) -- [安装介质构建](#安装介质构建) -- [基础安装](#基础安装) - - [1. 使用arch引导盘](#1.使用arch引导盘) - - [2. UEFI检查](#2.uefi检查) - - [3. 联网](#3.-联网) - - [4. 测试连通性](#4.-测试连通性) - - [5. 同步系统时钟](#5.-同步系统时钟) - - [6. 换国内源](#6.-换国内源(在国际互联网内可忽略)) - - [7. 建立btrfs分区](#7.-建立btrfs分区) - - [8. 挂载,请依序从根目录开始挂载](#8.-挂载,请依序从根目录开始挂载) - - [9. 安装系统](#9.-安装系统) - - [10. 生成fstab文件](#10.-生成fstab文件) - - [11. 进入写好的新系统](#11.-进入写好的新系统) - - [12. 设置主机名称与时区](#12.-设置主机名称与时区) - - [13. 硬件时间设置](#13.-硬件时间设置) - - [14. 设置区域](#14.-设置区域) - - [15. 设置root密码](#15.-设置root密码) - - [16. 安装微码](#16.-安装微码) - - [17. 安装Grub引导](#17.-安装grub引导) - - [18. 完成安装](#18.-完成安装) - -# 准备工作 - -电脑,U盘(任何移动存储介质),网络,基本检索能力 - -1. 不论你采取何种镜像方案,即使是离线版镜像构建我也推荐你准备网络条件,这样可以确保内核和工具的更新,当然如果你足够熟练也可自行抉择 - -2. 如果是无线网络,请确保wifi名称是自己记得住的英文名,因为tty环境下是没有办法显示中文的,会变成一个个没办法识别的方块 - -3. 如果你希望在同一块硬盘上安装双系统,请为archlinux留下足够大小的硬盘空间,为了给自己留下安装其他软件的余地,请至少[准备100GB(貌似还没有补充相关教学,请自行搜索)](请补充磁盘分区教学);并且确保EFI分区容量不小于256MB,或者[新增一个额外的挂载点](https://wiki.archlinux.org/title/EFI_system_partition) - -4. 检查Win10分区是否启用Bitlocker加密,请提前获取恢复密钥,并且关闭电源计划中的快速启动! - -> 在操作前请确保仔细阅读并对不太理解的检索学习,谨慎操作,及时备份,数据无价。 - -# 安装介质的构建 - -1. 仅推荐从[archlinux官方的镜像源](https://archlinux.org/download/)下载,请注意,arch是滚动发行版 - -2. 如果你要自行编译,请参考[“内核/传统编译”](https://wiki.archlinux.org/title/Kernel/Traditional_compilation) - -3. 如果使用官方提供的安装镜像,我推荐你使用[ventory](https://www.ventoy.net/)烧录 - -# 基础安装 - -## 1.使用arch引导盘 -> 关机,插入U盘后启动,进入bios选择从U盘启动,在第一个选项回车,以进入arch安装环境 - -## 2.UEFI检查 - -```bash -$ systemctl stop reflector.service -# 禁用自动更新软件源,因为地理上造成的特殊网络环境最好关掉 -``` - -```bash -$ ls /sys/firmware/efi/efivars -# 若输出了一堆efi变量,则启动方式确实为UEFI模式,本帖发布的2025年绝大多数机器是UEFI引导的 -``` - -## 3. 联网 - -> archlinux的安装必须要求网络环境,离线安装步骤则更为繁琐,可参考社区的[Offline installation](https://wiki.archlinux.org/title/Offline_installation) - 有线网络连接则按下不表,连上网线检查接口提示灯是否闪烁,等待几秒地址分配完成建立连接后即可联网 - 当然在校园网环境下则需要上级路由完成认证,可以参考[nbtverify](https://github.com/nbtca/nbtverify)项目 - 无线网络则调用iwctl进行连接 - -```bash -$ lspci -k | grep Network -# 检查无线网卡有没有干活,若明确无问题可以跳过检查 -``` -> 检查内核是否加载了无线网卡驱动 - -> 一般会显示形如: 00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20) - -> 若没有执行检查无线连接是否被禁用(blocked: yes) - -```bash -$ rfkill list -# 无线网卡一般叫 wlan0 -``` - -```bash -$ ip link set wlan0 up -# 若有类似报错:Operation not possible due to RF-kill,则执行 -$ rfkill unblock wifi -``` -```bash -# 使用iwctl联网 -iwctl # 进入交互式命令行 -device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0 -station wlan0 scan # 扫描网络 -station wlan0 get-networks # 列出所有 wifi 网络 -station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可 -exit # 连接成功后退出 -``` - -## 4. 测试连通性 -```bash -ping www.bilibili.com # 测试网络连通与否 -``` -> 若在网络配置上有一些意外情况,可以参见[网络配置/无线网络配置](https://wiki.archlinux.org/title/Network_configuration/Wireless) - -## 5. 同步系统时钟 -```bash -$ timedatectl set-ntp true # 将系统时间与网络时间进行同步 -$ timedatectl status # 检查服务状态 -``` - -## 6. 换国内源(在国际互联网内可忽略) -```bash -$ vim /etc/pacman.d/mirrorlist # 准备换源,若上级路由完成代理即可忽略 -Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站 -Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站 -Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站 -``` - -## 7. 建立btrfs分区 -```bash -$ lsblk # 显示当前分区情况 -``` -- 请仔细检查自己要安装arch的目标硬盘名字 -- sda,nvme分别是sata和nvme协议 -- sata协议的硬盘排序为sda、sdb、sdc等,sda1、sda2为分区排序 -- nvme协议的硬盘排序为nvme0n1、nvme1n1、nvme2n1等,nvme0n1p1、nvme0n1p2为分区排序 -- 以sata硬盘为示范,具体硬盘自己更换指令! - -```bash -$ cfdisk /dev/sdx # 对安装 archlinux 的磁盘分区 -``` -> 是不是进入了友好的TUI页面XD -- 因为已经预先留下了空间给arch,所以应该是有若干个G的FreeSpace -- 首先创建 Swap 分区。选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建 swap 分区(类似 Windows 的交换文件) -按下回车后会提示输入 分区大小,Swap 分区建议为电脑内存大小的 60%,或者和内存大小相等 > 然后按下回车 Enter -- 默认新建的类型是 Linux filesystem,我们需要将类型更改为 Linux swap。选中操作 [Type] > 然后按下回车 Enter > 通过方向键 ↑ 和 ↓ 选中 Linux swap > 最后按下回车 Enter -- 我们再只需要一个分区即可(因为使用 Btrfs 文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建分区 -输入 分区大小(默认是剩余的全部空间。请根据实际情况输入)> 然后按下回车 Enter -- 分区类型默认即可,无需更改。接下来选中操作 [Write] 并回车 Enter > 输入 yes 并回车 Enter 确认分区操作 -要是没写入就是白忙活,所以确认[Write]了喔 -``` -☢️ 警告 - -再次提醒!请仔细检查命令和操作的正确性,否则将出现不可预料的情况。最危险的是可能造成数据丢失! -常见的错误包括不小心把 Windows 的分区删掉了 😥。 -``` - -```bash -$ fdisk -l -# 复查磁盘情况 -``` - -```bash -$ mkfs.fat -F32 /dev/sdxn -# 格式化并创建 Btrfs 子卷 -``` -> 如果你是双系统那么无需格式化,因为linux可以共享Windows的EFI分区,参见[Dual boot with Windows](https://wiki.archlinux.org/title/Dual_boot_with_Windows),只需注意EFI分区大小是否足够你安装 - -```bash -$ mkswap /dev/sdxn -# 格式化 Swap 分区 -``` - -```bash -$ mkfs.btrfs -L myArch /dev/sdxn -# 格式化 Btrfs 分区 -``` - -```bash -$ mount -t btrfs -o compress=zstd /dev/sdxn /mnt -# 挂载分区以创建子卷 -``` - -```bash -$ btrfs subvolume create /mnt/@ # 创建 / 目录子卷 -$ btrfs subvolume create /mnt/@home # 创建 /home 目录子卷 -# 创建Btrfs子卷 -``` - -```bash -$ umount /mnt -# 卸载/mnt以挂载子卷 -``` - -## 8. 挂载,请依序从根目录开始挂载 - -```bash -$ mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt # 挂载 / 目录 -$ mkdir /mnt/home # 创建 /home 目录 -$ mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home # 挂载 /home 目录 -$ mkdir -p /mnt/boot # 创建 /boot 目录 -$ mount /dev/sdxn /mnt/boot # 挂载 /boot 目录 -$ swapon /dev/sdxn # 挂载交换分区 -``` - -```zsh -$ df -h # 检查挂载 -$ free -h # 复查Swap分区挂载 -``` - -## 9. 安装系统 - -```bash -$ pacstrap /mnt base base-devel linux linux-firmware btrfs-progs -# 如果使用btrfs文件系统,额外安装一个btrfs-progs包 -``` - -```bash -$ pacman -S archlinux-keyring -# 如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新 archlinux-keyring 解决此问题 -``` - -```zsh -$ pacstrap /mnt networkmanager vim sudo zsh zsh-completions -# 使用pacstrap脚本安装必要功能性软件 -``` - -## 10. 生成fstab文件 -> 生成fstab以定义磁盘分区,受当前挂载情况影响 -```zsh -$ genfstab -U /mnt > /mnt/etc/fstab -``` - -## 11. 进入写好的新系统 -```zsh -$ arch-chroot /mnt -# 代码高亮消失了?不要慌,说明你已经成功change root了 -``` - -## 12. 设置主机名称与时区 -```zsh -$ vim /etc/hostname -# 给电脑起个名字吧XD(不要包含特殊字符和空格,不然有坑的,并且不起主机名会有时候出奇怪问题,一些GUI程序莫名其妙死了,不论怎样还是起一个名字) -``` - -```zsh -$ vim /etc/hosts -# 编辑主机host -``` - -> 填入如下内容(其中myarch替换成你自己的主机名,中间间隙不是空格是tab对齐,强迫症狂喜XD) - -```zsh -127.0.0.1 localhost -::1 localhost -127.0.1.1 myarch.localdomain myarch -``` - -```zsh -$ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime -# 在上海时区创建符号链接 -# 别问为什么是上海,因为没有北京XD,当然你也可以使用其他时区 -``` - -```zsh -$ ls /usr/share/zoneinfo/ -# 检查你要的时区,更换上条命令的地址 -``` - -## 13. 硬件时间设置 - -```zsh -$ hwclock --systohc -# 系统时间同步到硬件时间 -``` - -## 14. 设置区域 -```zsh -$ vim /etc/locale.gen -# 编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#) -# 这一步决定了软件使用的语言和字符集 -``` - -```zsh -$ locale-gen -# 生成locale -``` - -```zsh -$ echo 'LANG=en_US.UTF-8' > /etc/locale.conf -# 注入locale.conf,不推荐任何中文locale,tty会乱码 -``` - -## 15. 设置root密码 -```zsh -$ passwd root -# 输入密码是隐式的,并不会显示,并非键盘坏了XD -``` - -## 16. 安装微码 -```zsh -$ pacman -S intel-ucode # Intel -$ pacman -S amd-ucode #AMD -``` - -## 17. 安装Grub引导 -```zsh -$ pacman -S grub efibootmgr os-prober -# grub是启动引导器,efibootmgr是被启动器用来向nvram写入启动项,os-prober用于引导win10 -``` - -```zsh -$ grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH -# 安装grub到EFI分区 -``` - -```zsh -$ vim /etc/default/grub -# 编辑启动参数 -``` - -```zsh -# 修改"loglevel=3 quiet" 至 "loglevel=5 nowatchdog" -# 文件末尾新增一行:GRUB_DISABLE_OS_PROBER=false -``` -- 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数 -- 把 loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错 -- 加入 nowatchdog 参数,这可以显著提高开关机速度 -- 加入os-prober参数,用于引导win10 - -```zsh -$ grub-mkconfig -o /boot/grub/grub.cfg -# 生成grub所需配置文件 -``` - -> 若检查到win10,则会多出一行“Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi done”的回显,若win10在另一块硬盘则不会输出,进系统后重新挂载再跑一遍即可 - - -> 此处的全部参数可参见[archwiki](https://wiki.archlinux.org/title/GRUB) - -## 18. 完成安装 -```zsh -$ exit # 退回安装环境 -$ umount -R /mnt # 卸载新分区 -$ reboot # 重启 -``` -> 重启后用root账户登录 - -```zsh -$ systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务 -$ ping www.bilibili.com # 测试网络连接 -``` - -> 如果是无线网的话 -```zsh -$ nmcli dev wifi list # 显示附近的 Wi-Fi 网络 -$ nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络 -``` - -```zsh -$ nmtui -# 个人还是比较喜欢nmtui,比较友好XD -``` - -```zsh -$ pacman -S fastfetch -$ fastfetch -# 安装fastfetch,检查系统信息 -# 喜闻乐见的neofetch时间XD -``` - -```zsh -$ shutdown 0 -$ shutdown -h now -$ poweroff -# 上面三个命令都是关机,🤣记得关机,电源策略还没写呢 -``` - ---- - -# 恭喜🎉 -> 至此,你已经完成一个基础无图形界面的archlinux安装了 - -> 图形化安装应该会在下一次更新发布,不过还是那句老话:多看手册 - -> 本文抛砖引玉,希望能吸引更多同好前来计协蕉流♂ - +# +# 本文调整格式和内容中,若急需请移步本人临时渲染的[blog](https://us.m1ng.space/posts/myarch/) +🖥 [小明](https://m1ng.space/) 写于2025年05月29日 diff --git a/src/pages/posts/minecraftMac.md b/src/pages/posts/minecraftMac.md new file mode 100644 index 0000000..4da0047 --- /dev/null +++ b/src/pages/posts/minecraftMac.md @@ -0,0 +1,88 @@ +--- +layout: "../../layouts/MarkdownPost.astro" +title: "在Apple Silicon Mac上使用Minecraft光影和模组" +pubDate: 2025-06-10 +description: "🤪" +author: + name: "小明" + url: "https://m1ng.space/" +cover: + url: "https://i.pinimg.com/736x/6f/00/d7/6f00d73e426549d0f5b1bb873bf2015f.jpg" + alt: "cover" +tags: ["指南"] +--- + +# 简介 + +> 在本指南中,我们将向您展示如何使用Iris Shaders模组在Mac上为Minecraft添加光影和模组。这种方法可以增强Mac上Minecraft的视觉效果和游戏体验,包括使用Apple Silicon芯片的Mac。我们将介绍安装过程,确保您能获得视觉效果出众且运行流畅的Minecraft体验。无论您是刚接触模组和光影,还是想要升级您的Minecraft设置,这个简明的指南都能满足您的需求。 + +您需要的所有链接都在这里: + +| content | link | +| :------------: | :------------------------------------: | +| Minecraft Java | | +| Fabric | | +| Fabric API | | +| Sodium | | +| Iris | | + +## 目录 + +## 1. 安装Fabric + +第一步是安装Fabric加载器。前往 + +并点击Download installer (Universal/.JAR)下载fabric。 + +双击.jar包安装Fabric加载器。根据您的情况安装特定版本或最新版本。 + +## 2. 安装必要的模组 + +安装Fabric加载器后,打开Minecraft启动器。您会发现有一个fabri-loader-1.XX. +X,只需点击开始游戏下载一些必要的包。 + +如果一切正确,您就会进入游戏。现在关闭游戏并前往**/Library/Application Support/minecraft**。 + +您需要创建两个新文件夹,一个叫mods(在这里放模组)和一个叫shaderpacks(在这里放光影)。 + +现在您需要下载: + +- [Fabric API](https://modrinth.com/mod/fabric-api/) + + > Fabric API是一个极简的Minecraft模组工具链,提供了一个灵活的框架来创建模组。以其快速更新和与新Minecraft版本的兼容性而闻名,它支持客户端和服务器端模组,使其成为模组社区中的热门选择。 + +- [Sodium](https://modrinth.com/mod/sodium) + + > Sodium是一个Minecraft性能优化模组,可以显著提高游戏的帧率并减少延迟。它设计用于与Fabric模组加载器一起工作,专注于优化游戏的渲染引擎。通过重写游戏图形引擎的关键部分,Sodium提供了更流畅的游戏体验,特别是在低端硬件上。它以能够在不影响游戏视觉质量的情况下提升性能而备受好评,是希望改善Minecraft体验的玩家的热门选择。 + +- [Iris](https://modrinth.com/mod/iris) + > Iris是一个用于在Fabric上使用光影的Minecraft模组,提供与Sodium的兼容性以增强性能和视觉效果。它简化了光影管理,允许高级照明和效果。 + > 将下载的文件放入`mods`文件夹。 + +```bash +➜ mods tree +. +├── fabric-api-0.102.0+1.21.jar +├── iris-fabric-1.8.8+mc1.21.1.jar +├── litematica-fabric-1.21-0.19.58.jar +├── malilib-fabric-1.21-0.21.8.jar +├── reeses-sodium-options-fabric-1.8.3+mc1.21.4.jar +├── sodium-extra-fabric-0.6.0+mc1.21.1.jar +└── sodium-fabric-0.6.13+mc1.21.1.jar + +1 directory, 7 files +``` + +下载这些模组后,打开游戏检查是否一切正常。如果有错误,可能是因为Mac击支持或版本不兼容。选择正确的版本下载。 + +## 3. 下载您的光影包 + +前往 下载光影。您需要注意这些光影是否支持Mac。 + +将下载的光影放入shaderpacks。打开游戏并点击选项–>视频设置–>光影包,现在您可以看到您的光影了。 + +然后在列表中点击您想要的光影包,点击应用,然后完成。 + +## 4. 享受游戏 + +恭喜您,尽情享受游戏吧。 diff --git a/tailwind.config.mjs b/tailwind.config.mjs index 2258176..459e532 100644 --- a/tailwind.config.mjs +++ b/tailwind.config.mjs @@ -1,7 +1,12 @@ import { heroui } from "@heroui/react" +import typography from "@tailwindcss/typography" + /** @type {import('tailwindcss').Config} */ export default { - content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}", "./node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}"], + content: [ + "./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}", + "./node_modules/@heroui/theme/dist/**/*.{js,ts,jsx,tsx}", + ], theme: { screens: { xs: "416px", @@ -16,5 +21,5 @@ export default { }, }, darkMode: ["selector", "body.theme-dark"], - plugins: [heroui()], + plugins: [heroui(), typography()], }