Ubuntu中使用cockpit管理kvm虚拟机

cockpit

使用cockpit管理kvm需要安装cockpit本身,还有cockpit-machines组件来管理虚拟机

$ sudo apt update
$ sudo apt install -y kpit cockpit-machines
$ sudo systemctl start cockpit

kvm、qemu、libvirt

安装kvm、qemu、libvirt相关工具

$ sudo apt install qemu qemu-kvm libvirt-bin  bridge-utils  virt-manager
$ sudo systemctl start libvirtd
$ sudo systemctl enable libvirtd

创建虚拟机无法启动network相关问题

在安装完成kvm后从cockpit中创建虚拟机时报错:libvirtError: Requested operation is not valid: network ‘default’ is not active,在用virsh 尝试激活default network失败。

$ sudo virsh net-start default

error: Failed to start network default
error: internal error: Failed to initialize a valid firewall backend

从错误信息中可以看到,无法初始化防火墙后端,需要安装firewalld,然后重启libvirtd

$ sudo apt update && sudo apt install firewalld -y
$ sudo systemctl enable --now firewalld
$ sudo systemctl restart libvirtd****

opensuse 安装使用 zerotier

opensuse安装编译环境

$  sudo zypper install -y gcc clang make

编译安装zerotier

$ git clone https://github.com/zerotier/ZeroTierOne
$ cd ZeroTierOne
$ make
$ sudo make install

启动并加入zerotier网络

$ sudo nohup zerotier-one &
$ zerotier-cli join <zerotier network id>

 

 

nginx反向代理出现阻止载入混合活动内容的错误

最近在访问wordpress后台时,经常出现页面加载不全,甚至是完全空白的情况。在打开浏览器调试后发现错误信息:************ was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ‘***************‘. This request has been blocked; the content must be served over HTTPS.

了解该错误造成原因是由于新版浏览器默认禁止混合内容的载入,通过浏览器站点设置可以解决。

另外考虑近期用了给wordpress做了反向代理后才出现这种情况,所以想着是否nginx反向代理是否有设置可以解决改问题,解决方法是在nginx配置文件server或location域中添加:

add_header Content-Security-Policy upgrade-insecure-requests;

然后重启nginx即可,这样在不同的电脑上就不用调整每个浏览器的设置

OpenSuse 编译 deepin-screen-recorder

安装依赖库

 sudo zypper install -y libqt5-qtbase-devel libqt5-linguist-devel xcb-util-devel libdframeworkdbus-devel dtkgui-devel dtkwidget-devel libqt5-qtx11extras-devel libqt5-qtmultimedia-devel procps-devel libXcomposite-devel libXtst-devel libXcursor-devel 
sudo ln -s /usr/bin/lupdate-qt5 /usr/bin/lupdate
sudo ln -s /usr/bin/lrelease-qt5 /usr/bin/lrelease
sudo ln -s /usr/bin/qmake-qt5 /usr/bin/qmake

拉取deepin-screen-recorder

$ git clone https://github.com/linuxdeepin/deepin-screen-recorder
$ cd deepin-screen-recorder
$ git checkout master

拉取回来的默认分支为uos,需要切换到master分支

  • 修改istream.tcc在#include后添加 #undef min
vim /usr/include/c++/10/bits/istream.tcc 
#undef min
  • 修改以下文件,引用QPainterPath
  1. src/utils.cpp
  2. src/widgets/shapeswidget.cpp
  3. src/widgets/tooltips.cpp
#include <QPainterPath>

编译

$ mkdir build
$ cd build
$ qmake ..
$ make -j$(nproc)
$ sudo make install 

PVE修改虚拟机ID

前段时间在pve上做redis实验的时候创建的虚拟机,发现原有创建时ID与先前认为的规范不一致,所以需要修改为正确的ID。

关闭需要修改ID的虚拟机

使用虚拟机名称过滤停止虚拟机实例

# for vm in `qm list |grep redis |awk '{print $1}'`; do qm unlock  $vm;qm stop $vm; done

重命名虚拟机配置文件

