Ubuntu-20.04-LTS(桌面与服务器)版基础配置

2022-09-29 16:53:26 浏览数 (1)

0x00 前言简述

Ubuntu 20.04 是 Ubuntu 的第 8 个 LTS 版本代号为"Focal Fossa"; 下载地址: http://releases.ubuntu.com/20.04/ 下载镜像时可以选择以下两种镜像:

  • 桌面版本 [*] ubuntu-20.04.1-desktop-amd64.iso
  • 服务器版本[*] ubuntu-20.04.1-live-server-amd64.iso

0x01 常规初始化配置

0.网络配置

描述:Ubuntu 20.04 LTS 在网络管理上相比较于18.04有很大的不同,网络配置文件不再是sudo vi /etc/network/interfaces而变成了/etc/netplan/50-cloud-init.yaml,并且也不在使用networking服务进行管理网络了,所以想以services networking restart重载配置文件是不行的了;

采用命令进行网络配置流程:

代码语言:javascript复制
#1.修改netplan网络配置文件/etc/netplan/下的文
# Ubuntu 20.04 LTS 
cat /etc/netplan/00-installer-config.yaml
# Ubuntu 18.04 LTS 
cp /etc/netplan/50-cloud-init.yaml{,.bak}
cat > /etc/netplan/50-cloud-init.yam << EOF
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.93.6/24
      gateway4: 192.168.93.2
      nameservers:
          addresses: [8.8.8.8, 8.8.4.4]
EOF

#2.应用网络配置
netplan apply

#3.networkd管理系统的网络重启
# 方式1
$ sudo ip link set enp0s3 down
$ sudo ip link set enp0s3 up

# 方式2
$ sudo nmcli networking off
$ sudo nmcli networking on

# 方式3.或者你可以尝试用System V init脚本重启你的网络:
$ sudo /etc/init.d/network-manager restart

给添加的新网卡配置静态IP

