简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索
AI 风月

活动公告

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

深入探索Fedora Silverblue系统管理命令提升不可变操作系统管理效率从基础命令到高级应用技巧全面提高您的系统管理能力

3万

主题

586

科技点

3万

积分

白金月票

碾压王

积分
32701

立华奏

发表于 2025-9-2 11:30:00 | 显示全部楼层 |阅读模式

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

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

x
1. Fedora Silverblue与不可变操作系统概述

Fedora Silverblue是Fedora项目的一个创新变种,它采用了不可变操作系统(Immutable OS)的设计理念。不可变操作系统的核心思想是系统的基本文件系统是只读的,用户不能直接修改它。这种设计提供了更高的系统稳定性和安全性,因为系统文件不会被意外或恶意修改。

在Fedora Silverblue中,系统分为两个主要部分:

1. 基础系统:这是一个只读的OSTree仓库,包含了操作系统核心组件
2. 用户数据:存储在/home目录中,以及通过包层(packages layers)和容器(toolbox)安装的软件

Fedora Silverblue使用rpm-ostree来管理系统,它结合了传统的RPM包管理和OSTree的版本控制能力。用户可以通过rpm-ostree安装额外的软件包,这些包会以”层”的形式叠加在基础系统之上,而不影响基础系统的完整性。

这种架构带来了几个关键优势:

• 系统稳定性:基础系统不会被意外修改,减少了系统崩溃的风险
• 安全性:恶意软件难以修改系统文件
• 原子更新:系统更新是原子性的,要么完全成功,要么完全失败
• 轻松回滚:如果更新后出现问题,可以轻松回滚到之前的工作状态

2. 基础系统管理命令

在Fedora Silverblue中,许多传统的系统管理命令仍然可用,但有一些特殊的变化和注意事项。

2.1 查看系统信息
  1. # 查看系统版本和信息
  2. hostnamectl
  3. # 查看内核版本
  4. uname -a
  5. # 查看Silverblue版本和部署信息
  6. rpm-ostree status
复制代码

rpm-ostree status是一个特别重要的命令,它显示当前系统的部署信息,包括:

• 当前部署的版本和提交ID(commit ID)
• 是否有待处理的更新
• 系统上安装的额外包层

示例输出:
  1. State: idle
  2. Deployments:
  3. ● fedora:fedora/36/x86_64/silverblue
  4.                    Version: 36.20220721.0 (2022-07-21T01:22:43Z)
  5.                 BaseCommit: 1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890
  6.               GPGSignature: Valid signature by 860E19B0AFA800A1751881A6F55E7430F5282EE4
  7.            LayeredPackages: vim htop neofetch
复制代码

2.2 文件系统操作

由于Fedora Silverblue的根文件系统是只读的,一些传统的文件系统操作需要调整:
  1. # 查看磁盘使用情况
  2. df -h
  3. # 查看目录大小
  4. du -sh /path/to/directory
  5. # 创建符号链接(在可写位置)
  6. ln -s /target /link-name
  7. # 查看文件系统类型
  8. lsblk -f
复制代码

注意:在根文件系统(/)下创建或修改文件需要特殊权限或方法,而在/home和/var等目录下则可以正常操作。

2.3 系统服务管理

systemd命令在Fedora Silverblue中的使用与传统Fedora相同:
  1. # 查看服务状态
  2. systemctl status sshd
  3. # 启动服务
  4. sudo systemctl start sshd
  5. # 停止服务
  6. sudo systemctl stop sshd
  7. # 启用服务开机自启
  8. sudo systemctl enable sshd
  9. # 禁用服务开机自启
  10. sudo systemctl disable sshd
  11. # 查看所有运行中的服务
  12. systemctl list-units --type=service --state=running
复制代码

2.4 用户和权限管理

用户和权限管理的命令也保持不变:
  1. # 创建新用户
  2. sudo useradd -m newuser
  3. # 设置用户密码
  4. sudo passwd newuser
  5. # 将用户添加到组
  6. sudo usermod -aG wheel newuser
  7. # 切换用户
  8. su - username
  9. # 使用sudo执行命令
  10. sudo command
  11. # 查看用户组信息
  12. groups username
