[步骤] Linux 救援模式软件的安装

步骤一:挂载官方镜像

(步骤略)

步骤二:登录拯救模式

2.1 选择通过光盘启动

(步骤略)

2.2 进入拯救模式

(步骤略)

2.3 登录拯救模式

rescue login:root

步骤三:在救援模式确定系统的根 “/” 目录分区

(步骤略)


补充:
1) 物理分区可以使用 lsblk 命令、fdisk -l 或 cat /proc/partitions 命令辅助确定
2) 逻辑分区还可以可以使用 pvs 命令、lvs 命令或 lvdisplay 命令辅助确定

步骤四:在救援模式将系统的分区挂载到救援模式的 /mnt 目录

4.1 在救援模式将系统的根 “/” 分区挂载到救援模式的 /mnt 目录

tty1:rescue:~ # mount <root spartition> /mnt


补充:
1) 如果是物理分区,系统的根 “/” 分区就在救援模式的 /dev/ 目录里,例如救援模式的 /dev/sda1
2) 如果是逻辑分区,Rocky Linux & RHEL 的系统根 “/” 分区就是救援模式里的 /dev/<volume group>/<logical volume> 例如救援模式里的 /dev/vg/lv,openSUSE & SUSE 的系统根 “/” 分区就是救援模式里的 /dev/mapper/<volume group>-<logical volume> 例如救援模式里的 /dev/mapper/vg-lv

4.2 在救援模式将救援模式的 /dev 目录关联到救援模式的 /mnt/dev 目录

tty1:rescue:~ # mount --rbind /dev /mnt/dev


补充:
1) 此时所有对救援模式的 /mnt/dev 目录的访问都会变成对救援模式的 /dev 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done

4.3 在救援模式将救援模式的 /proc 目录关联到救援模式的 /mnt/proc 目录

tty1:rescue:~ # mount --rbind /proc /mnt/proc


1) 补充:此时所有对救援模式的 /mnt/proc 目录的访问都会变成对救援模式的 /proc 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done

4.4 在救援模式将救援模式的 /sys 目录关联到救援模式的 /mnt/sys 目录

tty1:rescue:~ # mount --rbind /sys /mnt/sys


1) 补充:此时所有对救援模式的 /mnt/sys 目录的访问都会变成对救援模式的 /sys 目录的访问
2) 步骤 4.2、步骤 4.3 和步骤 4.4 也可以用以下命令代替:

tty1:rescue:~ # for i in proc sys dev; do mount --rbind /$i /mnt/$i ; done

4.5 在救援模式将救援模式的 /run 目录关联到救援模式的 /mnt/run 目录 (选做)

tty1:rescue:~ # mount --rbind /run /mnt/run

(补充:此时所有对救援模式的 /mnt/run 目录的访问都会变成对救援模式的 /run 目录的访问)

步骤五:将当前的根 “/” 目录从救援模式的根 “/” 目录切换到系统的根 “/” 目录

5.1 将当前的根 “/” 目录 “/” 从救援模式的根 “/” 目录切换到系统的根 “/” 目录

tty1:rescue:~ # chroot /mnt

(补充:这里以 /mnt 作为系统根 “/” 目录为例)

5.2 在系统模式挂载所有需要开机自动挂载的目录

bash-4.3# mount -a

5.3 在系统模式确认当前根 “/” 目录下的目录

bash-4.3# ls
bin boot dev home lib lib64 mnt opt proc root run sbin selinux srv sys tmp usr var

(补充:这里显示的是常见的 Linux 根 “/” 目录 下的目录)

步骤六:在系统模式安装软件

6.1 在系统模式挂载官方镜像

6.1.1 在系统模式创建用于挂载镜像的 /media 目录
bash-4.3# mkdir /media
6.1.2 在系统模式挂将官方镜像挂载到 /media 目录
bash-4.3# mount /dev/dvd /media

6.2 在系统模式安装 RPM 文件 (软件包)

6.2.1 在系统模式拷贝 RPM 文件 (软件包) 到当前目录
bash-4.3# cp /media/suse/x86_64/rpm-4.11.2-16.21.1.x86_64.rpm .

(补充:这里以拷贝 rpm-4.11.2-16.21.1.x86_64.rpm RPM 文件 (软件包) 为例)

