Arch Linux 安装指南:从系统构建到图形环境
🛠 Arch Linux 安装指南 欢迎来到 Arch Linux 的世界。本手册将带你完成从基础系统联网、分区到安装图形界面(GUI)及常用软件的全过程。 1. 环境准备与联网 在启动后的 Live 环境中,首先需要确保网络通畅。 # 1. 如果是无线网络,使用 iwd 联网 iwctl # 进入交互式联网工具 # 在 iwctl 界面中依次执行: # station wlan0 scan # 扫描网络 # station wlan0 get-networks # 列出可用网络 # station wlan0 connect <SSID> # 连接 WiFi # quit # 退出工具 # 2. 检查网络连通性 ping -c 4 google.com # 发送 4 个 ICMP 包测试网络 # 3. 更新系统时间(防止证书校验失败) timedatectl set-ntp true # 开启网络时间同步 2. 磁盘分区与格式化 我们将采用主流的 UEFI + GPT 结构。 ...
Pacman包管理
📦 Arch Linux 包管理器 (Pacman) 权威运维手册 属性 详细说明 核心程序 pacman 配置文件 /etc/pacman.conf 镜像列表 /etc/pacman.d/mirrorlist 缓存路径 /var/cache/pacman/pkg/ 文档版本 v3.0 (进阶详细版) 🛑 1. 安全红线 (The “Do Nots”) 在操作前,请刻在脑子里,否则极易导致系统崩溃(滚挂)。 ❌ 禁忌一:禁止部分更新 (Partial Upgrades) 错误操作: pacman -Sy firefox (只同步数据库,然后只安装 Firefox) 后果: 你的数据库是最新的,但系统里的核心库(如 glibc)是旧的。新 Firefox 调用新库时,因为找不到而崩溃。 ✅ 正确做法: 永远同步并更新整个系统。 sudo pacman -Syu firefox ❌ 禁忌二:强制忽略依赖 错误操作: pacman -Rdd 软件名 后果: 强行删除了被其他软件依赖的包,导致其他软件打不开。 ✅ 正确做法: 除非你非常清楚你在修 bug,否则只用 -Rs 或 -Rns。 ⬇️ 2. 安装与系统更新 (Install & Update) 主参数: -S (Sync) ...
Firewalld 配置指南
🔥 Firewalld 权威参考手册 (Arch Linux 版) 属性 说明 适用系统 Arch Linux, CentOS, Fedora, RHEL, openSUSE 底层后端 nftables (新版) / iptables (旧版) 核心工具 firewall-cmd 配置文件路径 /etc/firewalld/ (用户配置), /usr/lib/firewalld/ (默认配置) 文档版本 v2.0 (终极详细版) 📖 1. 核心设计哲学 (必读) 在操作之前,必须理解 Firewalld 的两个核心概念,否则你的配置可能会重启失效,或者逻辑混乱。 1.1 运行时 (Runtime) vs 永久 (Permanent) Firewalld 的配置分两层: Runtime (内存中): 修改立刻生效,但重启后丢失。用于测试规则。 Permanent (硬盘中): 修改写入配置文件,重载 (Reload) 后才生效。用于持久化。 💡 最佳实践: 永远使用 --permanent 参数,然后立即运行 --reload。除非你只是想临时测试一下怕把自己锁在外面。 1.2 区域 (Zones) Firewalld 将网络划分为不同的“信任等级”。网卡 (Interface) 必须绑定在某个区域里。 区域 (Zone) 信任度 默认行为 典型应用场景 drop 0% (黑洞) 丢弃所有入站包,不给任何回应。 遭受攻击时 / 极高安全环境。 block 10% (拒绝) 拒绝所有入站包,但会回复 icmp-prohibited (告诉对方被拒了)。 调试网络连通性时。 public 30% (默认) 仅允许显式放行的端口 (如 ssh, dhcpv6-client)。 公共 Wi-Fi / 默认对外网卡。 external 40% 类似 public,但默认开启 IP 伪装 (Masquerade)。 路由器 WAN 口 / 软路由出口。 home 70% 信任大多设备,开放 mdns, ssh, samba。 家庭局域网。 work 60% 类似 home,但限制更严。 公司内网。 trusted 100% 允许所有流量 (无防火墙限制)。 VPN 虚拟网卡 (tun0) / 容器内部通信。 🛠 2. 服务生命周期管理 # 启动防火墙 sudo systemctl start firewalld # 设置开机自启 sudo systemctl enable firewalld # 停止防火墙 (调试连通性第一步) sudo systemctl stop firewalld # 彻底禁用 (防止开机自启) sudo systemctl disable firewalld # 检查运行状态 (Running / Not running) sudo firewall-cmd --state # 重新加载配置 (修改 Permanent 后必须执行!) sudo firewall-cmd --reload 🔍 3. 信息查看与审计 (Information) 在修改之前,先学会怎么“看”。 ...
GitHub 使用方法
GitHub 搜索语法完全指南(含实用示例) 一、基础搜索语法 1. 关键词搜索 python:搜索所有包含 “python” 的仓库/代码 "machine learning":精确匹配短语 “machine learning” docker -container:搜索包含 docker 但不含 container 的结果 2. 范围限定 in:name flask:只在仓库名称中搜索 “flask” in:description web framework:只在仓库描述中搜索 in:readme "quick start":只在 README 文件中搜索 repo:vuejs/vue:仅在指定仓库中搜索 二、仓库搜索技巧 1. 属性筛选 stars:>1000:星标超过 1000 的仓库 forks:>500:Fork 数超过 500 的仓库 size:>10000:大小超过 10MB 的仓库 license:mit:MIT 许可证的仓库 archived:false:未归档的活跃仓库 2. 时间范围筛选 pushed:>2024-01-01:2024 年后更新过的仓库 created:2023-01-01..2023-12-31:2023 年创建的仓库 updated:>2024-06-01:最近 30 天更新的仓库 3. 实用案例 查找 Python 高星项目 in:name python stars:>5000 查找近半年更新的 AI 项目 in:description AI pushed:>2024-01-01 查找 MIT 许可的 Web 框架 in:description "web framework" license:mit 查找大型 Java 项目 language:java size:>10000 三、代码搜索技巧 1. 文件属性筛选 language:python:Python 代码 filename:main.py:文件名为 main.py path:/src/:src 目录下的文件 extension:.js:JavaScript 文件 2. 代码内容搜索 "def calculate(":包含特定函数定义 "import React from 'react'":包含精确导入语句 NOT "TODO":排除包含 TODO 的文件 3. 实用案例 查找 Flask 应用入口文件 language:python filename:app.py "from flask import Flask" 查找 React 的 useState 用法 language:javascript "import { useState } from 'react'" 查找所有 Dockerfile filename:Dockerfile 查找测试文件中的断言 path:/test/ "assert.equal(" 查找配置中的数据库连接 "db.connect(" extension:.env 四、用户/组织搜索 user:torvalds:特定用户 org:google:特定组织 followers:>1000:粉丝超过 1000 location:china:来自中国的用户 repos:>50:拥有 50+ 仓库 实用案例 查找中国的 Python 开发者 location:china language:python 查找顶级开发者 followers:>10000 查找 Google 的 AI 项目 org:google in:name AI 查找拥有大量 JS 仓库的开发者 language:javascript repos:>30 五、高级组合搜索 近 1 年更新的 Python 机器学习库,星标 >1k in:description "machine learning" language:python stars:>1000 pushed:>2023-01-01 查找 JavaScript 的 TODO 注释(排除 React 项目) language:javascript "TODO" -react 查找 Go 语言 CLI 工具 in:description "command line" language:go 查找最近一周更新的 TypeScript 工具库 language:typescript in:description "utility library" pushed:>2024-06-24 查找需要帮助的项目 in:readme "help wanted" OR "good first issue" 六、常见场景解决方案 1. 学习资源查找 带教程的 Python 项目 in:readme tutorial language:python 算法实现集合 in:name algorithms OR "data structures" 机器学习示例项目 in:path examples "machine learning" 2. 项目研究 新框架(近 3 个月创建) in:name framework created:>2024-04-01 活跃区块链项目 in:description blockchain stars:>100 pushed:>2024-05-01 3. 贡献机会 需要帮助的项目 in:readme "help wanted" OR "good first issue" 缺少文档的项目 in:description "documentation" NOT filename:README.md 4. 代码片段定位 Python 错误处理示例 language:python "try:" "except" path:/examples/ React 组件使用 filename:*.jsx "import Button from" 七、语法速查表 类别 语法 示例 仓库 in:name in:name flask 描述 in:description in:description API 代码 language: language:typescript 文件 filename: filename:package.json 星标 stars:N stars:>1000 Fork forks:N forks:>500 时间 pushed:YYYY-MM-DD pushed:>2024-01-01 大小 size:N size:>5000 排除 - 或 NOT python -django 八、专业提示 保存搜索:登录 GitHub 后可以保存常用搜索条件。 排序结果:使用 sort:stars 或 sort:updated 排序。 趋势发现:pushed:>YYYY-MM-DD + stars:>100 找新兴项目。 组合技巧:最多可组合 5 个条件进行精准搜索。 高级界面:使用 GitHub 高级搜索 可视化构建查询。
Linux中文件系统各个目录的作用
核心目录结构 / (根目录) 包含了几乎所有的文件目录。相当于中央系统。 /boot (引导程序、内核等存放的目录) 这个目录包括了在引导过程中所必需的文件。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候,虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,但是没经过 Linux 的虚拟文件系统,这是比较底层的东西来实现的)。 然后内核自己创建好虚拟文件系统,并且从虚拟文件系统的其他子目录中(例如 /sbin 和 /etc)加载需要在开机启动的其他程序或者服务或者特定的动作(部分可以由用户自己在相应的目录中修改相应的文件来配制)。 如果我们的机器中包含多个操作系统,那么可以通过修改这个目录中的某个配置文件(例如 grub.conf)来调整启动的默认操作系统、系统启动的选择菜单,以及启动延迟等参数。 /sbin (超级用户可以使用的命令的存放目录) 存放大多涉及系统管理的命令(例如引导系统的 init 程序),是超级权限用户 root 的可执行命令存放地,普通用户无权限执行这个目录下的命令(但是有时普通用户也可能会用到)。 我们要记住,凡是目录 sbin 中包含的都是 root 权限才能执行的。 /bin (普通用户可以使用的命令的存放目录) 系统所需要的那些命令位于此目录,比如 ls、cp、mkdir 等命令;类似的目录还 /usr/bin,/usr/local/bin 等等。这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里。 /lib (根目录下的所有程序的共享库目录) 此目录下包含系统引导和在根用户执行命令时候所必需用到的共享库。做个不太好但是比较形象的比喻,有点类似于 Windows 上面的 system32 目录。 理论上,这里存放的文件应该是 /bin 目录下程序所需要的库文件的存放地,也不排除一些例外的情况。类似的目录还 /usr/lib,/usr/local/lib 等等。 /dev (设备文件目录) 在 Linux 中设备都是以文件形式出现,这里的设备可以是硬盘,键盘,鼠标,网卡,终端等设备,通过访问这些文件可以访问到相应的设备。 设备文件可以使用 mknod 命令来创建;而为了将对这些设备文件的访问转化为对设备的访问,需要向相应的设备提供设备驱动模块(一般将设备驱动编译之后,生成的结果是一个 *.ko 类型的二进制文件,在内核启动之后,再通过 insmod 等命令加载相应的设备驱动之后,我们就可以通过设备文件来访问设备了)。 一般来说,想要 Linux 系统支持某个设备,需要相应的硬件设备、支持硬件的驱动模块,以及相应的设备文件。 /home (普通用户的家目录) 在 Linux 机器上,用户主目录通常直接或间接地置在此目录下。其结构通常由本地机的管理员来决定。 通常而言,系统的每个用户都有自己的家目录,目录以用户名作为名字存放在 /home 下面(例如 josonlee 用户,其家目录的名字为 /home/josonlee)。该目录中保存了绝大多数的用户文件 (用户自己的配置文件、定制文件、文档、数据等)。 ...