代码语言:javascript复制
~$ ifconfig -a  # 查看所有网卡 (不加 -a 工作网卡)
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe34:4ea1  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:34:4e:a1  txqueuelen 1000  (Ethernet)
enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::a00:27ff:fea2:190e  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:a2:19:0e  txqueuelen 1000  (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
``` 

ubuntu 20.04 网络的配置信息将不在保存在`/etc/network/interfaces`文件中,虽然该文件依然存在,但是内容是空的。

新系统已经使用netplan管理网络,对于配置信息使用vim打开文件`sudo vim /etc/netplan/00-installer-config.yaml`
```yaml
# 注意:yaml文件名在不同的机器上文件名可能不同。
network:
  ethernets:
    enp0s3:
      dhcp4: true
  version: 2

# 新网卡设置静态IP
network:
  ethernets:
    enp0s3:
      dhcp4: true
    enp3s0:
      addresses:
        - 192.168.93.6/24
      gateway4: 192.168.93.2
      nameservers:
          addresses: [8.8.8.8, 8.8.4.4]
  version: 2

注意: 最后执行sudo netplan apply命令使其生效

1.SSH 配置

1.1 初始SSH配置文件配置;

代码语言:javascript复制
#1.允许Root登陆以及采用密码认证(prohibit-password:禁用密码)
sed -i "s|#PermitRootLogin prohibit-password|PermitRootLogin no#g" /etc/ssh/sshd_config  # 为了安全
sed -i "s|#PasswordAuthentication|PasswordAuthentication#g" /etc/ssh/sshd_config

#2.重启ssh服务
systemctl restart sshd

1.2 公密钥生成与管理;

代码语言:javascript复制
# 生成
ssh-keygen -t rsa -f ~/.ssh/id_weiyigeek -P "Password" -C "Master@weiyigeek.top"
# 管理
ssh-agent bash
ssh-add ~/.ssh/id_weiyigeek  # 密钥加载
2.镜像源配置

配置命令如下:

代码语言:javascript复制
sudo cp /etc/apt/sources.list{,.bak}
sudo tee /etc/apt/sources.list <<'EOF'
#阿里云Mirrors - Ubuntu
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
# 
EOF

# 清华Mirrors
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

apt autoclean
apt update && apt upgrade -y
4.基础软件安装
代码语言:javascript复制
#1)编译依赖
apt -y install gcc
#2)常规软件
apt -y install nano vim net-tools tree wget dos2unix unzip htop ncdu bash-completion
5.系统防火墙

描述:Ubuntu 20.04系统防火墙采用ufw命令进行管理,相比于firewall-cmd更加方便简单;

代码语言:javascript复制
# 语法
ufw allow 端口/协议

# 例如
ufw allow 3306/tcp
ufw allow 53/udp
6.时区与时间

6.0 时间时区信息查看

代码语言:javascript复制
# 时间
> timedatectl
               Local time: 二 2020-10-27 23:04:31 CST
           Universal time: 二 2020-10-27 15:04:31 UTC
                 RTC time: 二 2020-10-27 15:04:32    
                Time zone: Asia/Shanghai (CST,  0800)
System clock synchronized: no                        
              NTP service: active                    
          RTC in local TZ: no   

# 时区
> ls -alh /etc/localtime      
lrwxrwxrwx 1 root root 35 10月 20 07:13 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
> cat /etc/timezone
Asia/Shanghai
> timedatectl list-timezones

6.1 时区修改:

代码语言:javascript复制
# 1.先查看当前系统时间
date -R   

# 2.交互式地区选择亚洲 Asia,确认之后选择中国(China),最后选择北京(Beijing)
tzselect

# 3.复制时区文件到/etc目录下再次查看时间已经修改为北京时间
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

# 4.timedatectl命令设置
> sudo timedatectl set-timezone Asia/Shanghai
> timedatectl set-timezone UTC
> timedatectl               
               Local time: 二 2020-10-27 23:05:56 CST
           Universal time: 二 2020-10-27 15:05:56 UTC
                 RTC time: 二 2020-10-27 15:05:56    
                Time zone: Asia/Shanghai (CST,  0800)
System clock synchronized: no                        
              NTP service: active                    
          RTC in local TZ: no

6.2 时间修改机硬件时间同步:

代码语言:javascript复制
# 修改时间
sudo date -s MM/DD/YY  #修改日期
sudo date -s hh:mm:ss  #修改时间
sudo timedatectl set-time   #日期时间

# 修改硬件CMOS的时间
sudo hwclock --systohc  #非常重要如果没有这一步的话后面时间还是不准

补充如果是Desktop版本建议在/etc/profile或者关闭自动根据网络选择时区;

代码语言:javascript复制
# sudo vi /etc/profile
sudo timedatectl set-timezone UTC

0x02 桌面版本配置

注意: 如果是远程操作一定要注意开放ssh端口否则有可能关机后无法连接;

1.远程共享配置

方式1: 采用 xrdp 方式远程连接Ubuntu Step 1.在系统设置里共享打开屏幕共享并远程登陆时的密码并查询其IP地址。(它将会是Windows远程登录时需要输入的密码,注意如果是设置防护墙请设置放行)

代码语言:javascript复制
# - 卸载系统原有的xrdp当出现错误时重新安装即可
sudo apt purge xrdp
sudo apt purge xserver-xorg-core
sudo apt purge xserver-xorg-input-all
sudo apt purge xorgxrdp

# - 
ip addr

Step 2.安装xrdp与dconf-editor。

代码语言:javascript复制
sudo apt install xrdp dconf-editor
sudo apt install xserver-xorg-core
sudo apt install xserver-xorg-input-all
sudo apt install xorgxrdp

Step 3.启动软件”dconf-editor”,打开之后依次展开org->gnome->desktop->remote-access然后取消 "requlre-encryption"的勾选即可 以及 您还需要为xrdp用户授予对/etc/ssl/private/ssl-cert-snakeoil.key文件的访问权。默认情况下,ssl证书组的成员可以使用它。

代码语言:javascript复制
# - 用户组添加建议使用xrdp时修改其缺省的3389端口
sudo adduser xrdp ssl-cert

# 自启设置
sudo systemctl start xrdp 
sudo systemctl enable xrdp

# 防火墙设置 
sudo ufw allow 3389
sudo ufw allow from 10.5.5.0/24 to any port 3389
sudo reboot
  • Step 5.重启后利用windows远程桌面工具进行连接xrdp,例如192.168.1.215实例连接后如下图所示。

WeiyiGeek.xrdp

Tips :xrdp 连接黑屏问题解决,只需在startwm.sh中添加两行就可以允许多个会话,这样您就不必注销或进入黑屏就可以处理20.04 LTS。

代码语言:javascript复制
nano /etc/xrdp/startwm.sh
# 添加以下命令在头部
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

方式2: 采用 VNC 方式远程连接Ubuntu

描述:Ubuntu 20.04桌面版本系统默认自带VNC Server我们只需要开启共享即可,但是可能连接时候会出现下列错误;

代码语言:javascript复制
# 错误信息
Unable to connect to VNC Server using your chosen security
setting. Either upgrade VNC Server to a more recent version from
RealVNC, or select a weaker level of encryption. 

# (1) 解决办法在服务器端使用以下命令降低服务器端的安全等级(不推荐)。
$gsettings set org.gnome.Vino enabled true   # 貌似不支持
$gsettings set org.gnome.Vino prompt-enabled false
$gsettings set org.gnome.Vino require-encryption false

# (2) 开机自启
> ll /usr/lib/vino/vino-server
-rwxr-xr-x 1 root root 278K 10月  6 22:33 /usr/lib/vino/vino-server
> ln -s /usr/lib/vino/vino-server /etc/init.d/vino-server

WeiyiGeek.

参考:https://kuricat.com/gist/snap-install-too-slow-zmbjy

PS: 采用上面的方式即安装的共享桌面依赖于显示器,如果显示器没有打开则不能通过VNC进行连接,所以我们需要安装X11VNC服务并且设置虚拟桌面从而可以在无显示器的情况下连接VNC桌面;

配置流程步骤 Step 1.配置用户自动登陆(非常重要否则在机器重启后VNC无法连接);

设置 -> 用户 -> Unlock -> 自动登陆(启用)

Step 2.x11vnc安装与配置

代码语言:javascript复制
# 安装 x11vnc 与虚拟显卡驱动
> sudo apt-get install x11vnc -y
> sudo apt install xserver-xorg-video-dummy

# 设置vnc密码
> sudo x11vnc -storepasswd /etc/x11vnc.pass 
Enter VNC password: 
Verify password:    
Write password to /etc/x11vnc.pass?  [y]/n y
Password written to: /etc/x11vnc.pass

# 创建自启服务
> sudo systemctl edit --force --full x11vnc.service
[Unit]
Description=Start x11vnc at startup.
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth /run/user/1000/gdm/Xauthority -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared -capslock -nomodtweak
[Install]
WantedBy=multi-user.target

# 防止键盘错位-capslock -nomodtweak

# 启动x11vnc服务和自启
sudo systemctl enable x11vnc
sudo systemctl start x11vnc

Step 3.设置在远程主机物理是否有显示器我们都能够通过VNC进行远程访问;

代码语言:javascript复制
# 创建默认的 xorg.conf 文件(此时程序会生成/root/xorg.conf.new文件)
sudo Xorg :1 -configure

# 将生成的 xorg.conf 文件复制到xorg.conf
sudo cp -a /root/xorg.conf.new /usr/share/X11/xorg.conf.d/xorg.conf

# 创建了一个使用虚拟显卡的虚拟显示器
sudo tee -a /usr/share/X11/xorg.conf.d/xorg.conf<<'EOF'
Section "Monitor"
  Identifier "Monitor1"
  HorizSync   1.0 - 2000.0
  VertRefresh 1.0 - 200.0
  # Add 16:9 modes, others are automatically detected.
  Modeline "1280x720" 74.48 1280 1336 1472 1664 720 721 724 746
  Modeline "1920x1080" 172.80 1920 2040 2248 2576 1080 1081 1084 1118
EndSection


Section "Device"
  Identifier "Card1"
  Driver "dummy"
  VideoRam 256000
EndSection

Section "Screen"
  DefaultDepth 24
  Identifier "Screen1"
  Device "Card1"
  Monitor "Monitor1"
  SubSection "Display"
    Depth 24
    Modes "1920x1080"
  EndSubSection
EndSection
EOF

# 为了让虚拟的显示器和真实显示器都能工作,我们需要把最上面的 ServerLayout 进行更改
Sudo sed -i '4iScreen      1  "Screen1" 0 0' /usr/share/X11/xorg.conf.d/xorg.conf

Step 4.重启机器然后再windows中利用 VNC View 进行连接;

WeiyiGeek.VNC连接

参考地址: https://blog.csdn.net/bluewhalerobot/article/details/106770429?

Tips: 三种远程登录方式比较 vino-server | Xrdp | vnc-server 优点:系统自带,配置简单 | 配置简单,可用windows自带的远程桌面登录 | 配置简单,但不一定能成功连接远程桌面 | 缺点:重启后必须登录个人桌面后才可启动 | root用户登陆不容易出错,普通用户容易出错 |出错不好解决|

综合我自己尝试这三种远程桌面登录ubuntu的方式,我觉得使用vino-server最方便,在这个基础上,安装xrdp服务,然后在windows系统中使用自带的远程登录工具时,使用VNC-any的方式登录远程桌面,这样就可以避免下载vnc viewer,使用起来跟windows远程登录方式也无差别。


2.常用软件安装

描述:主要在Ubuntu 20.04 TLS 安装以下工具集:

  • 网络管理: net-tools
  • 运维工作: Terminator / zsh / oh-my-zsh
  • 开发工具: git
  • 通信工具: minicom (串口通信工具) / sshd
  • 写作工具: typora / wps
  • 输入法工具: fctix-baidu / fctix-sougou / fctix
  • 娱乐工具 : 网易云音乐 / QQ

安装Shell脚本:

代码语言:javascript复制
# 网络管理 # 
# ifconfig
sudo apt-get -y install net-tools

# 开发工具 #
# git
sudo apt -y install git

# 运维工作 # 
# Terminator
sudo apt-get -y install terminator
# zsh
sudo apt-get -y install zsh 
# oh-my-zsh
sudo apt install curl # 先安装 curl
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" 

# 通信工具 # 
# minicom - 调试嵌入式系统必备工具
sudo apt-get -y install minicom
sudo apt-get -y install ssh

# 写作工具 #
# typora : https://typora.io/#linux
# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BA300B7755AFCFAE
wget -qO - https://typora.io/linux/public-key.asc | sudo apt-key add -
# add Typora's repository
sudo add-apt-repository 'deb https://typora.io/linux ./'
sudo apt-get update
# install typora
sudo apt-get install typora

# 输入法工具 # 
# 注意: Ubuntu 在安装中文语系系统自带有一个智能拼音且输入法系统为iBus,如果安装google或者百度输入法则需要安装切换为fcitx
sudo apt install fcitx
# 搜狗 : https://pinyin.sogou.com/linux/?r=pinyin
# 百度 :https://srf.baidu.com/site/guanwang_linux/index.html
sudo apt  install fcitx-bin fcitx-table fcitx-config-gtk fcitx-config-gtk2 fcitx-frontend-all
sudo apt install qt5-default qtcreator qml-module-qtquick-controls2
sudo dpkg -i fcitx-baidupinyin.deb                # 安装百度输入法
sudo dpkg --purge remove fcitx-baidupinyin:amd64  # 卸载

# 娱乐工具 #
# 网易云 : https://music.163.com/#/download
> sudo dpkg -i netease-cloud-music_1.2.1_amd64_ubuntu_20190428.deb   
# 腾讯QQ (Linux) : https://im.qq.com/linuxqq/download.html
wget http://down.qq.com/qqweb/LinuxQQ/linuxqq_2.0.0-b2-1084_amd64.deb
sudo dpkg -i linuxqq_2.0.0-b2-1084_amd64.deb
sudo dpkg -r linuxqq  #卸载QQ

配置工具集:

(1) Terminaltor 终端优化

代码语言:javascript复制
# 1.优化 Terminator 界面方案
mkdir ~/.config/terminator/
touch ~/.config/terminator/config
gedit ~/.config/terminator/config
[global_config]
  suppress_multiple_term_dialog = True
[keybindings]
[profiles]
  [[default]]
    background_color = "#002b36"
    background_darkness = 0.92
    background_type = transparent
    cursor_color = "#3036ec"
    font = Ubuntu Mono 15
    foreground_color = "#839496"
    show_titlebar = False
    login_shell = True
    custom_command = tmux
    use_system_font = False
[layouts]
  [[default]]
    [[[window0]]]
      type = Window
      parent = ""
    [[[child1]]]
      type = Terminal
      parent = window0
[plugins]

# 2.Terminator 设置为默认的终端(实际测试中无需安装)
sudo apt-get -y install dconf-editor
dconf-editor
# 依次打开 org --> gnome --> desktop --> terminal, 输入以下内容:
exec:  x-terminal-emulator
exec-arg:  -e

# 3.Ctrl   Alt   T 启动 Terminator

(2) zsh 与 oh-my-zsh 基础配置

代码语言:javascript复制
# (1) 设置 zsh 为默认的 shell
chsh -s /bin/zsh 

# (2) oh-my-zsh 默认主题配置文件在 ~/.zshrc 后续配置中会使用到
touch ~/.zshrc

# (3) zsh 插件
# 语法高亮插件 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-syntax-highlighting
# 自动提示插件 zsh-autosuggestions(快速补齐快捷键ALT E行位,ALT F匹配一个语句)
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh}/plugins/zsh-autosuggestions


