活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

深入浅出Fedora Silverblue系统配置工具打造高效不可变操作系统环境适合开发者系统管理员专业实用操作指南技巧大全

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-18 20:50:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Fedora Silverblue是Fedora项目的一个创新版本,它代表了一种全新的操作系统设计理念——不可变基础设施。作为一个面向开发者和系统管理员的操作系统,Fedora Silverblue通过其独特的架构设计,提供了更高的稳定性、安全性和可预测性。本文将深入探讨Fedora Silverblue的各个方面,从基础概念到高级配置技巧,帮助读者充分利用这一强大的操作系统环境。

Fedora Silverblue的核心特性

不可变操作系统

Fedora Silverblue的核心特性之一是其不可变性。与传统操作系统不同,Silverblue的系统分区是只读的,这意味着系统文件在运行时不会被修改。所有的更新都是通过原子操作完成的,要么完全成功,要么完全失败,不会留下系统处于不一致状态。

ostree技术

Silverblue使用了ostree技术来管理系统版本。ostree类似于git,但是用于操作系统二进制文件。它允许用户轻松地在不同的系统版本之间切换,并在需要时回滚到之前的版本。

rpm-ostree包管理

rpm-ostree是Silverblue的包管理工具,它结合了传统rpm包管理的功能和ostree的版本控制能力。通过rpm-ostree,用户可以轻松地添加、删除和更新软件包,同时保持系统的完整性。

Flatpak应用管理

Silverblue默认使用Flatpak作为应用程序分发格式。Flatpak提供了沙盒环境,使应用程序能够与系统隔离运行,提高了安全性和兼容性。

容器友好

Silverblue天生适合容器化工作负载。它预装了Podman、Buildah和Skopeo等容器工具,使用户能够轻松构建、运行和管理容器。

安装Fedora Silverblue

系统要求

在安装Fedora Silverblue之前,确保您的系统满足以下最低要求:

• 64位x86处理器(Intel或AMD)
• 至少4GB RAM(推荐8GB或更多)
• 至少20GB的可用磁盘空间(推荐更多,特别是对于开发工作)
• 支持UEFI或Legacy BIOS启动

下载Fedora Silverblue

1. 访问Fedora Silverblue官方网站:https://silverblue.fedoraproject.org/
2. 点击”Download”按钮,选择适合您系统的版本(通常是最新的稳定版本)
3. 下载ISO镜像文件

创建安装介质

1. 插入USB闪存驱动器(至少8GB)
2. 使用Fedora Media Writer或其他工具(如dd、balenaEtcher等)创建启动USB

在Linux上使用dd命令创建启动USB的示例:
  1. # 确定USB设备名称(例如/dev/sdb)
  2. lsblk
  3. # 卸载USB设备(如果已挂载)
  4. sudo umount /dev/sdb*
  5. # 使用dd命令写入ISO镜像
  6. sudo dd if=Fedora-Silverblue-<version>-x86_64.iso of=/dev/sdb bs=4M status=progress
复制代码

安装过程

1. 将创建的启动USB插入目标计算机
2. 重启计算机并进入BIOS/UEFI设置,选择从USB启动
3. 从Fedora Silverblue安装菜单选择”Start Fedora Silverblue”
4. 进入Live环境后,双击桌面上的”Install to Hard Drive”图标
5. 按照安装向导的提示进行操作:选择语言和键盘布局配置网络和主机名选择安装目标(磁盘分区)创建用户账户和密码
6. 选择语言和键盘布局
7. 配置网络和主机名
8. 选择安装目标(磁盘分区)
9. 创建用户账户和密码
10. 确认设置并开始安装
11. 安装完成后,重启计算机并移除USB

• 选择语言和键盘布局
• 配置网络和主机名
• 选择安装目标(磁盘分区)
• 创建用户账户和密码

基础系统配置

首次启动设置

首次启动Fedora Silverblue后,您需要进行一些基本设置:

1. 欢迎界面:选择语言和输入法
2. 隐私设置:配置位置服务和问题报告
3. 在线账户:连接您的Google、Nextcloud等在线账户(可选)
4. 完成设置:点击”Start Using Fedora Silverblue”

系统更新

