蘭雅sRGB de8ce89e41 腾讯云248上海 安装PVE 7.1-5 成功, NAT小鸡批量端口转发也搞定 3 년 전
..
README.md dc07827ae9 Update README.md 4 년 전
autonet.sh 8a14bbe775 Update autonet.sh 3 년 전
config.sh fd51e1e7b1 Oracle VM VirtualBox 安装虚拟机 Debian 10 挖坑填坑笔记 4 년 전
delnat.sh de8ce89e41 腾讯云248上海 安装PVE 7.1-5 成功, NAT小鸡批量端口转发也搞定 3 년 전
emby2url.py 409de8d4be Add files via upload 4 년 전
nat.sh de8ce89e41 腾讯云248上海 安装PVE 7.1-5 成功, NAT小鸡批量端口转发也搞定 3 년 전
netboot.xyz 5f04ebce40 Create netboot.xyz 3 년 전
nfsdir.md acf4118186 黑五变态机挂载大硬盘 4 년 전
sskcp.sh 211c059a4c Arch 和 Debian系统 能添加到开机服务 4 년 전
virmach_vnc.md 46e84f0c50 Update virmach_vnc.md 4 년 전
webbench.md 8bb3d79f36 Update webbench.md 4 년 전

README.md

Oracle VM VirtualBox 安装虚拟机 Debian 10 挖坑填坑笔记

VirtualBox 安装虚拟机 Debian 系统 省略

  • 下载 mini.iso 网络安装,或者 debian-10.5.0-amd64-xfce-CD-1.iso 图形GUI安装

  • 注意: 选择中文语言,使用中国大陆镜像,推荐中科大软件源,如果选择默认的官方站速度会很慢;即使选对中科大镜像源在安装过程中 还是会从官方下载证书文件卡住,可以ctrl+alt+f4 切换到后台,ctrl+c停止从官方源下载资源包,不影响系统安装。安装软件选择SSH 方便远程登陆,不要选择xfce或者KDE图形桌面,安装完成后,按下面修改 软件源

  • sources.list 修改 apt 中科大软件源 配置

    # vim /etc/apt/sources.list
    
    deb http://mirrors.ustc.edu.cn/debian/ buster main
    deb-src http://mirrors.ustc.edu.cn/debian/ buster main
    
    deb http://mirrors.ustc.edu.cn/debian-security buster/updates main
    deb-src http://mirrors.ustc.edu.cn/debian-security buster/updates main
    
    deb http://mirrors.ustc.edu.cn/debian/ buster-updates main
    deb-src http://mirrors.ustc.edu.cn/debian/ buster-updates main
    

设置时区为北京时间

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone	