复制代码

3. 包管理和软件安装

在Fedora Silverblue中,包管理与传统Fedora有所不同。主要通过rpm-ostree和flatpak来进行。

3.1 使用rpm-ostree管理包
  1. # 搜索可用包
  2. rpm-ostree search package-name
  3. # 安装包(作为层添加到系统中)
  4. rpm-ostree install package-name
  5. # 卸载包
  6. rpm-ostree uninstall package-name
  7. # 查看已安装的额外包
  8. rpm-ostree status --jsonpath='deployments[0].packages'
  9. # 查看所有可用包
  10. rpm-ostree repo list
  11. # 安装多个包
  12. rpm-ostree install package1 package2 package3
  13. # 从文件安装多个包
  14. rpm-ostree install $(cat packages.txt)
复制代码

使用rpm-ostree安装的包会在下次重启后生效,因为它们会创建一个新的系统部署。例如,安装vim和htop:
  1. rpm-ostree install vim htop
复制代码

安装完成后,系统会提示需要重启以应用更改:
  1. Updating...
  2. 100% |█████████████████████████████| 102.4 MB 00:01
  3. Staging deployment...
  4. Done.
复制代码

重启后,这些包将作为层添加到系统中。

3.2 使用Flatpak管理应用

Flatpak是Fedora Silverblue中管理桌面应用程序的主要方式:
  1. # 安装Flatpak应用
  2. flatpak install flathub app-id
  3. # 运行Flatpak应用
  4. flatpak run app-id
  5. # 列出已安装的Flatpak应用
  6. flatpak list
  7. # 更新Flatpak应用
  8. flatpak update
  9. # 删除Flatpak应用
  10. flatpak uninstall app-id
  11. # 查看Flatpak应用信息
  12. flatpak info app-id
  13. # 搜索Flatpak应用
  14. flatpak search app-name
复制代码

例如,安装Firefox浏览器:
  1. flatpak install flathub org.mozilla.firefox
复制代码

3.3 使用DNF(有限支持)

虽然Silverblue主要使用rpm-ostree,但DNF仍然可用,主要用于查询包信息:
  1. # 搜索包
  2. dnf search package-name
  3. # 查看包信息
  4. dnf info package-name
  5. # 查看包的依赖关系
  6. dnf repoquery --requires package-name
  7. # 查看包的文件列表
  8. dnf repoquery -l package-name
复制代码

4. 系统更新和回滚

Fedora Silverblue的更新机制与传统Linux发行版不同,它采用原子更新和版本控制。

4.1 系统更新
  1. # 检查可用更新
  2. rpm-ostree update --check
  3. # 执行系统更新
  4. rpm-ostree update
  5. # 查看更新历史
  6. rpm-ostree history
  7. # 仅下载更新但不应用
  8. rpm-ostree upgrade --download-only
复制代码

更新过程会下载一个新的系统镜像,并在下次重启时应用。如果更新过程中出现问题,系统会回滚到之前的状态,确保系统始终处于可用状态。

示例更新过程:
  1. $ rpm-ostree update
  2. Checking out tree 1a2b3c4... done
  3. Enabled rpm-md repositories: fedora updates updates-archive
  4. Updating metadata for 'fedora'... done
  5. Updating metadata for 'updates'... done
  6. rpm-md repo 'fedora' (cached); generated: 2022-08-01T04:15:15Z
  7. rpm-md repo 'updates' (cached); generated: 2022-08-01T15:03:12Z
  8. Importing rpm-md... done
  9. Resolving dependencies... done
  10. Will download: 3 packages (12.4 MB)
  11. Downloading from 'updates'... done
  12. Importing packages... done
  13. Applying 3 overlays... done
  14. Writing rpmdb... done
  15. Writing OSTree commit... done
  16. Staging deployment... done
  17. Freed: 7.9 MB (pkgcache branches: 0)
  18. Upgraded:
  19.   kernel-5.18.16-200.fc36.x86_64
  20.   systemd-250.7-1.fc36.x86_64
  21.   systemd-libs-250.7-1.fc36.x86_64
  22. Run "systemctl reboot" to start a reboot