保持系统更新是确保安全性和稳定性的关键。在Fedora Silverblue中,更新系统使用rpm-ostree:
  1. # 检查可用更新
  2. rpm-ostree update --check
  3. # 应用更新
  4. rpm-ostree update
  5. # 重启系统以应用更新
  6. systemctl reboot
复制代码

软件包管理

在Fedora Silverblue中,有几种方式安装软件:
  1. # 安装单个软件包
  2. rpm-ostree install <package_name>
  3. # 安装多个软件包
  4. rpm-ostree install <package1> <package2> <package3>
  5. # 查看已安装的层叠包
  6. rpm-ostree overlay list
  7. # 卸载层叠包
  8. rpm-ostree uninstall <package_name>
复制代码
  1. # 安装Flatpak应用程序
  2. flatpak install <remote_name> <app_id>
  3. # 例如,安装Firefox
  4. flatpak install flathub org.mozilla.firefox
  5. # 列出已安装的Flatpak应用程序
  6. flatpak list
  7. # 运行Flatpak应用程序
  8. flatpak run <app_id>
  9. # 更新Flatpak应用程序
  10. flatpak update
复制代码

系统服务管理

Fedora Silverblue使用systemd作为系统和服务管理器。以下是一些常用的systemd命令:
  1. # 启动服务
  2. sudo systemctl start <service_name>
  3. # 停止服务
  4. sudo systemctl stop <service_name>
  5. # 启用服务(开机自启)
  6. sudo systemctl enable <service_name>
  7. # 禁用服务
  8. sudo systemctl disable <service_name>
  9. # 查看服务状态
  10. systemctl status <service_name>
  11. # 查看所有正在运行的服务
  12. systemctl list-units --type=service
复制代码

使用rpm-ostree管理系统

理解rpm-ostree

rpm-ostree是Fedora Silverblue的核心系统管理工具,它结合了传统RPM包管理和ostree版本控制系统的优点。使用rpm-ostree,您可以:

• 原子性地更新整个系统
• 在系统版本之间轻松切换
• 添加或删除软件包作为层叠包
• 回滚到之前的系统版本

基本rpm-ostree命令

以下是一些常用的rpm-ostree命令:
  1. # 查看当前系统状态
  2. rpm-ostree status
  3. # 检查可用更新
  4. rpm-ostree update --check
  5. # 应用更新
  6. rpm-ostree update
  7. # 查看部署历史
  8. rpm-ostree history
  9. # 安装软件包
  10. rpm-ostree install <package_name>
  11. # 卸载软件包
  12. rpm-ostree uninstall <package_name>
  13. # 查看已安装的软件包
  14. rpm-ostree pkg-list
  15. # 查看可用的软件包
  16. rpm-ostree repo list
复制代码

系统版本管理
  1. # 查看当前部署的详细信息
  2. rpm-ostree status
  3. # 查看ostree日志
  4. ostree log
复制代码
  1. # 切换到之前的部署
  2. rpm-ostree rollback
  3. # 切换到特定的部署
  4. rpm-ostree deploy <checksum_or_version>
  5. # 例如,切换到特定的提交
  6. rpm-ostree deploy 5a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b
复制代码
  1. # 列出所有部署
  2. rpm-ostree status
  3. # 删除特定的部署
  4. rpm-ostree cleanup -p <revision>
  5. # 删除所有未使用的部署
  6. rpm-ostree cleanup -pr
复制代码

自定义系统镜像
  1. # 安装软件包并创建新的提交
  2. rpm-ostree install <package1> <package2>
  3. # 查看更改
  4. rpm-ostree diff
  5. # 应用更改并重启
  6. systemctl reboot
复制代码
  1. # 导出当前系统配置
  2. rpm-ostree compose tree --export-config config.json
  3. # 使用配置文件构建新系统
  4. rpm-ostree compose tree config.json
复制代码

使用Flatpak管理应用程序

Flatpak基础

Flatpak是一种用于构建、分发和运行桌面应用程序的技术。它提供了沙盒环境,使应用程序能够与系统隔离运行,提高了安全性和兼容性。

配置Flatpak仓库
  1. # 添加Flathub仓库(最大的Flatpak应用仓库)
  2. flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
  3. # 添加Fedora仓库
  4. flatpak remote-add --if-not-exists fedora oci+https://registry.fedoraproject.org
  5. # 列出已配置的仓库
  6. flatpak remotes
复制代码