进入到/etc/pve/nodes/pve,KVM虚拟机对应目录为qemu-server,lxc容器为lxc,重命名旧配置文件为新ID名称。这次目的只是为了修改虚拟机ID,所以不用做其他操作。

如果是修改了相应的磁盘信息之类的,则需要修改配置文件中相应的项。

# mv 331.conf 131.conf

因为在这里多台虚拟机都是连续的ID号,所以使用for来重命名

# for i in {1..6};do mv 33$i.conf 13$i.conf; done

 

esxi启用ssh客户端

在esxi中查看ssh客户端是否启用

esxcli network firewall ruleset list --ruleset-id sshClient

如果结果非true,使用下面的指令启用ssh客户端

esxcli network firewall ruleset set --ruleset-id sshClient --enabled=true

如果不启用ssh客户端,则无法在esxi中使用ssh连接到其他机器,亦无法使用scp拷贝文件

系统启动前进入fsck修复文件系统

当linux系统运行时候,无法对已挂载文件系统进行尝试性修复,所以当一个ext(n)根文件系统出现损坏时候,需要在开机时使其执行fsck修复根文件系统。

在/下创建名为forcefsck的文件,重启后将执行fsck文件系统修复。

# touch /forcefsck
# reboot

进入系统之后,默认情况下/forcefsck已被移除,如未移除,需要手动移除该文件,避免每次进入系统前都执行fsck。

# rm /forcefsck

 

Debian 10 安装Qtile

目前qtile包由于过旧,在新版debian/ubuntu源中已被移除,所以要使用源码安装qtile。

安装依赖库

如果没有安装pip,先安装pip

# sudo apt install python3-pip

然后安装依赖:

# sudo pip3 install xcffib
# sudo pip3 install --no-cache-dir cairocffi
# sudo apt install libpangocairo-1.0-0

安装Qtile

# git clone https://github.com/qtile/qtile.git
# cd qtile
# sudo pip3 install .
# sudo pip3 install qtile

初始化及启动

复制默认配置文件到个人配置文件夹:

# cp /usr/local/lib/python3.7/dist-packages/libqtile/resources/default_config.py ~/.config/qtile/config.py

在lightdm(或其他如sddm、gdm桌面管理器)中添加Qtile会话:

# sudo vim /share/xsession/qtile.desktop
[Desktop Entry]
Name=Qtile
Comment=Qtile Session
Exec=/usr/local/bin/qtile
Type=Application
Keywords=wm;tiling

 

使用nginx反向代理qbittorrent-nox

qbittorrent-nox设置

  • 修改qbittorrent-nox web ui监听地址

使用qbittorrnet-nox使用帮助查看了一下,没有看到有相关的监听地址选项,只有端口的设置,登入到qbittorrent-nox 的web ui中可以修改监听的ip地址,默认为*

到tools-options-Web UI-Web User Interface (Remote control)中将IP address:修改为127.0.0.1,重启后即无法从外部地址访问qbittorrent-nox。

  • 重启qbittorrent-nox

使用systemd服务重启qbittorrent-nox,具体使用方法参阅Dedian 10 使用qbittorrent-nox web

 sudo systemctl start qbittorrent-nox

nginx反向代理

  • 添加反向代理配置

 location /qbit/ {
    proxy_pass http://127.0.0.1:8080/;
    proxy_http_version      1.1;
    proxy_set_header        X-Forwarded-Host        $http_host;
    http2_push_preload on; # Enable http2 push
  }
  • 启用nginx_http_auth_basic认证

    • 使用htpasswd创建认证文件  # htpasswd -c /etc/nginx/qbit.passwd qbit
    • 在nginx反向代理qbittorrent-nox块中使用创建的认证信息
 location /qbit/ {
    auth_basic "Welcome Qbittorrent"; 
    auth_basic_user_file /etc/nginx/qbit.passwd;
    proxy_pass http://127.0.0.1:8080/;
    proxy_http_version      1.1;
    proxy_set_header        X-Forwarded-Host        $http_host;
    http2_push_preload on; # Enable http2 push
  }
  • 重启nginx