复制代码

4.2 系统回滚
  1. # 查看可用的部署版本
  2. rpm-ostree status
  3. # 回滚到上一个版本
  4. rpm-ostree rollback
  5. # 回滚到特定版本
  6. sudo rpm-ostree deploy commit-hash
  7. # 查看部署之间的差异
  8. rpm-ostree diff
复制代码

系统回滚是Fedora Silverblue的一个重要特性,它允许用户在系统更新后遇到问题时轻松恢复到之前的工作状态。

示例回滚过程:
  1. $ rpm-ostree status
  2. State: idle
  3. Deployments:
  4. ● fedora:fedora/36/x86_64/silverblue
  5.                    Version: 36.20220802.0 (2022-08-02T01:22:43Z)
  6.                 BaseCommit: 1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890
  7.               GPGSignature: Valid signature by 860E19B0AFA800A1751881A6F55E7430F5282EE4
  8.            LayeredPackages: vim htop neofetch
  9.   fedora:fedora/36/x86_64/silverblue
  10.                    Version: 36.20220721.0 (2022-07-21T01:22:43Z)
  11.                 BaseCommit: 2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890a
  12.               GPGSignature: Valid signature by 860E19B0AFA800A1751881A6F55E7430F5282EE4
  13.            LayeredPackages: vim htop
  14. $ rpm-ostree rollback
  15. Moving 'fedora:fedora/36/x86_64/silverblue' (36.20220721.0) to be first deployment
  16. Run "systemctl reboot" to start a reboot
复制代码

4.3 自动更新设置
  1. # 启用自动更新
  2. rpm-ostree automatic.timer --enable
  3. # 禁用自动更新
  4. rpm-ostree automatic.timer --disable
  5. # 查看自动更新状态
  6. systemctl status rpm-ostree-automatic.timer
  7. # 配置自动更新策略
  8. sudo nano /etc/rpm-ostreed.conf
复制代码

在/etc/rpm-ostreed.conf中,可以配置自动更新的行为,例如:
  1. # 自动下载更新
  2. AutomaticUpdatePolicy=stage
  3. # 自动应用更新(需要重启)
  4. # AutomaticUpdatePolicy=check
复制代码

5. 层(Layer)的管理

在Fedora Silverblue中,层(Layer)是叠加在基础系统之上的软件包集合,它们允许用户自定义系统而不影响基础系统的完整性。

5.1 查看和管理层
  1. # 查看当前系统中的层
  2. rpm-ostree status
  3. # 添加新层(安装包)
  4. rpm-ostree install package-name
  5. # 移除层(卸载包)
  6. rpm-ostree uninstall package-name
  7. # 查看特定层的详细信息
  8. rpm-ostree db diff
  9. # 查看对基础系统的修改
  10. rpm-ostree diff
复制代码

5.2 创建自定义层
  1. # 创建一个包含多个包的自定义层
  2. rpm-ostree install package1 package2 package3
  3. # 从文件安装多个包
  4. rpm-ostree install $(cat packages.txt)
  5. # 安装本地RPM包
  6. rpm-ostree install /path/to/local.rpm
复制代码

5.3 重置系统到基础状态
  1. # 移除所有自定义层,回到基础系统状态
  2. rpm-ostree reset
  3. # 查看将移除的包
  4. rpm-ostree reset --preview
复制代码

示例层的操作:
  1. # 安装一些开发工具
  2. rpm-ostree install git python3 nodejs
  3. # 查看状态
  4. rpm-ostree status
  5. State: idle
  6. Deployments:
  7. ● fedora:fedora/36/x86_64/silverblue
  8.                    Version: 36.20220802.0 (2022-08-02T01:22:43Z)
  9.                 BaseCommit: 1a2b3c4d5e6f7890abcdef1234567890abcdef1234567890abcdef1234567890
  10.               GPGSignature: Valid signature by 860E19B0AFA800A1751881A6F55E7430F5282EE4
  11.            LayeredPackages: git nodejs python3
  12. # 移除一个包
  13. rpm-ostree uninstall nodejs
  14. # 重置到基础状态
  15. rpm-ostree reset