安装和管理Flatpak应用程序
  1. # 搜索应用程序
  2. flatpak search <app_name>
  3. # 安装应用程序
  4. flatpak install flathub <app_id>
  5. # 例如,安装Visual Studio Code
  6. flatpak install flathub com.visualstudio.code
  7. # 列出已安装的应用程序
  8. flatpak list
  9. # 更新应用程序
  10. flatpak update
  11. # 更新特定的应用程序
  12. flatpak update <app_id>
  13. # 卸载应用程序
  14. flatpak uninstall <app_id>
  15. # 查看应用程序信息
  16. flatpak info <app_id>
复制代码

Flatpak权限管理
  1. # 查看应用程序权限
  2. flatpak info --show-permissions <app_id>
  3. # 修改应用程序权限
  4. flatpak override <app_id> --permission=<permission>
  5. # 例如,允许应用程序访问网络
  6. flatpak override <app_id> --share=network
  7. # 例如,允许应用程序访问主目录
  8. flatpak override <app_id> --filesystem=home
  9. # 重置应用程序权限
  10. flatpak override --reset <app_id>
复制代码

使用Flatpak进行开发
  1. # 安装开发平台和SDK
  2. flatpak install flathub <runtime_id>
  3. flatpak install flathub <sdk_id>
  4. # 例如,安装GNOME平台和SDK
  5. flatpak install flathub org.gnome.Platform//41
  6. flatpak install flathub org.gnome.Sdk//41
  7. # 构建Flatpak应用程序
  8. flatpak-builder build-dir <manifest_file>
  9. # 运行构建的应用程序
  10. flatpak-builder --run build-dir <manifest_file> <command>
复制代码

开发环境配置

容器化开发环境

Fedora Silverblue天生适合容器化开发。以下是设置容器化开发环境的步骤:

Toolbox是一个用于创建和管理容器的工具,它允许您在Silverblue的不可变系统之外创建一个可变的环境,用于开发和调试。
  1. # 安装Toolbox
  2. rpm-ostree install toolbox
  3. # 重启系统以应用更改
  4. systemctl reboot
  5. # 创建默认的Toolbox容器
  6. toolbox create
  7. # 进入Toolbox容器
  8. toolbox enter
  9. # 在容器内安装开发工具
  10. sudo dnf install python3 python3-pip nodejs npm
  11. # 退出Toolbox容器
  12. exit
复制代码
  1. # 创建基于特定镜像的Toolbox容器
  2. toolbox create --image fedora:35
  3. # 创建具有特定名称的Toolbox容器
  4. toolbox create --container dev-env
  5. # 列出所有Toolbox容器
  6. toolbox list
  7. # 进入特定的Toolbox容器
  8. toolbox enter dev-env
  9. # 删除Toolbox容器
  10. toolbox rm dev-env
复制代码

编程语言环境设置
  1. # 在Toolbox容器中安装Python和相关工具
  2. toolbox enter
  3. sudo dnf install python3 python3-pip python3-virtualenv
  4. # 创建虚拟环境
  5. python3 -m venv myproject-env
  6. # 激活虚拟环境
  7. source myproject-env/bin/activate
  8. # 安装Python包
  9. pip install numpy pandas matplotlib
  10. # 退出虚拟环境
  11. deactivate
复制代码
  1. # 在Toolbox容器中安装Node.js和npm
  2. toolbox enter
  3. sudo dnf install nodejs npm
  4. # 初始化Node.js项目
  5. npm init -y
  6. # 安装依赖
  7. npm install express react
  8. # 运行Node.js应用
  9. node app.js
复制代码
  1. # 在Toolbox容器中安装Java开发工具包
  2. toolbox enter
  3. sudo dnf install java-latest-openjdk java-latest-openjdk-devel maven
  4. # 验证Java安装
  5. java -version
  6. javac -version
  7. # 使用Maven创建新项目
  8. mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
复制代码

IDE和编辑器配置
  1. # 安装Visual Studio Code Flatpak
  2. flatpak install flathub com.visualstudio.code
  3. # 运行Visual Studio Code
  4. flatpak run com.visualstudio.code
  5. # 安装VS Code扩展
  6. # 在VS Code中,按Ctrl+Shift+X,搜索并安装所需扩展