#systemctl restart qbittorrent-nox

到此即可使用nginx访问qbittorrnet-nox的web ui了,http://yourdomain/qbit

 

Dedian 10 使用qbittorrent-nox web

下载安装包

sudo apt install qbittorrent qbittorrent-nox

创建用于运行qbittorrent-nox的用户及组

sudo adduser --system --group qbittorrent-nox

也可以将系统原有用添加到qbittorrent-nox组中,此处用户主要用于qbittorrnet-nox 的systemd启动脚本

添加qbittorrent-nox服务,设置开机自启及启动

sudo vi /lib/systemd/system/qbittorrent-nox.service
[Unit]
Description=qBittorrent Command Line Client
After=network.target

[Service]
Type=forking
User=qbittorrent-nox
Group=qbittorrent-nox
UMask=007
ExecStart=/usr/bin/qbittorrent-nox -d --webui-port=8090
Restart=on-failure

[Install]
WantedBy=multi-user.target

webui-port用于浏览器访问的端口,可以自行更改(非root用户需使用1024-65535以上未被使用的端口)

sudo systemctl daemon-reload
sudo systemctl enable qbittorrent-nox
sudo systemctl start qbittorrent-nox

修改web访问用户及密码

使用8090端口访问qbittorrent web页面,默认用户admin,密码adminadmin

在tools-options-Web UI中找到Authentication,修改username及password。

Windows 10 下使用wsl2编译Openwrt

装备环境-准备并安装wsl

  • 启用wsl

    使用powershell或windows组建添加或删除启用wsl(Windows Subsystem Linux)及虚拟机平台(VirtualMachinePlatform)

    powershell:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

    windows组件:

    在windows组件中勾选wsl及VirtualMachinePlatform即可

    使用wsl2依赖于VirtualMachinePlatform,如使用wsl v1无需启用该组件

  • 安装wsl2并安装linux发行版本

    使用wsl2需要升级wsl内核,下载并安装wsl内核,然后到microsoft商店安装linux发行版本(如ubuntu)。

编译openwrt

  • 迁移wsl发行版本(系统分区空间充足的可忽略)

    获取LxRunOffline对系统中wsl发行版本进行目录迁移。

    1. 查看wsl发行版本

      lxrunoffline l

      Ubuntu

    2. 迁移wsl发行版本目录

      lxrunoffline m -n Ubuntu -d d:\test
    3. 确认转移

      lxrunoffline di -n Ubuntu

      d:\test

  • 启用windows大小写区分特性

    fsutil.exe file setCaseSensitiveInfo d:\test enable

    在启用大小写区分前写入的数据保持原有特性,新写入文件才拥有大小写区分特性

  • 获取openwrt源码开始编译

    将openwrt源码拉取到wsl用户目录,执行编译即可

    $ make menuconfig
    $ make V=s

tomcat 修改web端口及时区

默认web端口

修改conf/server.xml, Connector port

 <Connector port="8088" protocol="HTTP/1.1" 
              connectionTimeout="20000"               
              redirectPort="8443" />

时区

修改bin/catalina.sh,JAVA_OPTS中添加 -Duser.timezone=GMT+08

JAVA_OPTS="$JAVA_OPTS -Duser.timezone=GMT+08 $JSSE_OPTS"

openwrt 无法找到共享库libgcc_s.so.1

出现这个问题是今天在安装某个ipk包,所依赖的libgcc由于系统已存在,所以将其从/lib下移至/root/中,随后发现大部分命令依赖于libgcc导致无法使用。好在export正常工作,将LD_LIBRARY_PATH设置为libgcc所在目录/root,使其他工具正常使用。

export LD_LIBRARY_PATH=/root

 

virt-manager

无法创建虚拟网络:Failed to initialize a valid firewall backend

安装ebtables、dnsmasq,重启libvirtd

##debian
apt install ebtables dnsmasq

##arhch
pacman -S ebtables dnsmasq

 

sony遥控器

一、SONY的机型不需任何设定就能够使用装上电池就能直接遥控电视机不过要测试一下按键相关对应的功能(登入后即可检视图片)