6.2.2 在系统模式创建用于提取 rpm 文件 (软件包) 的 pkg 目录
bash-4.3# mkdir pkg
6.2.3 在系统模式进入 pkg 目录
bash-4.3# cd pkg
6.2.4 在系统模式提取 rpm 文件 (软件包) 里的子文件
bash-4.3# rpm2cpio ../rpm-4.11.2-16.21.1.x86_64.rpm | cpio -ivd

(补充:这里以提取 rpm-4.11.2-16.21.1.x86_64.rpm RPM 文件 (软件包) 为例)

6.2.5 在系统模式将提取的 RPM 文件 (软件包) 里的子文件拷贝到 /bin 目录
bash-4.3# cp bin/rpm /bin/

步骤七:重启系统

7.1 从当前系统的根 “/” 目录切换回救援模式的根 “/” 目录

bash-4.3# exit

7.2 重启系统

tty1:rescue:~ # reboot

参考文献:

https://www.suse.com/support/kb/doc/?id=000018770

[工具] Shell 显示系统常用信息

介绍

基本信息

作者:朱明宇
名称:显示系统常用信息
作用:显示系统常用信息

使用方法

1. 在此脚本的分割线内写入相应的内容
2. 给此脚本添加执行权限
3. 执行此脚本

脚本分割线里的变量

1. times=5 #显示系统常用信息的次数
2. sleeptime=0.3 #大部分行与行之间显示的间隔时间

注意

1. 需要安装 sysstat 软件
2. 执行此脚本的用户能够使用 sudo ip a s 命令
3. 执行此脚本的用户能够使用 sudo ss -ntulap 命令
4. 搭建了 KVM 虚拟化平台后执行此脚本的用户能够使用 sudo virsh list 命令后才能实现

脚本

#!/bin/bash

####################### Separator ########################
times=5
sleeptime=0.3
####################### Separator ########################

nowtime=1

while (( nowtime <= times))
do
        echo -e "Start Monitoring: \c"
	for i in {1..94}
	do
	        echo -e "#\c"
		sleep 0.01
        done
	echo

	sleep $sleeptime
        host=`hostname`
        echo -e "Name:\t\t\t\t\t\t\t \033[1m$host\033[0m"

        ip=`sudo ip a s | awk '/[1-2]?[0-9]{0,2}\.[1-2]?[0-9]{0,2}/&&!/127.0.0.1/{print $2}' | awk -F/ '{print $1}'`
	for iip in $(echo $ip)
        do
		sleep $sleeptime
                echo -e "IP Address:\t\t\t\t\t\t \033[1m$iip\033[0m"
        done

        sleep $sleeptime

        cpu=`top -bn 1 | awk -F',' '/^%Cpu/{print $4 }' | awk '{print $1}' | awk '{print 100-$1}'`
        echo -e "CPU Usage (Total):\t\t\t\t\t \033[1m$cpu%\033[0m"

        sleep $sleeptime

        mem=`free | grep Mem | awk '{print $3/$2 * 100.0}' | egrep -o "[1]?[0-9]{0,2}\.[0-9]"`
        echo -e "Memory Usage (Total):\t\t\t\t\t \033[1m$mem%\033[0m"

	directory=`df -h | grep -v run | grep -v boot | awk '$1~/\/dev/{print $6}'`
        for idirectory in `echo $directory`
        do
                sleep $sleeptime
                directoryusage=`df -h | grep -v run | grep -v boot | awk '$1~/\/dev/{print}' | grep $idirectory$ | awk '{print $5}'`
		if [ $idirectory == / -o $idirectory == /sda -o $idirectory == /sdb  ];then
                        echo -e "Directory Usage ($idirectory):\t\t\t\t\t \033[1m$directoryusage\033[0m"
	        else
                        echo -e "Directory Usage ($idirectory):\t\t\t\t \033[1m$directoryusage\033[0m"
		fi
        done

	sudo -l | grep 'virsh list' &> /dev/null
        if [ $? -eq 0 ];then
	        sleep $sleeptime
	        virtual=`sudo virsh list | egrep [0-9] | wc -l`
	        echo -e "Number of Virtual Machines (Total):\t\t\t \033[1m$virtual\033[0m"
        fi

        sleep $sleeptime

        user=`who | wc -l`
        echo -e "Number of User Logins (Total):\t\t\t\t \033[1m$user\033[0m"

        soft=`rpm -qa | wc -l`
        echo -e "Number of Softwares (Total):\t\t\t\t \033[1m$soft\033[0m"

        sleep $sleeptime

        port=`sudo ss -ntulap | wc -l`
        echo -e "Number of Open Ports (Total):\t\t\t\t \033[1m$port\033[0m"

        which sar &> /dev/null
        if [ $? -eq 0 ];then
                networkcard=`ifconfig | awk -F: '/flags/&&!/lo/{print $1}'`
                for inetworkcard in `echo $networkcard`
                do
                        networkread="`sar -n DEV 1 1 | grep $inetworkcard | awk '/[0-9][0-9]:[0-9][0-9]/{print $3/1000}'` m/s"
                        networkwrite="`sar -n DEV 1 1 | grep $inetworkcard | awk '/[0-9][0-9]:[0-9][0-9]/{print $4/1000}'` m/s"
			echo $inetworkcard | grep eth &> /dev/null
			if [ $?  -ne 0 ];then
	                echo -e "Network Card IO ($inetworkcard):\t\t\t\t \033[1m$networkread\033[0m (Read)\t\033[1m$networkwrite\033[0m (Write)"
		        else
	                echo -e "Network Card IO ($inetworkcard):\t\t\t\t\t \033[1m$networkread\033[0m (Read)\t\033[1m$networkwrite\033[0m (Write)"
			fi
                done
        fi

        which iostat &> /dev/null
        if [ $? -eq 0 ];then
	        disk=`iostat -d -k 1 1 | awk '!/^$/&&!/Device/&&!/Linux/{print $1}'`
                for idisk in `echo $disk`
	        do
			sleep $sleeptime
		        diskread="`iostat -d -k 1 1 | grep $idisk |  awk '{print $3/1000}'` m/s"
		        diskwrite="`iostat -d -k 1 1 | grep $idisk |  awk '{print $4/1000}'` m/s"
			echo $idisk | grep 'nvme' &> /dev/null
			if [ $? -eq 0 ];then
		                echo -e "Disk IO (/dev/$idisk):\t\t\t\t\t \033[1m$diskread\033[0m (Read)\t\033[1m$diskwrite\033[0m (Write)"
		        else
		                echo -e "Disk IO (/dev/$idisk):\t\t\t\t\t \033[1m$diskread\033[0m (Read)\t\033[1m$diskwrite\033[0m (Write)"
			fi
	        done

        fi

        echo -e "Complete Monitoring: \c"
        for i in {1..91}
        do
                echo -e "#\c"
                sleep 0.01
        done
        echo
        sleep $sleeptime

        let nowtime++