复制代码
  1. # 安装IntelliJ IDEA Flatpak
  2. flatpak install flathub com.jetbrains.IntelliJ-IDEA-Community
  3. # 运行IntelliJ IDEA
  4. flatpak run com.jetbrains.IntelliJ-IDEA-Community
复制代码
  1. # 在Toolbox容器中安装Neovim
  2. toolbox enter
  3. sudo dnf install neovim
  4. # 创建Neovim配置目录
  5. mkdir -p ~/.config/nvim
  6. # 创建init.vim文件
  7. cat > ~/.config/nvim/init.vim << EOF
  8. set number
  9. syntax on
  10. set tabstop=4
  11. set shiftwidth=4
  12. set expandtab
  13. EOF
  14. # 安装vim-plug插件管理器
  15. curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs \
  16.     https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  17. # 在init.vim中添加插件配置
  18. cat >> ~/.config/nvim/init.vim << EOF
  19. call plug#begin('~/.local/share/nvim/plugged')
  20. Plug 'preservim/nerdtree'
  21. Plug 'tpope/vim-fugitive'
  22. Plug 'vim-airline/vim-airline'
  23. call plug#end()
  24. EOF
  25. # 安装插件
  26. nvim +PlugInstall +qall
复制代码

数据库开发环境
  1. # 在Toolbox容器中安装PostgreSQL
  2. toolbox enter
  3. sudo dnf install postgresql-server postgresql-contrib
  4. # 初始化数据库集群
  5. sudo postgresql-setup --initdb
  6. # 启动PostgreSQL服务
  7. sudo systemctl start postgresql
  8. # 设置开机自启
  9. sudo systemctl enable postgresql
  10. # 创建数据库用户和数据库
  11. sudo -u postgres createuser --interactive
  12. sudo -u postgres createdb mydatabase
  13. # 连接到数据库
  14. psql -U username -d mydatabase
复制代码
  1. # 在Toolbox容器中安装MariaDB
  2. toolbox enter
  3. sudo dnf install mariadb-server
  4. # 启动MariaDB服务
  5. sudo systemctl start mariadb
  6. # 设置开机自启
  7. sudo systemctl enable mariadb
  8. # 运行安全安装脚本
  9. sudo mysql_secure_installation
  10. # 连接到MariaDB
  11. mysql -u root -p
复制代码
  1. # 在Toolbox容器中安装MongoDB
  2. toolbox enter
  3. sudo dnf install mongodb-server
  4. # 启动MongoDB服务
  5. sudo systemctl start mongod
  6. # 设置开机自启
  7. sudo systemctl enable mongod
  8. # 连接到MongoDB
  9. mongo
复制代码

系统管理员工具和技巧

系统监控和性能分析
  1. # 安装htop
  2. rpm-ostree install htop
  3. systemctl reboot
  4. # 运行htop
  5. htop
  6. # 运行top
  7. top
复制代码
  1. # 显示内存、进程和CPU活动
  2. vmstat
  3. # 每秒更新一次,共5次
  4. vmstat 1 5
复制代码
  1. # 安装sysstat包
  2. rpm-ostree install sysstat
  3. systemctl reboot
  4. # 显示CPU和I/O统计信息
  5. iostat
  6. # 每秒更新一次,共5次
  7. iostat 1 5
复制代码

网络配置和管理
  1. # 查看网络连接
  2. nmcli connection show
  3. # 查看网络设备状态
  4. nmcli device status
  5. # 创建新的网络连接
  6. nmcli connection add type ethernet ifname enp0s3 con-name my-connection
  7. # 修改网络连接
  8. nmcli connection modify my-connection ipv4.addresses 192.168.1.100/24
  9. nmcli connection modify my-connection ipv4.gateway 192.168.1.1
  10. nmcli connection modify my-connection ipv4.dns "8.8.8.8 8.8.4.4"
  11. # 激活网络连接
  12. nmcli connection up my-connection
  13. # 停用网络连接
  14. nmcli connection down my-connection
复制代码
  1. # 查看防火墙状态
  2. sudo firewall-cmd --state
  3. # 查看当前活动的区域
  4. sudo firewall-cmd --get-active-zones
  5. # 查看默认区域
  6. sudo firewall-cmd --get-default-zone
  7. # 开放端口
  8. sudo firewall-cmd --permanent --add-port=8080/tcp
  9. # 重新加载防火墙配置
  10. sudo firewall-cmd --reload
  11. # 查看开放的端口
  12. sudo firewall-cmd --list-ports