二、输入品牌代码 (留邮箱地址向客服索取)

1)按住SET键3秒直到灯亮起,然后同时按下要设定的组态键(如DVD)
(2)输入品牌代码
如果不想看那密密麻麻的品牌代码表,也可以上官网查询

三、自动搜寻法
(1)打开要遥控的机器电源,将遥控器对准机器
(2)按住SET键3秒直到灯亮起,然后同时按下要设定的组态键(如AMP)
(3)依序键入9、2、2,SET灯会闪3下
(4)按住PLAY键直到机器电源关闭再放开
(5)按下方向键中间的确定键完成设定(试着用这方式搜寻MOD,虽然MOD的遥控讯号灯有亮但是最终并没有关闭电源,所以MOD无法用此方法设定)

四、一对一学习,也是最实用的功能 (一定要使用全新电池, 不要使用充电电池之类的旧电池)
(1)将要学习的遥控器面对面放置约3~8cm

(2)按住SET键3秒直到灯亮起,然后同时按下方向键中间的确定键
(3)依序键入9、8、8,SET灯会闪3下
(4)按下要设定的组态键(如CBL),组态灯会亮起

(5)按下要学习的按键,SET灯会闪1下 (要学习长按的时候请长按) (第5或第6步不行,或异常退出的都是电量不足引起的,请换全新电池)
(6)在要被学习的遥控器按下要学习的键,学习成功SET灯会闪3下,然后组态键的灯会熄灭 (要学习长按的时候请长按)
只要重复(4)~(6)的步骤就可以完成所有按键设定
建议在设定前心里先有个谱想想哪个要对应哪个按键
不然设定时会有点手忙脚乱,按错或过了30秒又要重按一次步骤(1)~(3)

成功地完成MOD遥控器的设定了热血

※如过要设定功能给组态键,只要把步骤(4)、(5)改为按住组态键3秒
Ex:把切换讯源的功能指定给DVD组态键
那遥控器按下DVD时就可以同时切换讯号到DVD

取消单一按键功能记忆:
(其实重新学一次复盖原来设定也可以,取消是让它变成无功能按键)
(1)按住SET键3秒直到灯亮起,然后同时按下方向键中间的确定键
(2)依序键入9、0、4,SET灯会闪3下
(3)按下要取消的组态(如CBL),组态灯会亮起
(4)按下要取消功能的按键,SET灯会闪3下表示取消成功

取消一个组态下的所有按键功能记忆:
(1)按住SET键3秒直到灯亮起,然后同时按下方向键中间的确定键
(2)依序键入9、0、5,SET灯会闪3下
(3)按下要取消的组态(如CBL),SET灯会闪3下表示取消成功

所有功能回复出厂默认值
(1)按住SET键3秒直到灯亮起,然后同时按下方向键中间的确定键
(2)依序键入9、0、0
(3)按下方向键中间的确定键,SET灯会闪3下表示设定完成(登入后即可检视图片) PS:连续指令设定方法:
(1)按住SET键3秒直到灯亮起,然后同时按下方相键中间的确定
(2)键入9、8、1,SET灯会闪3下
(3)按一下要设定的SYSTEM CONTROL键(遥控器最下面的1、2、3、4)
(4)输入要设定的连续指令
(5)设定完成后按一下SET键,SET灯会闪3下表示设定完成
取消方式:
(1)重复上列(1)、(2)
(2)按住要取消功能的SYSTEM CONTROL键3秒,SET灯会闪3下表示取消成功

openmediavault php无法运行的问题

根据官方文档的指引下安装openmediavault,一路来到apt安装软件包的步骤,php-fpm无法启动便无法继续后续,如下:


Apr 13 04:42:36 bananapim3 systemd[1]: Starting The PHP 7.3 FastCGI Process Manager...
Apr 13 04:42:36 bananapim3 php-fpm7.3[27202]: [13-Apr-2020 04:42:36] ERROR: unable to bind listening socket for address '/run/php/php7.3-fpm.sock': No such file or directory (2) 阅读更多 openmediavault php无法运行的问题