复制代码

6. 容器和工具箱(Toolbox)的使用

Toolbox是Fedora Silverblue中用于创建和管理容器的工具,它允许用户在传统Fedora环境中进行开发和系统管理任务。

6.1 创建和管理工具箱容器
  1. # 创建工具箱容器
  2. toolbox create
  3. # 创建特定版本的Fedora工具箱
  4. toolbox create --distro fedora --release f36
  5. # 列出所有工具箱容器
  6. toolbox list
  7. # 进入工具箱容器
  8. toolbox enter
  9. # 进入特定的工具箱容器
  10. toolbox enter container-name
  11. # 删除工具箱容器
  12. toolbox rm container-name
  13. # 重命名工具箱容器
  14. toolbox rename old-name new-name
复制代码

6.2 在工具箱中工作
  1. # 在工具箱中安装软件包
  2. sudo dnf install package-name
  3. # 在工具箱中使用传统系统管理工具
  4. sudo dnf update
  5. sudo systemctl --user start service
  6. # 在工具箱中开发应用
  7. git clone https://github.com/user/repo.git
  8. cd repo
  9. npm install
  10. npm start
复制代码

6.3 工具箱高级用法
  1. # 从Dockerfile创建工具箱
  2. toolbox build --file Dockerfile
  3. # 在工具箱中运行特定命令
  4. toolbox run -- container-name command
  5. # 将主机目录挂载到工具箱
  6. toolbox enter --bind /path/on/host:/path/in/container
  7. # 创建特定映像的工具箱
  8. toolbox create --image fedora-toolbox:36
复制代码

示例工具箱使用场景:
  1. # 创建一个新的工具箱
  2. toolbox create --container dev-env
  3. # 进入工具箱
  4. toolbox enter dev-env
  5. # 在工具箱中安装开发工具
  6. sudo dnf install python3-pip nodejs npm
  7. # 克隆代码仓库
  8. git clone https://github.com/myuser/myproject.git
  9. cd myproject
  10. # 安装依赖
  11. npm install
  12. pip install -r requirements.txt
  13. # 运行应用
  14. npm start
  15. # 退出工具箱
  16. exit
  17. # 在主机上运行工具箱中的命令
  18. toolbox run --container dev-env python --version
复制代码

7. 系统自定义和配置

虽然Fedora Silverblue的根文件系统是只读的,但仍有一些方法可以自定义和配置系统。

7.1 /etc目录的配置
  1. # 编辑/etc中的配置文件
  2. sudo nano /etc/config-file
  3. # 查看对/etc的修改
  4. sudo rpm-ostree diff
复制代码

对/etc目录的修改会保留在系统更新中,但建议使用/etc中的.d目录或配置片段,而不是直接修改主配置文件。

示例配置自定义:
  1. # 创建自定义系统配置
  2. sudo mkdir /etc/systemd/system/sshd.service.d
  3. sudo nano /etc/systemd/system/sshd.service.d/custom.conf
  4. # 添加自定义配置
  5. [Service]
  6. Environment="OPTIONS=-p 2222"
  7. # 重新加载systemd配置
  8. sudo systemctl daemon-reload
  9. sudo systemctl restart sshd
复制代码

7.2 使用/etc和/opt目录
  1. # 在/etc中创建自定义配置
  2. sudo mkdir /etc/myapp
  3. sudo nano /etc/myapp/config.conf
  4. # 在/opt中安装自定义软件
  5. sudo mkdir /opt/myapp
  6. sudo cp -r myapp-files /opt/myapp/
  7. # 创建符号链接到可执行文件
  8. sudo ln -s /opt/myapp/bin/myapp /usr/local/bin/myapp
复制代码

7.3 使用系统副本(System Copy)
  1. # 创建系统副本用于自定义
  2. sudo ostree admin unlock
  3. # 完成自定义后重新锁定系统
  4. sudo ostree admin lock