复制代码

系统安全加固
  1. # 查看SELinux状态
  2. sestatus
  3. # 设置SELinux为强制模式
  4. sudo setenforce 1
  5. # 设置SELinux为宽松模式
  6. sudo setenforce 0
  7. # 查看文件的安全上下文
  8. ls -Z
  9. # 修改文件的安全上下文
  10. sudo chcon -t httpd_sys_content_t /var/www/html/index.html
  11. # 恢复文件的安全上下文
  12. sudo restorecon -v /var/www/html/index.html
复制代码
  1. # 安装auditd
  2. rpm-ostree install audit
  3. systemctl reboot
  4. # 启动auditd服务
  5. sudo systemctl start auditd
  6. # 设置开机自启
  7. sudo systemctl enable auditd
  8. # 查看审计日志
  9. sudo ausearch -m AVC -ts recent
  10. # 添加审计规则
  11. sudo auditctl -w /etc/passwd -p wa -k passwd_changes
  12. # 列出当前审计规则
  13. sudo auditctl -l
复制代码

备份和恢复策略
  1. # 安装rsync
  2. rpm-ostree install rsync
  3. systemctl reboot
  4. # 备份整个系统
  5. sudo rsync -aAXv / --exclude=/dev --exclude=/proc --exclude=/sys --exclude=/tmp --exclude=/run --exclude=/mnt --exclude=/media /backup/
  6. # 恢复系统
  7. sudo rsync -aAXv /backup/ /
复制代码
  1. # 安装BorgBackup
  2. rpm-ostree install borgbackup
  3. systemctl reboot
  4. # 初始化备份仓库
  5. borg init --encryption=repokey /backup/mybackup
  6. # 创建备份
  7. borg create --stats /backup/mybackup::$(date +%Y-%m-%d) /home /etc /var
  8. # 列出备份
  9. borg list /backup/mybackup
  10. # 提取备份
  11. borg extract /backup/mybackup::2023-01-01
复制代码

高级配置和优化

内核参数调优
  1. # 查看当前内核参数
  2. sysctl -a
  3. # 临时修改内核参数
  4. sudo sysctl -w net.core.rmem_max=4194304
  5. # 验证修改
  6. sysctl net.core.rmem_max
复制代码
  1. # 创建自定义内核参数文件
  2. sudo tee /etc/sysctl.d/99-custom.conf > /dev/null <<EOF
  3. # 增加文件描述符限制
  4. fs.file-max = 100000
  5. # 网络调优
  6. net.core.rmem_max = 4194304
  7. net.core.wmem_max = 4194304
  8. net.ipv4.tcp_rmem = 4096 87380 4194304
  9. net.ipv4.tcp_wmem = 4096 65536 4194304
  10. net.core.netdev_max_backlog = 10000
  11. net.ipv4.tcp_congestion_control = bbr
  12. EOF
  13. # 应用新的内核参数
  14. sudo sysctl -p /etc/sysctl.d/99-custom.conf
复制代码

文件系统优化
  1. # 安装Btrfs工具
  2. rpm-ostree install btrfs-progs
  3. systemctl reboot
  4. # 创建Btrfs文件系统
  5. sudo mkfs.btrfs -L mybtrfs /dev/sdb1
  6. # 挂载Btrfs文件系统
  7. sudo mkdir /mnt/mybtrfs
  8. sudo mount /dev/sdb1 /mnt/mybtrfs
  9. # 创建子卷
  10. sudo btrfs subvolume create /mnt/mybtrfs/subvol1
  11. # 查看子卷列表
  12. sudo btrfs subvolume list /mnt/mybtrfs
  13. # 创建快照
  14. sudo btrfs subvolume snapshot /mnt/mybtrfs/subvol1 /mnt/mybtrfs/snapshot1
复制代码
  1. # 安装XFS工具
  2. rpm-ostree install xfsprogs
  3. systemctl reboot
  4. # 创建XFS文件系统
  5. sudo mkfs.xfs -L myxfs /dev/sdb1
  6. # 挂载XFS文件系统
  7. sudo mkdir /mnt/myxfs
  8. sudo mount /dev/sdb1 /mnt/myxfs
  9. # 调整XFS文件系统参数
  10. sudo xfs_admin -L newlabel /dev/sdb1