done

        echo -e "Terminal Monitoring: \c"
        for i in {1..91}
        do
                echo -e "#\c"
                sleep 0.01
        done

exit

[内容] Linux 图形桌面 (Fedora 版)

内容一:Xfce 图形桌面

1.1 Xfce 的安装方法

# dnf install @xfce-desktop-enviroment

或者:

# yum groupinstall "Xfce Desktop"

或者:

# dnf group install -y "Xfce Desktop"

1.2 Xfce 的简介

Fedora Xfce 定制版展示了 Xfce 桌面,Xfce 桌面追求快速和轻巧,同时用户界面友好并有精彩的视觉盛宴。

1.3 Xfce 的展示和介绍网站

https://spins.fedoraproject.org/xfce/

内容二:LXDE 图形桌面

2.1 LXDE 的安装方法

# dnf install @lxde-desktop

或者:

# yum groupinstall "LXDE Desktop"

或者:

# dnf group install -y "LXDE Desktop"

2.2 LXDE 的简介

LXDE,全名为“轻量级 X11 桌面环境”,是一款极速轻快、实用而且低功耗的桌面环境。

2.3 LXDE 的展示和介绍网站

https://spins.fedoraproject.org/lxde/

内容三:LXQt 图形桌面

3.1 LXQt 的安装方法

# dnf install @lxqt-desktop

或者:

# yum groupinstall "LXQt Desktop"

或者:

# dnf group install -y "LXQt Desktop"

3.2 LXQt 的简介

Fedora LXQt 提供了一个轻量、完整的 LXQt 桌面环境。

3.3 LXQt 的展示和介绍网站

https://spins.fedoraproject.org/zh_Hans_CN/lxqt/

内容四:Cinnamon 图形桌面

4.1 Cinnamon 的安装方法

# dnf install @cinnamon-desktop

或者:

# yum groupinstall "Cinnamon Desktop"

或者:

# dnf group install -y "Cinnamon Desktop"