# (4) 在 .zshrc 文件添加插件以及主题
# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
# 缺省主题 "robbyrussell"  
# 推荐主题: juanghurtado 、kardan、agnoster
ZSH_THEME="agnoster"
plugins=(git zsh-syntax-highlighting zsh-autosuggestions)

# (5) 执行source使配置生效:
$ source .zshrc

WeiyiGeek.terminal与oh-my-zsh

(3) 输入法设置

代码语言:javascript复制
# 1.假设前面您已经安装fcitx,此处以安装谷歌拼音输入法(Google Pinyin)为例,首先在系统终端中输入命令:
im-config #注:im-config是Input Method Configuration的缩写。

# 2.在用户配置设置系统中必须选中Fcitx,然后选择Yes , 然后重启机器

# 3.安装谷歌拼音输入法(Google Pinyin)非常简单,只需要下面这个命令:
sudo apt install fcitx-googlepinyin

# 4. 安装后运行如下命令配置谷歌拼音输入法 或者在右上角进行点击:
fcitx-config-gtk3

# 5.打开Input Method Confuguration窗口,点击左下角   号,添加Google Pinyin 输入法
# 注意最下面的输入法即默认激活的输入法;

# 6.最后用快捷键:Ctrl Shift 切换输入法

WeiyiGeek.输入法