复制代码

系统服务优化
  1. # 查看服务启动时间
  2. systemd-analyze
  3. # 查看服务启动详情
  4. systemd-analyze blame
  5. # 查看关键链
  6. systemd-analyze critical-chain
  7. # 创建自定义服务单元
  8. sudo tee /etc/systemd/system/myservice.service > /dev/null <<EOF
  9. [Unit]
  10. Description=My Custom Service
  11. After=network.target
  12. [Service]
  13. Type=simple
  14. ExecStart=/usr/local/bin/myscript.sh
  15. Restart=on-failure
  16. [Install]
  17. WantedBy=multi-user.target
  18. EOF
  19. # 重新加载systemd配置
  20. sudo systemctl daemon-reload
  21. # 启用并启动服务
  22. sudo systemctl enable --now myservice
复制代码
  1. # 安装systemd-cgtop
  2. rpm-ostree install systemd
  3. systemctl reboot
  4. # 运行systemd-cgtop
  5. systemd-cgtop
  6. # 按内存使用排序
  7. systemd-cgtop -m
  8. # 按CPU使用排序
  9. systemd-cgtop -c
复制代码

容器编排和管理
  1. # 运行一个简单的容器
  2. podman run -it --rm fedora:35 /bin/bash
  3. # 在后台运行容器
  4. podman run -d --name mycontainer fedora:35 sleep 1000
  5. # 查看运行中的容器
  6. podman ps
  7. # 查看所有容器
  8. podman ps -a
  9. # 停止容器
  10. podman stop mycontainer
  11. # 删除容器
  12. podman rm mycontainer
  13. # 构建自定义镜像
  14. cat > Dockerfile <<EOF
  15. FROM fedora:35
  16. RUN dnf install -y httpd
  17. CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
  18. EOF
  19. podman build -t myhttpd .
  20. # 运行自定义镜像
  21. podman run -d -p 8080:80 myhttpd
复制代码
  1. # 安装Podman Compose
  2. pip3 install podman-compose
  3. # 创建docker-compose.yml文件
  4. cat > docker-compose.yml <<EOF
  5. version: '3'
  6. services:
  7.   web:
  8.     image: nginx:latest
  9.     ports:
  10.       - "8080:80"
  11.   db:
  12.     image: postgres:13
  13.     environment:
  14.       POSTGRES_PASSWORD: example
  15. EOF
  16. # 启动服务
  17. podman-compose up -d
  18. # 查看服务状态
  19. podman-compose ps
  20. # 停止服务
  21. podman-compose down
复制代码

故障排除和常见问题解决

系统启动问题

如果系统无法正常启动,可能会进入紧急模式。在这种情况下,可以尝试以下步骤:
  1. # 查看系统日志
  2. journalctl -xb
  3. # 检查文件系统
  4. sudo fsck /dev/sda1
  5. # 修复文件系统
  6. sudo fsck -y /dev/sda1
  7. # 如果需要,重置root密码
  8. # 在启动菜单中选择要编辑的条目,按e
  9. # 找到以linux开头的一行,将ro改为rw init=/sysroot/bin/sh
  10. # 按Ctrl+X启动
  11. # 然后执行:
  12. chroot /sysroot
  13. passwd root
  14. touch /.autorelabel
  15. exit
  16. reboot
复制代码

如果系统更新后出现问题,可以使用rpm-ostree回滚到之前的版本:
  1. # 查看可用的部署
  2. rpm-ostree status
  3. # 回滚到上一个部署
  4. rpm-ostree rollback
  5. # 重启系统
  6. systemctl reboot
复制代码

软件包和应用程序问题
  1. # 检查软件包完整性
  2. sudo rpm -Va
  3. # 重新安装损坏的软件包
  4. sudo rpm --reinstall <package_name>
  5. # 如果使用rpm-ostree,可以尝试重新部署
  6. rpm-ostree cleanup -p
  7. rpm-ostree update
复制代码
  1. # 重新安装Flatpak应用程序
  2. flatpak uninstall <app_id>
  3. flatpak install flathub <app_id>
  4. # 清理Flatpak运行时
  5. flatpak uninstall --unused
  6. # 重置Flatpak应用程序权限
  7. flatpak override --reset <app_id>