4.2 Cinnamon 的简介

Cinnamon 是一种提供高级创新功能并且尊重传统的用户习惯的Linux桌面环境。

4.3 Cinnamon 的展示和介绍网站

https://spins.fedoraproject.org/cinnamon/

内容五:MATE 图形桌面

5.1 MATE 的安装方法

# dnf install @mate-desktop

或者:

# yum groupinstall "MATE Desktop"

或者:

# dnf group install -y "MATE Desktop"

5.2 MATE 的简介

MATE Compiz 是一款轻量、强大,专为高效率和高性能打造的桌面环境。

5.3 MATE 的展示和介绍网站

https://spins.fedoraproject.org/mate-compiz/

内容六:Sugar 图形桌面

Sugar 的安装方法

# yum groupinstall "Sugar Desktop Environment"

或者:

# dnf group install -y "Sugar Desktop Environment"

内容七:Deepin 图形桌面

Deepin 的安装方法

# yum groupinstall "Deepin Desktop"

或者:

# dnf group install -y "Deepin Desktop"

内容八:i3 图形桌面

8.1 i3 的安装方法

# yum groupinstall "i3 desktop"

或者:

# dnf group install -y "i3 desktop"

8.2 i3 的简介

Fedora i3 定制版提供了流行的 i3 平铺窗口管理器。其使得 i3 对于那些不想用鼠标、触摸板,或是其他指点设备的无论是新手还是高级用户都易于访问且更具吸引力。

8.3 i3 的展示和介绍网站

https://spins.fedoraproject.org/i3/

内容九:Basic 图形桌面

Basic 的安装方法

# yum groupinstall "Basic Desktop"

或者:

# dnf group install -y "Basic Desktop"

内容十:Pantheon 图形桌面

Pantheon 的安装方法

# yum groupinstall "Pantheon Desktop"

或者:

# dnf group install -y "Pantheon Desktop"

内容十一:KDE 图形桌面

KDE 的安装方法

# dnf install @KDE-desktop

或者:

# yum groupinstall "KDE Plasma Workspaces"

或者:

# dnf group install -y "KDE Plasma Workspaces"

内容十二:GNOME 图形桌面

GNOME 的安装方法

# dnf install @gnome

或者:

# yum groupinstall "GNOME"

或者:

# dnf group install -y "GNOME"

[步骤] SUSE Repository Mirroring Tool (RMT) 客户端的注册和取消注册

正文:

步骤一:注册客户端到 SUSE Repository Mirroring Tool (RMT)

1.1 通过使用 SUSEConnect 命令注册

如果是 HTTP 协议:

# SUSEConnect --url http://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>

或者:

# SUSEConnect --url http://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>:80

如果是 HTTPS 协议:

# SUSEConnect --url https://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>

或者:

# SUSEConnect --url http://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>:443

1.2 通过 RMT server 的脚本注册

1.2.1 从 RMT 服务器下载 rmt-client-setup 脚本

如果是 HTTP 协议:

# curl http://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>/tools/rmt-client-setup --output rmt-client-setup

如果是 HTTPS 协议:

# curl https://<SUSE Repository Mirroring Tool (RMT) Server's IP address or FQDN>/tools/rmt-client-setup --output rmt-client-setup
1.2.2 执行 rmt-client-setup 脚本

如果是 HTTP 协议:

# sh rmt-client-setup http://RMT_SERVER/

如果是 HTTPS 协议:

# sh rmt-client-setup https://RMT_SERVER/

步骤二:查看客户端到 SUSE Repository Mirroring Tool (RMT) 的注册状态

# SUSEConnect --status-text

步骤三:取消注册客户端到 SUSE Repository Mirroring Tool (RMT)

3.1 取消注册客户端到 SUSE Repository Mirroring Tool (RMT)

# SUSEConnect –de-register

或者:

# SUSEConnect -d

3.2 清空客户端与 SUSE Repository Mirroring Tool (RMT) 相关的缓存

# SUSEConnect --cleanup

3.3 删除客户端与 SUSE Repository Mirroring Tool (RMT) 相关的文件

# rm -f /etc/SUSEConnect
# rm -rf /etc/zypp/credentials.d/*
# rm -rf /etc/zypp/repos.d/*
# rm -f /etc/zypp/services.d/*

参考文献:

https://documentation.suse.com/sles/15-SP1/single-html/SLES-rmt/index.html#sec-rmt-client-clientsetupscript