dd 命令是备份Linux系统,或者是linux系统杀手

  • 所以建立虚拟vmdk磁盘只分配了2G,方便DD,或者写U盘镜像

    #  dd指令 语法格式	
    dd  [option] if=file:输入文件名,缺省为标准输入  of=file:输出文件名,缺省为标准输出	
    测试纯写入性能	
    dd if=/dev/zero of=test bs=8k count=10000 oflag=direct	
    测试纯读取性能	
    dd if=test of=/dev/null bs=8k count=10000 iflag=direct
    
    root@debian:~$ fdisk -l
    
    Disk /dev/sda: 2 GiB, 2147483648 bytes, 4194304 sectors
    Disk model: VBOX HARDDISK
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x4ea1acbd
    
    Device     Boot Start     End Sectors Size Id Type
    /dev/sda1  *     2048 4192255 4190208   2G 83 Linux
    
    
    Disk /dev/sdb: 4 GiB, 4294967296 bytes, 8388608 sectors
    Disk model: VBOX HARDDISK
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    root@debian:~$ dd if=/dev/sda  of=/dev/sdb
    记录了4194304+0 的读入
    记录了4194304+0 的写出
    2147483648 bytes (2.1 GB, 2.0 GiB) copied, 91.3932 s, 23.5 MB/s
    
    
    root@debian:~$ mkfs.ext4 /dev/sdb1
    
    mke2fs 1.44.5 (15-Dec-2018)
    /dev/sdb1 contains a ext4 file system
        last mounted on / on Tue Sep 15 20:33:12 2020
    Proceed anyway? (y,N) y
    Creating filesystem with 523776 4k blocks and 131072 inodes
    Filesystem UUID: ebe2ce7e-1543-43a7-8df9-0e7596448227
    Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    
    mkdir /root/d
    mount /dev/sdb1 /root/d
    
    root@debian:~$ df -h
    文件系统        容量  已用  可用 已用% 挂载点
    udev            102M     0  102M    0% /dev
    tmpfs            24M  3.0M   21M   13% /run
    /dev/sda1       2.0G  1.3G  621M   67% /
    tmpfs           116M     0  116M    0% /dev/shm
    tmpfs           5.0M     0  5.0M    0% /run/lock
    tmpfs           116M     0  116M    0% /sys/fs/cgroup
    tmpfs            24M     0   24M    0% /run/user/0
    /dev/sdb1       2.0G  6.0M  1.9G    1% /root/d
    
    root@debian:~$ dd  if=/dev/sda | gzip > /root/d/image.gz
    记录了4194304+0 的读入
    记录了4194304+0 的写出
    2147483648 bytes (2.1 GB, 2.0 GiB) copied, 102.968 s, 20.9 MB/s
    
    

VirtualBox 中如何使用U盘

以 管理员身份 打开命令提示符 CMD 查看一下U盘的 DeviceID【磁盘标识盘】:

wmic diskdrive list brief

使用 VBoxManage 命令生成vmdk文件 usb.vmdk

cd "C:\Program Files\Oracle\VirtualBox"

VBoxManage.exe internalcommands createrawvmdk -filename "C:\VPC\usb.vmdk" -rawdisk \\.\PhysicalDrive3

RAW host disk access VMDK file C:\VPC\usb.vmdk created successfully.

===   usb.vmdk  文件内容 ===

# Disk DescriptorFile
version=1
CID=db9f2dfb
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 8036352 FLAT "\\.\PhysicalDrive3" 0

# The disk Data Base 
#DDB

ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="7972"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="8dcce260-7a5f-462c-878f-01786958e77f"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="00000000-0000-0000-0000-000000000000"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"

使用 VBoxManage 将vmdk文件转换成IMG文件

  • 语法: VBoxManage clonehd 源文件.vmdk 目标文件.img --format RAW

    VBoxManage clonehd  debian-disk001.vmdk   debian10.img --format RAW
    
    0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
    Clone medium created in format 'RAW'. UUID: 76294339-5652-45d9-97e0-eab5688aa2aa
    

Debian 10 默认安装了N多 realtek intel 等主要硬件厂商网卡

ls /lib/modules/4.19.0-10-amd64/kernel/drivers/net/ethernet

3com     alteon    atheros   chelsio  emulex     huawei   mellanox   natsemi    packetengines  sfc    sun     xircom
8390     amazon    broadcom  cisco    fealnx.ko  intel    micrel     neterion   qlogic         silan  tehuti
adaptec  amd       brocade   dec      fujitsu    jme.ko   microchip  netronome  rdc            sis    ti
agere    aquantia  cavium    dlink    hp         marvell  myricom    nvidia     realtek        smsc   via

lspci | grep Ethernet

00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)

lsmod
e1000                 155648  0

Debian 10 迁移系统网卡不能自动获取IP修改方法

ip addr

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:d3:49:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.111/24 brd 192.168.1.255 scope global dynamic enp0s3

cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp

###  --------修改成固定IP------------- ####
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
  address 192.168.1.111
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameserver 8.8.8.8

vim /etc/network/interfaces
### 修改interfaces中的网卡名字enp0s3同 ip addr获得的网卡名字相同