复制代码

网络连接问题
  1. # 检查网络接口
  2. ip a
  3. # 检查路由表
  4. ip r
  5. # 测试网络连接
  6. ping 8.8.8.8
  7. # 测试DNS解析
  8. nslookup google.com
  9. # 查看网络连接状态
  10. nmcli connection show
  11. # 重启网络服务
  12. sudo systemctl restart NetworkManager
复制代码
  1. # 备份当前网络配置
  2. sudo cp -r /etc/NetworkManager /etc/NetworkManager.backup
  3. # 重置网络配置
  4. sudo nmcli connection reload
  5. sudo systemctl restart NetworkManager
  6. # 如果需要,重新创建网络连接
  7. sudo nmcli connection add type ethernet ifname enp0s3 con-name my-connection
  8. sudo nmcli connection modify my-connection ipv4.method auto
  9. sudo nmcli connection up my-connection
复制代码

性能问题
  1. # 查看CPU使用情况
  2. top
  3. htop
  4. # 查看内存使用情况
  5. free -h
  6. # 查看磁盘使用情况
  7. df -h
  8. # 查看磁盘I/O
  9. iostat
  10. # 查看网络使用情况
  11. iftop
  12. nethogs
复制代码
  1. # 清理系统日志
  2. sudo journalctl --vacuum-size=100M
  3. # 清理软件包缓存
  4. sudo dnf clean all
  5. # 禁用不必要的服务
  6. sudo systemctl disable bluetooth.service
  7. sudo systemctl stop bluetooth.service
  8. # 调整swappiness
  9. echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swappiness.conf
  10. sudo sysctl -p /etc/sysctl.d/99-swappiness.conf
复制代码

最佳实践和建议

系统维护最佳实践
  1. # 创建自动更新脚本
  2. cat > update-system.sh <<EOF
  3. #!/bin/bash
  4. # 检查更新
  5. rpm-ostree update --check
  6. if [ $? -eq 0 ]; then
  7.     echo "Updates available. Applying updates..."
  8.     rpm-ostree update
  9.     echo "Updates applied. Rebooting system..."
  10.     systemctl reboot
  11. else
  12.     echo "No updates available."
  13. fi
  14. EOF
  15. chmod +x update-system.sh
  16. # 创建systemd定时器
  17. sudo tee /etc/systemd/system/update-system.service > /dev/null <<EOF
  18. [Unit]
  19. Description=Update Fedora Silverblue System
  20. [Service]
  21. Type=oneshot
  22. ExecStart=/home/$(whoami)/update-system.sh
  23. EOF
  24. sudo tee /etc/systemd/system/update-system.timer > /dev/null <<EOF
  25. [Unit]
  26. Description=Run update-system.service weekly
  27. Requires=update-system.service
  28. [Timer]
  29. OnCalendar=weekly
  30. Persistent=true
  31. [Install]
  32. WantedBy=timers.target
  33. EOF
  34. sudo systemctl enable --now update-system.timer