(4) ssh 密钥生成与加载

代码语言:javascript复制
> ssh-keygen -t ed25519 -f ~/.ssh/id_sec_ed25519 -C "master@weiyigeek.top" 
> ssh-keygen -t rsa -C "master@weiyigeek.top" 
weiyigeek@Ubuntu-PC:~/.ssh
> ls                                                       
id_rsa  id_rsa.pub  id_sec_ed25519  id_sec_ed25519.pub
> ssh-agent bash
> ssh-add ~/.ssh/id_sec_ed25519  # 私钥加载
3.常用工具补充
截图工具

peek 描述: Peek 可以生成轻量级的GIF 图片, 也可以生成 MP4、APNG和WebM格式

代码语言:javascript复制
# 1. 打开命令行后,获取Peek的PPA源(如果不行,多试几次)
sudo add-apt-repository ppa:peek-developers/stable
# 2. 更新源
sudo apt-get update
# 3. 安装peek
sudo apt-get install peek
# 4. 运行peek

使用说明: 使用peek后可以把目标对象放进进Peek 的框架里面, 然后点击最左上角的图标进行录制GIF图片,再次点击最左上角的图标停止录制GIF图片,然后自动弹出保存界面:

WeiyiGeek.Peek

Kazam 描述: Kazam 是一个很轻量级的屏幕录制工具,也可以用来截图。