systemctl restart networking.service

# debian系统下重启停止网卡命令
ifdown enp0s3
ifup enp0s3

autonet.sh 自动修改interfaces 网卡自动加载

lspci | grep Ethernet
ni=$(ip addr | grep enp | head -n 1 | awk -F ': '  '{print $2}')
sed -i "s/enp[a-zA-Z0-9]*/${ni}/g"  /etc/network/interfaces
ifup $ni

debian使用 parted 工具 调整磁盘分区

apt install parted

root@debian:~$ partx /dev/sda
NR START     END SECTORS SIZE NAME UUID
 1  2048 4192255 4190208   2G      4ea1acbd-01

root@debian:~$ parted

(parted) help
	print     显示分区表,可用设备,可用空间,所有找到的分区或特定分区
	quit                     退出程序

	resizepart NUMBER END    调整分区号
	rm NUMBER                删除分区

其他详细命令
https://www.howtoing.com/parted-command-to-create-resize-rescue-linux-disk-partitions/

Vbox增加虚拟磁盘大小方法

  • VBoxManage 只支持VDI格式,不支持vmdk格式,所以要先转换磁盘格式VDI,在扩容

    VBoxManage clonehd  debian.vmdk  debian.vdi  --format VDI
    
    VBoxManage modifyhd  debian.vdi  -resize 8192
    
  • 使用 parted 工具 调整磁盘系统分区后,df -h 空间没有增大,需要 *resize2fs /dev/sda1 调整文件系统大小

    root@debian:~$ parted /dev/sda
    
    (parted) print free
    
    Number  Start   End     Size    Type     File system  Flags
        32.3kB  1049kB  1016kB           Free Space
    1      1049kB  8590MB  8589MB  primary  ext4         boot
    
    
    root@debian:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1       2.0G  1.4G  486M  74% /
    
    root@debian:~$ resize2fs /dev/sda1
    resize2fs 1.44.5 (15-Dec-2018)
    Filesystem at /dev/sda1 is mounted on /; on-line resizing required
    old_desc_blocks = 1, new_desc_blocks = 1
    The filesystem on /dev/sda1 is now 2096896 (4k) blocks long.
    
    root@debian:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda1       7.9G  1.4G  6.2G  19% /
    
    

linux 关闭swap

# 禁用swap
 swapoff -a

# 启用swap
 swapon -a

# 查看交换分区状态
 free -m

debian 使用 ntfs-3g 挂载读取Windows NTFS系统文件

  apt search ntfs-3g     # 搜索工具在哪个安装包
  apt install  ntfs-3g

	使用语法:mount  -t  ntfs-3g  分区设备文件名    挂载点
	
	查找分区的设备文件名:fdisk -l
	
	执行挂载:mount  -t ntfs-3g /dev/sdb1  /mnt/usb
	
	访问数据:ls -l  /mnt/usb
	
	卸载:umount  /mnt/usb
  
  umount -a  全卸载挂载

debian buster不能启动docker守护进程(dockerd)的解决办法

iptables v1.8.2 (nf_tables): Chain already exists 解决办法

  • 故障原因是Docker用iptables初始化NAT网络,而Debian buster使用 nftables 而不是 iptables,导致dockerd不能正常完成NAT初始化,出错退出。
  • 处理方法是调用update-alternatives强制Debian用iptables而不是nftables。

    sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
    # for ipv6
    sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
    

Debian 语言设置

  • vim /etc/default/locale

    # 英文显示
    LANG=en_US.UTF-8
    
    # 中文显示
    LANG="zh_CN.UTF-8"
    LANGUAGE="zh_CN:zh"
    

DEBIAN LOCALE LANGUAGE SETTINGS & Modify Interfaces

#########   Debain config.sh  ###########
#!/bin/bash

en_US()
{
	cat <<EOF >/etc/default/locale
LANG=en_US.UTF-8
EOF
	echo -e "Please log in again on Debian tty1"
}