复制代码

注意:解锁系统会使其变为可变状态,这会破坏不可变操作系统的优势,应谨慎使用。

7.4 使用Drop-in文件
  1. # 为系统服务创建drop-in配置
  2. sudo systemctl edit servicename
  3. # 这将创建/etc/systemd/system/servicename.service.d/override.conf
复制代码

示例使用drop-in文件自定义Nginx服务:
  1. # 创建Nginx服务的自定义配置
  2. sudo systemctl edit nginx
  3. # 添加自定义配置
  4. [Service]
  5. Environment="NGINX_CONF=/etc/nginx/nginx-custom.conf"
  6. LimitNOFILE=10000
  7. # 重新加载并重启服务
  8. sudo systemctl daemon-reload
  9. sudo systemctl restart nginx
复制代码

8. 故障排除和问题解决

在Fedora Silverblue中,故障排除有一些特殊的方法和工具。

8.1 查看系统日志
  1. # 查看系统日志
  2. journalctl
  3. # 查看特定服务的日志
  4. journalctl -u servicename
  5. # 查看内核日志
  6. journalctl -k
  7. # 查看自启动以来的日志
  8. journalctl -b
  9. # 查看特定时间段的日志
  10. journalctl --since "2022-08-01" --until "2022-08-02"
复制代码

8.2 进入紧急模式
  1. # 在启动时进入紧急模式
  2. # 重启系统,在GRUB菜单中选择要启动的版本,按"e"编辑启动选项
  3. # 在linux行末尾添加"systemd.unit=rescue.target",然后按Ctrl+X启动
复制代码

8.3 使用Live USB进行修复
  1. # 从Live USB启动
  2. # 挂载系统分区
  3. sudo mount /dev/sdaX /mnt
  4. # 使用chroot进入系统
  5. sudo ostree admin os-init fedora-silverblue
  6. sudo ostree admin deploy --os=fedora-silverblue --retain commit-hash
复制代码

8.4 检查和修复文件系统
  1. # 检查文件系统
  2. sudo fsck /dev/sdaX
  3. # 修复文件系统
  4. sudo fsck -y /dev/sdaX
复制代码

8.5 恢复损坏的系统
  1. # 查看可用的部署
  2. rpm-ostree status
  3. # 部署一个已知良好的版本
  4. sudo rpm-ostree deploy commit-hash
复制代码

示例故障排除场景:
  1. # 系统无法启动,进入紧急模式
  2. # 查看系统日志
  3. journalctl -b -1 -p err
  4. # 发现是某个服务导致的问题
  5. # 禁用该服务
  6. sudo systemctl disable problematic-service
  7. # 重启系统
  8. reboot
  9. # 如果问题仍然存在,尝试回滚到上一个版本
  10. rpm-ostree rollback
  11. reboot
复制代码

9. 高级应用技巧和最佳实践

在Fedora Silverblue中,有一些高级技巧和最佳实践可以帮助用户更有效地管理系统。

9.1 使用脚本自动化常见任务
  1. #!/bin/bash
  2. # update-system.sh - 自动更新系统并处理结果
  3. echo "检查系统更新..."
  4. rpm-ostree update --check
  5. if [ $? -eq 0 ]; then
  6.     echo "发现可用更新,正在更新..."
  7.     rpm-ostree update
  8.     if [ $? -eq 0 ]; then
  9.         echo "更新成功,系统将在下次重启时应用更改。"
  10.         echo "是否现在重启?(y/n)"
  11.         read -r response
  12.         if [ "$response" = "y" ]; then
  13.             reboot
  14.         fi
  15.     else
  16.         echo "更新失败,请检查错误信息。"
  17.     fi
  18. else
  19.     echo "没有可用更新。"
  20. fi
复制代码

9.2 使用OSTree进行高级管理
  1. # 查看OSTree仓库
  2. ostree refs
  3. # 查看特定提交的详细信息
  4. ostree show commit-hash
  5. # 创建本地分支
  6. ostree refs --create mybranch commit-hash
  7. # 导出系统配置
  8. ostree admin config-diff
  9. # 查看提交历史
  10. ostree log fedora/36/x86_64/silverblue