代码语言:javascript复制
$ sudo apt install kazam
版本控制

Meld 描述:Meld 是类似 Beyong Compare 的一种优秀的文件或目录比较软件,并支持许多流行的版本控制系统。

代码语言:javascript复制
$ sudo apt-get install meld
视频工具

VLC 描述:VLC是一个好用的视频播放器

代码语言:javascript复制
$ sudo apt install vlc
Wine 工具

Q: 什么是 wine ?

答: 它是能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层; 简单的说就是可以在Linux上运行某些exe的可执行文件;

Wine安装

代码语言:javascript复制
# 1.我们需要在64位操作系统上支持32位应用,则需要添加32位架构的支持(`大部分的机器都是 x86_64 位的架构默认不支持 32 位应用程序`)
sudo dpkg --add-architecture i386

# 2.更新源与wine安装
sudo wget -nc https://dl.winehq.org/wine-builds/winehq.key && sudo apt-key add winehq.key
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' 
sudo apt update
# sudo apt install wine-stable   # Ubuntu
# sudo apt install --install-recommends winehq-stable # 官网
# deepin-wine 安装参考 https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu

# 3.
> dpkg --list | grep "wine"
ii  deepin-fonts-wine                          2.18-22~rc0                         all          Windows API implementation - fonts
ii  deepin-libwine:i386                        2.18-22~rc0                         i386         Windows API implementation - library
ii  deepin-wine                                2.18-22~rc0                         all          Windows API implementation - standard suite
ii  deepin-wine-binfmt                         2.18-12                             all          Windows API implementation - binfmt support
ii  deepin-wine-helper:i386                    1.2deepin8                          i386         Deepin Wine Helper
ii  deepin-wine-plugin                         1.0deepin2                          amd64        Deepin Wine plugin
ii  deepin-wine-plugin-virtual                 1.0deepin3                          all          Deepin Wine plugin virtual package
ii  deepin-wine-uninstaller:i386               0.1deepin2                          i386         Deepin Wine Uninstaller Tool
ii  deepin-wine32:i386                         2.18-22~rc0                         i386         Windows API implementation - 32-bit binary loader
ii  deepin-wine32-preloader:i386               2.18-22~rc0                         i386         Windows API implementation - prelinked 32-bit binary loader
ii  fonts-wine                                 5.0-3ubuntu1                        all          Windows API implementation - fonts
ii  libwine:amd64                              5.0-3ubuntu1                        amd64        Windows API implementation - library
ii  libwine:i386                               5.0-3ubuntu1                        i386         Windows API implementation - library
ri  wine                                       5.0-3ubuntu1                        all          Windows API implementation - standard suite
ii  wine-stable                                3.0.1ubuntu1                        all          Windows API implementation (transitional package)
ii  wine32:i386                                5.0-3ubuntu1                        i386         Windows API implementation - 32-bit binary loader
ii  wine64                                     5.0-3ubuntu1                        amd64        Windows API implementation - 64-bit binary loader