zh_CN()
{
	cat <<EOF >/etc/default/locale
# 中文显示
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:zh"
EOF

	echo -e "Please log in again on Debian tty1"

}

autonet()
{
# 自动修改interfaces 网卡自动加载
lspci | grep Ethernet
ni=$(ip addr | grep enp | head -n 1 | awk -F ': '  '{print $2}')
sed -i "s/enp[a-zA-Z0-9]*/${ni}/g"  /etc/network/interfaces
ifup $ni

}

# 设置菜单
start_menu()
{
    echo -e ":: DEBIAN LOCALE LANGUAGE SETTINGS & Modify Interfaces"
    read -p ":: Please enter the number <1>:English  <2>:Chinese :: <8> AutoModify Interfaces  "  num_x
    case "$num_x" in
        1)
        en_US
        ;;
        2)
        zh_CN
        ;;
        8)
        autonet
        ;;
		esac
}
start_menu

#################################################

linux 中文乱码

  • 乱码 '$'\351\243\236\345\210\251

    首先查看系统对中文的支持
    locale -a | grep zh_CN
    
    输出样例如下
    zh_CN.gbk
    zh_CN.utf8
    
    vim ~/.bash_profile
    
    文件末尾添加
    
    export LANG="zh_CN.UTF-8"
    export LC_ALL="zh_CN.UTF-8"
    

将VirtualBox里安装的虚拟机在后台运行方法

::  将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)

CD  "C:\Program Files\Oracle\VirtualBox\"
.\VBoxManage.exe  startvm  debian --type headless


::  将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)

CD  "C:\Program Files\Oracle\VirtualBox\"
.\VBoxManage.exe  startvm  debian --type headless


将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)
由于工作和学习需要,经常要开一个虚拟机开测试和开发,虚拟机选择Oracle公司的VirtualBox,经常开着这个窗口感觉有些浪费资源,这样隐藏窗口就在需求了。

将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)

开始=>运行=>cmd进入DOS窗口
d:
cd  D:\Program Files\VirtualBox
D:\Program Files\VirtualBox> .\VBoxManage.exe  startvm  master --type headless
这在Linux系统和MAC上同样适用,只要替换成相应的命令即可

 

解释:其中 master 是这个虚拟机的名称

Headless模式是系统的一种配置模式。在该模式下,系统缺少了显示设备、键盘或鼠标。
Headless模式针对在该模式下工作,尤其是服务器端程序开发者。因为服务器(如提供Web服务的主机)往往可能缺少前述设备,但又需要使用他们提供的功能,生成相应的数据,以提供给客户端(如浏览器所在的配有相关的显示设备、键盘和鼠标的主机)。

Debian中匿名挂载Samba服务器中的目录

  • 1、在Debian中安装Samba的相应组件:

    apt install cifs-utils

Debian中匿名挂载Samba服务器中的目录

  • 2、查看其上已经共享的目录,假设Samba服务器的IP地址为192.168.1.135

    smbclient -L 192.168.1.135 -N

Debian中匿名挂载Samba服务器中的目录

其中-N即为匿名的意义。

  • 3、在本地新建一个目录用于挂载

    mkdir /mnt/samba

Debian中匿名挂载Samba服务器中的目录

  • 4、使用mount挂载:

    mount -t cifs //192.168.1.135/netlogon /mnt/samba/ -o guest

Debian中匿名挂载Samba服务器中的目录

其中-t cifs意义为使用SMB文件系统,-o guest意义为匿名访问,即使用guest来宾账户,之后不会再要求输入密码。 命令执行完毕后即将远程主机上的netlogon 目录挂载到本地的/mnt/samba目录。