复制代码

9.3 使用Podman进行容器管理
  1. # 拉取容器镜像
  2. podman pull image-name
  3. # 运行容器
  4. podman run -it image-name
  5. # 列出正在运行的容器
  6. podman ps
  7. # 列出所有容器
  8. podman ps -a
  9. # 删除容器
  10. podman rm container-id
  11. # 构建容器镜像
  12. podman build -t myimage .
  13. # 推送容器镜像
  14. podman push myimage docker://registry.example.com/myimage
复制代码

9.4 使用Kubernetes在Silverblue上
  1. # 安装Kubernetes工具
  2. rpm-ostree install kubectl
  3. # 使用Minikube创建本地Kubernetes集群
  4. curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
  5. sudo install minikube-linux-amd64 /usr/local/bin/minikube
  6. minikube start
  7. # 部署应用
  8. kubectl create deployment nginx --image=nginx
  9. kubectl expose deployment nginx --port=80 --type=NodePort
复制代码

9.5 系统性能优化
  1. # 查看系统资源使用情况
  2. top
  3. htop
  4. free -h
  5. df -h
  6. # 查看系统启动时间
  7. systemd-analyze
  8. # 查看启动过程中的瓶颈
  9. systemd-analyze blame
  10. # 优化系统服务
  11. sudo systemctl disable unnecessary-service
  12. # 查看系统资源使用情况
  13. gnome-system-monitor
复制代码

9.6 安全加固
  1. # 配置防火墙
  2. sudo firewall-cmd --list-all
  3. sudo firewall-cmd --add-service=service-name --permanent
  4. sudo firewall-cmd --reload
  5. # 查看开放端口
  6. sudo ss -tulpn
  7. # 配置SELinux
  8. sudo getenforce
  9. sudo setenforce Enforcing
  10. # 查看SELinux上下文
  11. ls -Z /path/to/file
  12. # 修改SELinux上下文
  13. sudo chcon -t samba_share_t /path/to/directory
复制代码

9.7 创建自定义系统映像
  1. # 安装必要的工具
  2. rpm-ostree install rpm-ostree-compose
  3. # 创建定义文件
  4. mkdir -p ~/fedora-silverblue-custom
  5. cd ~/fedora-silverblue-custom
  6. cat > fedora-silverblue-custom.yaml << EOF
  7. ref: fedora/36/x86_64/silverblue-custom
  8. repos:
  9.   - fedora
  10.   - updates
  11. packages:
  12.   - vim
  13.   - htop
  14.   - neofetch
  15. EOF
  16. # 构建自定义映像
  17. rpm-ostree-compose tree --repo=/tmp/repo fedora-silverblue-custom.yaml
复制代码

10. 总结与展望

Fedora Silverblue作为一个不可变操作系统,提供了更高的系统稳定性和安全性。通过掌握其系统管理命令,用户可以有效地管理这个独特的操作系统。

从基础的系统信息查看、文件系统操作、服务管理,到包管理、系统更新和回滚,再到层的管理、工具箱的使用,以及系统自定义和配置,Fedora Silverblue提供了一套完整的工具链来满足用户的系统管理需求。

随着不可变操作系统理念的普及,Fedora Silverblue和相关技术将继续发展,为用户提供更加稳定、安全和高效的计算体验。通过掌握这些系统管理命令和技巧,用户可以充分利用Fedora Silverblue的优势,提高系统管理效率。

未来,我们可以期待看到更多的工具和功能被添加到Fedora Silverblue中,使其更加易用和强大。同时,随着社区的不断贡献,Fedora Silverblue的生态系统也将不断丰富,为用户提供更多的选择和可能性。

无论是系统管理员、开发人员还是普通用户,都可以从Fedora Silverblue的不可变设计理念中受益,享受更加稳定、安全和高效的计算体验。通过深入理解和掌握Fedora Silverblue的系统管理命令,用户可以充分发挥这个创新操作系统的潜力,提高工作效率,降低系统维护成本。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

手机版|联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.

>