# 4.利用Wine进行安装使用微信与QQ
sudo wget "https://mirrors.huaweicloud.com/deepin/pool/non-free/d/deepin.com.wechat/deepin.com.wechat_2.6.8.65deepin0_i386.deb" -O /home/weiyigeek/下载/deepin.com.wechat_2.6.8.65deepin0_i386.deb
sudo wget "https://mirrors.aliyun.com/deepin/pool/non-free/d/deepin.com.qq.office/deepin.com.qq.office_2.0.0deepin4_i386.deb"

> sudo dpkg -i *qq.office*deb
# (正在读取数据库 ... 系统当前共安装有 235251 个文件和目录。)
# 准备解压 deepin.com.qq.office_2.0.0deepin4_i386.deb  ...
# 正在解压 deepin.com.qq.office:i386 (2.0.0deepin4) 并覆盖 (2.0.0deepin4) ...
# 正在设置 deepin.com.qq.office:i386 (2.0.0deepin4) ...
# 正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
# 正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ...
# 正在处理用于 mime-support (3.64ubuntu1) 的触发器 ...
# 正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
> sudo dpkg -i deepin.com.qq.office*
# 正在选中未选择的软件包 deepin.com.wechat:i386。
# (正在读取数据库 ... 系统当前共安装有 235238 个文件和目录。)
# 准备解压 deepin.com.wechat_2.6.8.65deepin0_i386.deb  ...
# 正在解压 deepin.com.wechat:i386 (2.6.8.65deepin0) ...
# 正在设置 deepin.com.wechat:i386 (2.6.8.65deepin0) ...
# 正在处理用于 gnome-menus (3.36.0-1ubuntu1) 的触发器 ...
# 正在处理用于 desktop-file-utils (0.24-1ubuntu3) 的触发器 ...
# 正在处理用于 mime-support (3.64ubuntu1) 的触发器 ...
# 正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...

WeiyiGeek.Wine-QQ-Wechat

4.WPS 安装

描述: 虽然 Ubuntu 内置 LibreOffice 文档编辑器 , 个人更偏向于WPS其完善的功能(PS:唯一不足就是广告太多) 官网: https://linux.wps.cn/

代码语言:javascript复制
# (1) 下载安装
$ wget https://wdl1.cache.wps.cn/wps/download/ep/Linux2019/9711/wps-office_11.1.0.9711_amd64.deb

# (2) 安装WPS
$ sudo dpkg -i wps-office_11.1.0.9711_amd64.deb

WeiyiGeek.WPS

说明: 在Ubuntu 20.04中在使用WPS时没有出现系统缺失字体的问题,而这个问题在以前是很常见的

5.Pycharm 安装

描述:Pycharm 是一款进行Python开发的IDE编辑器由jetbrains公司进行开发的同样与大多数商业软件一样,它也有的专业版与社区免费版本以及教育的版本;

本次演示在Ubuntu 20.04 TLS 中下载安装Pycharm专业版,系统依赖;

代码语言:javascript复制
# System requirements
  GNOME or KDE desktop
  2 GB RAM minimum, 8 GB RAM recommended
  2.5 GB hard disk space, SSD recommended
  1024x768 minimum screen resolution
  Python 2.7, or Python 3.5 or newer

Note: JetBrains Runtime (JBR) 11 is included with the PyCharm distribution. You do not need to install Java on your computer to run PyCharm.

官方下载地址:https://www.jetbrains.com/pycharm/download/#section=linux

操作流程:

代码语言:javascript复制
# (1) 安装 Pycharm 首先解压安装包 pycharm-professional-2020.1.tar.gz pycharm-2020.1
tar -zxvf pycharm-professional-2020.1.tar.gz pycharm-2020.1/

# (2) 建立软件存放路径
cd ~/app/program/pycharm-professional/  && ls
> ls     
bin        debug-eggs  index                  jbr  license  product-info.json
build.txt  help        Install-Linux-tar.txt  lib  plugins  pycharm-2020.2.3

# (3) 初始化 Pycharm 稍后会弹出一个窗口选择同意并且设置可用命令行启动charm;
./bin/pycharm.sh