复制代码
  1. # 创建系统清理脚本
  2. cat > cleanup-system.sh <<EOF
  3. #!/bin/bash
  4. # 清理旧的rpm-ostree部署
  5. rpm-ostree cleanup -p
  6. # 清理Flatpak运行时
  7. flatpak uninstall --unused
  8. # 清理系统日志
  9. sudo journalctl --vacuum-size=100M
  10. # 清理临时文件
  11. sudo rm -rf /tmp/*
  12. # 清理用户缓存
  13. rm -rf ~/.cache/thumbnails/*
  14. EOF
  15. chmod +x cleanup-system.sh
  16. # 创建systemd定时器
  17. sudo tee /etc/systemd/system/cleanup-system.service > /dev/null <<EOF
  18. [Unit]
  19. Description=Cleanup Fedora Silverblue System
  20. [Service]
  21. Type=oneshot
  22. ExecStart=/home/$(whoami)/cleanup-system.sh
  23. EOF
  24. sudo tee /etc/systemd/system/cleanup-system.timer > /dev/null <<EOF
  25. [Unit]
  26. Description=Run cleanup-system.service monthly
  27. Requires=cleanup-system.service
  28. [Timer]
  29. OnCalendar=monthly
  30. Persistent=true
  31. [Install]
  32. WantedBy=timers.target
  33. EOF
  34. sudo systemctl enable --now cleanup-system.timer
复制代码

开发环境最佳实践
  1. # 为每个项目创建单独的Toolbox容器
  2. toolbox create --container project1-env
  3. # 进入项目特定的容器
  4. toolbox enter --container project1-env
  5. # 在容器内安装项目特定的依赖
  6. sudo dnf install python3 python3-pip nodejs npm
  7. # 退出容器
  8. exit
复制代码
  1. # 安装Git
  2. rpm-ostree install git
  3. systemctl reboot
  4. # 配置Git
  5. git config --global user.name "Your Name"
  6. git config --global user.email "your.email@example.com"
  7. # 创建SSH密钥
  8. ssh-keygen -t ed25519 -C "your.email@example.com"
  9. # 启动SSH代理
  10. eval "$(ssh-agent -s)"
  11. # 添加SSH密钥到代理
  12. ssh-add ~/.ssh/id_ed25519
  13. # 显示公钥(添加到GitHub/GitLab等)
  14. cat ~/.ssh/id_ed25519.pub
复制代码

安全最佳实践
  1. # 创建新的用户账户
  2. sudo useradd -m -s /bin/bash newuser
  3. # 设置用户密码
  4. sudo passwd newuser
  5. # 将用户添加到wheel组(sudo权限)
  6. sudo usermod -aG wheel newuser
  7. # 禁用root登录
  8. sudo passwd -l root
  9. # 配置sudo策略
  10. sudo visudo
复制代码
  1. # 启用防火墙
  2. sudo systemctl enable --now firewalld
  3. # 查看默认区域
  4. sudo firewall-cmd --get-default-zone
  5. # 设置默认区域
  6. sudo firewall-cmd --set-default-zone=public
  7. # 开放必要端口
  8. sudo firewall-cmd --permanent --add-service=ssh
  9. sudo firewall-cmd --permanent --add-service=http
  10. sudo firewall-cmd --permanent --add-service=https
  11. # 重新加载防火墙配置
  12. sudo firewall-cmd --reload
  13. # 查看开放的端口和服务
  14. sudo firewall-cmd --list-all
复制代码
  1. # 安装auditd
  2. rpm-ostree install audit
  3. systemctl reboot
  4. # 启用auditd
  5. sudo systemctl enable --now auditd
  6. # 配置审计规则
  7. sudo tee /etc/audit/rules.d/audit.rules > /dev/null <<EOF
  8. # 删除现有规则
  9. -D
  10. # 设置缓冲区大小
  11. -b 8192
  12. # 监控文件访问
  13. -w /etc/passwd -p wa -k identity
  14. -w /etc/group -p wa -k identity
  15. -w /etc/shadow -p wa -k identity
  16. # 监控sudo使用
  17. -w /var/log/sudo.log -p wa -k sudo
  18. # 监控系统调用
  19. -a always,exit -F arch=b64 -S chmod -F auid>=1000 -F auid!=-1 -k perm_mod
  20. -a always,exit -F arch=b64 -S chown -F auid>=1000 -F auid!=-1 -k perm_mod
  21. # 使规则持久化
  22. -e 1
  23. EOF
  24. # 重新加载审计规则
  25. sudo augenrules --load
复制代码

结论

Fedora Silverblue代表了一种现代化的操作系统设计理念,通过其不可变的基础设施和原子更新机制,为开发者和系统管理员提供了一个稳定、安全和高效的计算环境。本文详细介绍了Fedora Silverblue的各个方面,从基础安装到高级配置,涵盖了系统管理、开发环境设置、安全加固等多个领域。

通过采用Fedora Silverblue,用户可以享受到更少的系统问题、更简单的维护流程和更高的生产效率。无论是作为开发工作站还是服务器环境,Fedora Silverblue都能提供卓越的体验和性能。

随着技术的不断发展,Fedora Silverblue和类似的不可变操作系统将会变得越来越重要。掌握这些工具和技术,将有助于开发者和系统管理员更好地应对未来的挑战,构建更加可靠和安全的IT基础设施。

希望本文能够帮助读者深入了解Fedora Silverblue,并在实际工作中充分利用其强大功能。通过不断学习和实践,我们可以在这一创新的操作系统平台上构建出更加高效和可靠的解决方案。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则