[TOC]

0x01 入坑出坑

1.Ubuntu20.04密码忘记了怎么办?

描述:解决流程与CentOS7更改密码原理差不多都是通过修复模式进入单用户模式进行更改重置密码;

实施准备工作:

    1. Ubuntu 20.04系统
    1. 具有root权限或者sudo权限
    1. 具有域名控制权,可做DNS映射,比如域网与IP的映射
    1. 熟悉Linux基本命令行操作,比如vi命令

方式1:grub菜单进入单用户模式进行修改

  • 1) 重启Ubuntu20.04操作系统,然后快速的按下SHIFT按键并保持,直到出现启动界面选择【Ubuntu的高级选项】回车继续。

  • 2) 接下来当Ubuntu启动菜单突出显示时,按e编辑Grub的启动提示符。

  • 3) 进入编辑页面后替换找到如(把ro quiet splash $vt_handoff)下图标记位置将 ro 替换为 rw init=/bin/bash进行grub引导参数的修改, 之后按Ctrl+X进行引导启动Ubuntu 20.04系统;

  • 4) 成功启动Ubuntu 20.04系统之后,您应该直接就是root用户身份在执行命令了,而不需要输入root密码。

    1
    2
    3
    4
    5
    # 1.执行以下命令确认根目录是否已被挂载为rw可读写权限。
    mount | grep -w /

    # 2.重置root密码
    passwd root
  • 5) 完成重置密码或者破解密码的工作后,重启Ubuntu 20.04,执行以下命令重启服务器:exec /sbin/init

WeiyiGeek.密码更改

WeiyiGeek.密码更改

Tips : 如果想放弃修改,按下Ctrl+c或者F2或者ESC放弃修改,重新回到GRUB菜单中。


方式2.利用恢复模式(Recovery Mode)进行root密码的修改

  • 1) 选择指定内核版本的恢复模式(Recovery Mode)按回车键进入。

    WeiyiGeek.高级选项

    WeiyiGeek.高级选项

  • 2) 选择单用户模式进行root修改密码或者重置其它用户的密码采用passwd 用户命令;

    WeiyiGeek.恢复菜单

    WeiyiGeek.恢复菜单

  • 3) 退出重启(reboot)即可


Tips : 如果执行passwd时,提示以下错误:
错误提示:

1
2
passwd: Authentication token manipulation error
passwd: password unchanged

原因:根目录挂载了只读状态。

解决方法如下:mount -o remount,rw /