安装EMBY 打造多媒体中心,刮削GD网盘影视库,在本地做影视索引服务

  • 下载最新版本的 Emby Server,当前版本为 4.4.3.0,新版查阅地址:https://emby.media/linux-server.html

    # 下载Emby安装包和安装
    wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.4.3.0/emby-server-deb_4.4.3.0_amd64.deb
    dpkg -i emby-server-deb_4.4.3.0_amd64.deb
    
    
    #  使用网页打开 emby 服务器  配置EMBY
    #  http://192.168.1.111:8096/
    
    # 停止 emby 服务
    systemctl stop  emby-server
    
    # 恢复emby刮削数据
    sudo rm -rf /var/lib/emby/*
    cd /var/lib && tar -xvf "/mnt/EmbyMedia/EmbyData/emby200925.tar
    sudo chown -R emby:emby /var/lib/emby
    
    # 重新启动 emby 服务
    systemctl start emby-server
    systemctl status emby-server
    
    

fstab 使用UUID自动挂载emby数据盘

#  挂载 emby 数据盘
mkdir /mnt/emby -p
mount /dev/sdb5 /mnt/emby/
chown -R emby:emby /mnt/emby/


#  挂载玩客云samba
mount -t cifs //192.168.1.90/1aab /mnt/smb/ -o guest
cd /mnt/emby
tar xf /mnt/smb/onecloud/tddownload/emby201003.tar

#  修改emby数据到数据盘 
ln -s /mnt/emby/var/lib/emby   /var/lib/emby
chown -R emby:emby /var/lib/emby
systemctl start emby-server

#  fstab 使用UUID自动挂载  emby 数据盘
cat /etc/fstab  #查看当前系统已经存在的挂载信息
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=8a2aa399-0f5a-4cc1-bc77-5cb008f9a754 /               ext4    errors=remount-ro 0       1
UUID=231a3535-73c5-4245-8e3e-bf546f034d98 /mnt/emby/      ext4    defaults          0       2

blkid  ### 查看磁盘分区的 UUID
blkid /dev/sdb5
/dev/sdb5: UUID="231a3535-73c5-4245-8e3e-bf546f034d98" TYPE="ext4" PARTUUID="aeb779b9-05"

VirtualBox压缩VDI文件 VDI文件瘦身方法

  • 瘦身原理:操作系统删除文件,不会填充0,所以磁盘镜像不能释放空间,所以使用dd把剩余空间用zero全零填充,然后删除 free这个文件
  • 再用VBoxManage就能瘦身了;Vbox 建立镜像可以分配空间小点,也可以把系统盘和数据盘分开建立

    dd if=/dev/zero of=/free bs=1M
    rm /free
    
    cd "C:\Program Files\Oracle\VirtualBox\"
    VBoxManage modifyvdi  --compact  debian-disk.vdi
    

emby2url.py # 替换EmbyMedia路径到URL给PotPlayer播放视频

# python 读写剪切板内容
# pip3 install pywin32

import win32clipboard as w
import win32con
import os

def getText():
    w.OpenClipboard()
    d = w.GetClipboardData(win32con.CF_TEXT)
    w.CloseClipboard()
    return(d).decode('GBK')

def setText(aString):
    w.OpenClipboard()
    w.EmptyClipboard()
    w.SetClipboardText(aString)
    w.CloseClipboard()

# 获取剪贴板文本
url = getText()
print(url)

# 替换 EmbyMedia 路径 到URL 给PotPlayer播放视频
emby_path = "/mnt/EmbyMedia/"
http_url = "http://192.168.1.111/"

url = url.replace( emby_path , http_url )

# 把文本写回剪贴板
setText(url)
print(url)

# 调用系统暂停
os.system("pause")

使用rsync同步目录

同步命令:
rsync -avzP --delete root@{remoteHost}:{remoteDir} {localDir}

参数说明:
-a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件);
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息;

rsync -avzP --delete   [email protected]:/var/lib/emby   /var/lib/emby

apt upgrade 更新 grub 会把引导信息损坏, 可以使用下面 GRUB引导修复

grub-mkconfig -o /boot/grub/grub.cfg

grub-install /dev/sda

update-grub