# (4) 设置桌面图标在创建项目的页面上选择configure之后选择 Create Desktop Entry(注意需要进行认证)或者手动创立桌面图标;
$ cat /usr/share/applications/jetbrains-pycharm.desktop 
[Desktop Entry]
Version=1.0
Type=Application
Name=PyCharm Professional Edition
Icon=~/app/program/pycharm-professional/bin/pycharm.svg
Exec="~/app/program/pycharm-professional/bin/pycharm.sh" %f
Comment=Python IDE for Professional Developers
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-pycharm

# (5) 命令行启动Pycharm
$ charm

# (6) 配置Python环境,默认情况下Pycharm新建工程的话,可能会创建失败会报错,比如“错误提示:ModuleNotFoundError: No module named ‘distutils.util’ ”
# 此时我们需要安装pip 以及 python3-distutils
sudo apt -y install python3-pip python3-distutils

优化配置:

代码语言:javascript复制
# (1) 配置字体
# File -> Setting -> Editor -> Font 
Font: DialogInput
Size: 18

# (2) 安装插件(注意需要重启IDE)
# File -> Setting -> Plugings 
0) chines :界面语言
1)statistic: 项目统计
2)Rainbow Brackets:让代码块之间很清晰的显示出各种颜色
3).ignore:使用git的人知道,也就是.gitignore

WeiyiGeek.插件安装与使用

基础Pycharm使用:新建项目 -> python -> 选择 python版本

WeiyiGeek.runPython


0x03 服务器版本配置

1.Server版本图形界面安装

描述: Ubuntu server版安装后没有图形界面,为了管理方便,安装完成后,即可安装界面和远程桌面工具。

代码语言:javascript复制
# (1) 更新源 (清华、阿里都可以)
nano /etc/apt/sources.list

# (2) 执行更新软件包索引以及命令更新
apt-get update && apt-get upgrade

# (3) 安装桌面软件(Xorg)
apt-get install -y ubuntu-desktop

# (4) 安装远程桌面服务软件(xrdp)
apt-get install -y xrdp

# (5) 安装完成后即可使用Windows远程桌面工具登录Ubuntu。

WeiyiGeek.Server版本图形界面

2.图形界面使用root用户登录系统

描述: ubuntu 20.04 默认是没有开启root登录的, 所以在root用户锁屏后无法通过密码解锁进入图像界面系统,此时必须通过以下方式进行调整;

操作流程:

Step 1.设置root密码和切换root用户

代码语言:javascript复制
sudo passwd root && su - root

Step 2.修改相应的配置文件启用root登录

代码语言:javascript复制
$ sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
[Seat:*]
user-session=ubuntu
greeter-show-manual-login=true
# all-guest=false


$ sudo vim /etc/pam.d/gdm-autologin
$ sudo vim /etc/pam.d/gdm-password
# 分别注释掉 auth required pam_succeed_if.so user != root quiet_success 这一行(第三行左右)


$ sudo vim/root/.profile
# ~/.profile: executed by Bourne-compatible login shells.
if [ "$BASH" ]; then
  if [ -f ~/.bashrc ]; then
    . ~/.bashrc
  fi
fi
tty -s && mesg n || true
mesg n || true

Step 3.重启系统生效在界面选择未列出的用户

3.grub安全配置

描述: 最近忘记了密码,然后使用了这个单用户模式重置了密码,感觉细思极恐啊,无论多么复杂的密码,只要重启后进入这个模式都可以被攻破。有人可以使用grub轻松更改你的用户密码,从而危及Linux系统的安全性所以你必须设置grub密码(例如重要主机或数据库系统)主要防止内鬼嘻嘻,本文介绍在Debian、Ubuntu和Kali Linux系统上用密码保护grub的方法。

操作流程:

代码语言:javascript复制
# - 1.开启grub menu 显示( Ubuntu 20.04.2)
sed -i -e 's|set timeout_style=${style}|#set timeout_style=${style}|g' -e 's|set timeout=${timeout}|set timeout=3|g' /etc/grub.d/00_header
#  Ubuntu修改grub菜单引导选项和等待时间 
GRUB_DEFAULT=0
#GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=3
sed -i -e 's|GRUB_TIMEOUT_STYLE=hidden|#GRUB_TIMEOUT_STYLE=hidden|g' -e 's|GRUB_TIMEOUT=0|GRUB_TIMEOUT=3|g' /etc/default/grub