Tips : 如果提示错误[ end Kernel panic - not syncing: Attempted to kill init! exit code=0x0007f00
错误原因:确保在前面修改grub参数时,删除splash启动选项。


Tips : 如果执行reboot命令时被提示:
错误提示:

1
2
Failed to connect to bus: No such file or directory
Failed to talk to init daemon.

解决办法: 忽略这样的错误,改为以下命令重启服务器:exec /sbin/init


2.在使用Ubuntu Software时提示/usr/share/appdata目录不存在

问题描述: 新装的系统在软件商店装软件的时候一直提示/usr/share/appdata目录不存在
解决办法:

  • (1) 图形界面打开系统监视器,并搜索 snap-store 选择 snap-store 进程并点击结束进程,然后重新打开Ubuntu软件;
  • (2) 命令行界面打开系统监视器 gnome-system-monitor
WeiyiGeek.gnome-system-monitor

WeiyiGeek.gnome-system-monitor


3.运行fcitx-config-gtk3时候显示如下 Name “org.fcitx.Fcitx-0” does not exist 警告

问题描述:

1
2
** (fcitx-config-gtk3:19361): WARNING **: 06:55:31.194: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "org.fcitx.Fcitx-0" does not exist
** (fcitx-config-gtk3:19361): WARNING **: 06:55:42.456: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.fcitx.Fcitx-0 was not provided by any .service files

问题原因: 由于ubuntu输入法配置为iBus需要执行im-config命令配置键盘输入输出为fcitx;


4.Ubuntu Desktop 版本右上角有一个红色的圆中间有一条白色的横线,鼠标移上去提示发生了一个错误

问题描述: 发生了一个错误,请通过右键菜单运行软件包管理器或通过终端执行apt-get来查看具体错误。错误信息:“错误:已损坏个数>0“,这通常意味着您安装的软件包有未满足的依赖关系
问题原因: 由于上次安装软件后未正确退出以及缺少依赖;
解决方法:

1
2
#在终端执行:
sudo apt-get install -f


5.GRUB Bootloader密码忘记了解决办法?

描述: 如果忘记密码或grub密码无法正常工作,则可以使用实时可启动闪存驱动器(GParted Live)或DVD(操作系统镜像文件)恢复更改。

Tips : 此处都是采用虚拟机进行演示所以首先需要关机然后选择相应的CD/DVD介质。

WeiyiGeek.ISO镜像挂载

WeiyiGeek.ISO镜像挂载

方式1: 利用 GParted Live (https://gparted.org/download.php) 进行清除密码,下载地址: https://downloads.sourceforge.net/gparted/gparted-live-1.3.0-1-amd64.iso, 启动gparted查看我的案例的屏幕截图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# - 用以下命令装载Linux OS根分区:
sudo mount /dev/sda6 /mnt/ && cd /mnt/
# 然后按原样输入以下命令:
for i in /sys /proc /run /dev; do sudo mount --bind "$i" "/mnt$i";done
# 使用编辑文件/etc/grub.d/00_header删除它末尾添加如下图:
vi /etc/grub.d/00_header
# 在Debian、Ubuntu和Kali Linux上用密码保护grub的方法
# grub-install /dev/sda # 如没有引导记录请使用以下命令在主引导记录(MBR)中安装 grub 引导程序
update-grub # 更新grub
reboot # 重新启动系统grub密码提示消失了。


# - 采用以下命令装载LVM逻辑卷的操作系统
sudo mount /dev/mapper/ubuntu--vg-lv--00 /mnt
chroot /mnt
mount -o remount, rw /
vim /etc/grub.d/00_header
update-grub

WeiyiGeek.GParted Live

WeiyiGeek.GParted Live

Tips : Gnome Partition Editor(简写 GParted)是一种非常小巧自启动运行光盘,它采用 X.org、轻量级的 Fluxbox 窗口管理器,以及 Linux 内核构建。其中包含的 GParted 硬盘分区工具,作为系统维护盘非常有用。


方式2: 利用系统安全镜像中Rescue救援模式进行清除密码。(后面遇到在写)


6.Windows使用XRDP远程桌面连接Ubuntu后没有Dock、桌面图标及UI难看问题解决

描述: 采用xrdp登陆到Ubuntu时只有桌面背景并且右键菜单只有两项功能,并且右边软件栏无Dock。
环境说明:

1
2
3
4
5
6
7
8
9
10
11
$ lsb_release -a
# Distributor ID: Ubuntu
# Description: Ubuntu 20.04.2 LTS
# Release: 20.04
# Codename: focal
$ uname -r
5.8.0-63-generic

$ cat .xsession
gnome-session --session=ubuntu-2d
# 如果是 xfce 桌面 该文件则为 xfce4-session

  • 解决办法:
    1
    2
    3
    4
    5
    6
    # 1.只需要安装一个 gnome 的调整工具,调整一下主题即可
    sudo apt install gnome-tweak-tool
    # 找到安装好的 gnome-tweak-tool 工具,打开后找到 扩展 ,然后打开 Ubuntu appindicators 与 Ubuntu dock

    # 重启资源控制器
    按下alt+F2 会跳出一个窗口,然后输入一个r(重启gnome shell)
WeiyiGeek.Ubuntu桌面图标设置

WeiyiGeek.Ubuntu桌面图标设置

参考连接: https://c-nergy.be/blog/?p=12155


  • 错误信息:

    1
    2
    3
    $ journalctl -f
    7月 30 09:06:51 ubuntu-pc org.gnome.Nautilus[4675]: Invalid MIT-MAGIC-COOKIE-1 keyUnable to init server: 无法连接: 拒绝连接
    7月 30 09:06:51 ubuntu-pc nautilus[4675]: cannot open display: :10.0
  • 解决办法:

    1
    2
    3
    4
    ➜  桌面 xhost local:gedit 
    non-network local connections being added to access control list
    ➜ 桌面 xhost local:explorer
    non-network local connections being added to access control list


8.Ubuntu 软件中心显示”文件已过期,该仓库的更新将不会应用” 提示问题信息的解决办法。

  • 解决办法:
    1
    2
    3
    4
    5
    6
    7
    # 排查项1.问题原因可能是系统日期不正确导致的。
    ntpdate cn.pool.ntp.org

    # 排查项2.清理 apt sources.list 中多余的list。
    ➜ ~ ls /etc/apt/sources.list.d
    martinx-ubuntu-xrdp-hwe-18_04-focal.list
    martinx-ubuntu-xrdp-hwe-18_04-focal.list.save


9.Ubuntu 切换终端时显示 Failed to set time zone: Invalid or not installed time zone ‘Asia/shanghai’ 错误信息的解决办法!。

  • 错误信息:
    1
    2
    [sudo] weiyigeek 的密码: 
    Failed to set time zone: Invalid or not installed time zone 'Asia/shanghai
  • 解决办法: 最新时区调整方法(可靠,简单)解决 Time zone: Asia/Shanghai (Asia, +0000) 出错的方法.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    # 1.执行如下命令 -> tzdata 设置 -> 选择 None Of the above (不选择城市,直接选时区) ->  选择 GMT-8 (CST 是中央标准时间) -> ok
    sudo dpkg-reconfigure tzdata
    # Current default time zone: 'Etc/GMT-8'
    # Local time is now: 2022年 01月 20日 星期四 13:11:04 +08.
    # Universal Time is now: Thu Jan 20 05:11:04 UTC 2022.

    # 2.把RTC配置成 `localtime timezone` 格式(非必要而且会产生警告)
    # ➜ ~ timedatectl set-local-rtc 1
    # ➜ ~ timedatectl
    # Local time: 四 2022-01-20 15:17:02 +08
    # Universal time: 四 2022-01-20 07:17:02 UTC
    # RTC time: 四 2022-01-20 15:17:02 # 关键点
    # Time zone: Etc/GMT-8 (+08, +0800)
    # System clock synchronized: no
    # NTP service: active
    # RTC in local TZ: yes # 关键点


10.在Console界面显示hung_task_timeout_secs disables this message.错误信息解决办法。

  • 错误信息:

    1
    echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message.
  • 错误原因: 默认情况下Linux会最多使用40%的可用内存作为文件系统缓存。当超过这个阈值后,文件系统会把将缓存中的内存全部写入磁盘,导致后续的IO请求都是同步的. 将缓存写入磁盘时,有一个默认120秒的超时时间, 出现上面的问题的原因是IO子系统的处理速度不够快,不能在120秒将缓存中的数据全部写入磁盘。IO系统响应缓慢,导致越来越多的请求堆积,最终系统内存全部被占用,导致系统失去响应。

  • 解决办法:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 临时生效
    # - vm.dirty_background_ratio : 指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如5%)就会触发pdflush/flush/kdmflush等后台回写进程运行,将一定缓存的脏页异步地刷入外存;
    sysctl -w vm.dirty_ratio=10
    # - vm.dirty_ratio : 指定了当文件系统缓存脏页数量达到系统内存百分之多少时(如10%),系统不得不开始处理缓存脏页(因为此时脏页数量已经比较多,为了避免数据丢失需要将一定脏页刷入外存);
    sysctl -w vm.dirty_background_ratio=5

    # 永久生效
    tee -a /etc/sysctl.conf <<'EOF'
    vm.dirty_background_ratio = 5
    vm.dirty_ratio = 10
    EOF
    sysctl -p
    reboot