# - 2.使用如下命令来创建grub认证密码
sudo grub-mkpasswd-pbkdf2
# Enter password: WeiyiGeek
# Reenter password: WeiyiGeek
# PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.2FAFDA9CF0C871D1B01328D276AA55E14C54222718C969DD33E3287E720889AE0FF485FCBDC336566BC2A48C9FC97C15A09BDA7C926D8A21B2FF0531A2B3785D.776E30ECC4BDD5CD1F066B960BDAC25E4550B0E164D8AC8644EAD4158C86E5B70541640BA72699E58065E34F3A8039CAEB2273B0729FA511AC41920DE6D66FD4

# - 3.将生成的加密字符串加入到/etc/grub.d/00_header末尾
tee -a /etc/grub.d/00_header <<'END'
cat <<'EOF'
# GRUB Authentication
set superusers="grub"
password_pbkdf2 grub grub.pbkdf2.sha512.10000.5FD0269A1E1216B31ED1F127DF6E47D164D85E37E6187A48341F5665092CC752DB1527C0D928080A3440C0F46E7B7C749EC3582AF0F02951EB0FB01F9F8424D0.1466487161CC5866FCE719D95DD1D70FAF67B4F8601804DC74B3FE3C82506648942FF7073C8BFCFE268FBC0D545BED047A7763D0131E0ABBF8A4E0922C52EFD5
EOF
END

# - 4.设置进入正式系统不需要认证如进入单用户模式进行重置账号密码时需要进行认证。
# vim /etc/grub.d/10_linux
# 191       echo "menuentry --user=grub '$(echo "$title" | grub_quote)' ${CLASS} $menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"  # 如果按e进行menu菜单则需要用grub进行认证
# 192   else
# 193       echo "menuentry --unrestricted '$(echo "$os" | grub_quote)' ${CLASS} $menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"  # 正常进入系统则不认证
# 两条命令搞定
sed -i '/echo "$title" | grub_quote/ { s/menuentry/menuentry --user=grub/g;}' /etc/grub.d/10_linux
sed -i '/echo "$os" | grub_quote/ { s/menuentry/menuentry --unrestricted/g;}' /etc/grub.d/10_linux


# - 5.更新GRUB从而生成boot启动文件。
update-grub
  # Sourcing file `/etc/default/grub'
  # Sourcing file `/etc/default/grub.d/init-select.cfg'
  # Generating grub configuration file ...
  # Found linux image: /boot/vmlinuz-5.4.0-78-generic
  # Found initrd image: /boot/initrd.img-5.4.0-78-generic
  # Found linux image: /boot/vmlinuz-5.4.0-77-generic
  # Found initrd image: /boot/initrd.img-5.4.0-77-generic
  # Adding boot menu entry for UEFI Firmware Settings
  # done
或者采用以下命令
# grub-mkconfig -o /boot/grub/grub.cfg

Tips : 重启机器在grub引导菜单输入”e”,需要输入用户名和密码才能进入,这个设置主要是为了防止别人通过物理接触进入单用户模式从而修改你的root密码。

WeiyiGeek.GRUB单用户模式登录加密

4.固定DNS服务器设定

描述: 默认修改/etc/resolv.conf后会在一定时间内自动还原指向 nameserver 127.0.0.53,在k8s集群进行coredns服务安装并且引用该文件时会出现无法启动错误,并且假设我想指定dns地址且不想其还原我们可以参照如下方式。

方式1.简单粗暴删除软连接

代码语言:javascript复制
sudo rm -f /etc/resolv.conf 
tee /etc/resolv.conf  <<'EOF'
nameserver 223.6.6.6
nameserver 8.8.8.8
EOF

方式2.比较优雅还是由systemd-resolved.service服务进行管理

代码语言:javascript复制
# 下面三处文件可以修改系统或者网卡DNS
# systemd-resolve 服务DNS设定后续便可以防止/etc/resolv.conf被误修改。
$ tee -a /etc/systemd/resolved.conf <<'EOF'
DNS=223.6.6.6
EOF
systemctl restart systemd-resolved.service
systemd-resolve --status

$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
  ethernets:
    ens32:
      addresses:
      - 10.10.107.225/24
      gateway4: 10.10.107.1
      nameservers:
        addresses:
        - 192.168.10.254
        search: []
  version: 2

$ cat /etc/network/interfaces
dns-nameservers 8.8.8.8

# Delete the symbolic link
sudo rm -f /etc/resolv.conf 
# create the symbolic link
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

# 系统DNS设置最终记录文件(由 systemd-resolve 服务)
# /run/systemd/resolve/resolv.conf
# /run/systemd/resolve/stub-resolv.conf

# 效果查看(此时系统只会采用我们预设的DNS并且会实时更新,防止误操作)
$ cat /etc/resolv.conf
nameserver 223.6.6.6
nameserver 8.8.8.8
nameserver 192.168.10.254

0 人点赞