BIOS 模式启动 DOS 系统
megarec -adplist #查看阵列卡编号
megarec -m0flash 0 2208_16.rom #写入2208的RAID卡ROM ,如果卡是正常的这一步跳过。
megarec -writesbr 0 sbrempty.bin
megarec -cleanflash 0
重启设置UEFI 模式启动进入 EFI Shell
fs0:
sas2flash -o -f 9207-8.bin -b mptsas2.rom # 刷入IT 直通固件
sas2flash -o -sasadd 50030480195exxxx #xxxx替换成任意 4 个数字
sas2flash -list #检查SAS Address地址和上面写入的是否一样
由于lsi2208fixer_changed.iso只有mptsas2.rom没有 bios 和 uefi 的 rom, 刷完系统只能直通硬盘没有 boot 引导。
阅读剩余部分...
IPv4 还能记住那几个保留的内网段 IP, IPv6太多完全没法玩, 配置设备的时候又不知道该咋写 IP段方便。
随机生成方案就简单了
https://simpledns.plus/private-ipv6
guestmount --add /tmp/linux-centos-stream_8-x86_64-gen2-v1.qcow2 --mount /dev/sda1 /mnt/
最早 kvm 虚拟机上线的时候就玩过, 当时嫌弃在这玩意挂载后大规模读写 IO 性能差, 就多数时候在用kpartx 命令。
dnf -y install --allowerasing https://mirror.rackspace.com/almalinux/almalinux-{release,gpg-keys,repos}-latest-9.x86_64.rpm
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync
按道理说横跳Rocky Linux应该也没问题, 最好 Centos 的版本旧一点好, 所以横跳前不建议 dnf update.
#!/bin/bash
BRIDGE="br0"
# ip -o route get to 8.8.8.8|awk '{ print "gateway:" $3 " netname:" $5" IP:" $7}'
NET_IFACE=$(ip -o route get to 8.8.8.8|awk '{ print $5}') #根据外网 ip 来判断网卡方法
#NET_IFACE=$(nmcli -t -f DEVICE,STATE device | grep ':connected' | head -n 1 | cut -d: -f1) #从第一个网卡的方式获取网卡名
IP4_ADDRESS=$(nmcli device show "$NET_IFACE" |grep "IP4.ADDRESS\[1\]" | awk '{ print $2}')
IP4_GATEWAY=$(nmcli -g IP4.GATEWAY device show "$NET_IFACE")
IP6_ADDRESS=$(nmcli device show "$NET_IFACE" |grep "IP6.ADDRESS\[1\]" | awk '{ print $2}')
IP6_GATEWAY=$(nmcli -g IP6.GATEWAY device show "$NET_IFACE"|sed 's/\\//g')
nmcli conn add type bridge con-name "$BRIDGE" ifname "$BRIDGE"
if [ $IP4_ADDRESS ] ; then
nmcli conn mod "$BRIDGE" ipv4.addresses $IP4_ADDRESS
nmcli conn mod "$BRIDGE" ipv4.gateway $IP4_GATEWAY
nmcli conn mod "$BRIDGE" ipv4.dns '8.8.8.8,1.1.1.1,1.2.4.8'
nmcli conn mod "$BRIDGE" ipv4.method manual
else
nmcli conn mod "$BRIDGE" ipv4.method auto
fi
if [ $IP6_ADDRESS ] ; then
nmcli conn mod "$BRIDGE" ipv6.addresses $IP6_ADDRESS
nmcli conn mod "$BRIDGE" ipv6.gateway $IP6_GATEWAY
nmcli conn mod "$BRIDGE" ipv6.method manual
else
nmcli conn mod "$BRIDGE" ipv6.method auto
fi
nmcli connection delete $NET_IFACE
nmcli conn add type ethernet slave-type bridge con-name "$NET_IFACE"-to-"$BRIDGE" ifname "$NET_IFACE" master "$BRIDGE"
systemctl restart NetworkManager
设置完成后网桥为 br0
原本的网卡名会变成类似eth0-to-br0
最好开着 ipmi 玩, 掉线了会比较蛋疼
mage forma |
Argument to qemu-img |
QCOW2 (KVM, Xen) |
qcow2 |
QED (KVM) |
qed |
raw |
raw |
VDI (VirtualBox) |
vdi |
VHD (Hyper-V) |
vpc |
VMDK (VMware) |
vmdk |
raw image.img 转 qcow2
qemu-img convert -f raw -O qcow2 image.img image.qcow2
vmdk 转 raw
qemu-img convert -f vmdk -O raw image.vmdk image.img
vmdk 转 qcow2
qemu-img convert -f vmdk -O qcow2 image.vmdk image.qcow2
dnf install solusvm-release -y
mv /etc/yum.repos.d/libguestfs-plesk.repo /etc/yum.repos.d/libguestfs-plesk.repo.bak
bash /usr/local/solusvm/tmp/update/php8_updater.sh
service svmstack-fpm8 restart
dnf -y install libguestfs-tools-c libguestfs* dhcp-server
ln -s /etc/dhcpd.conf /etc/dhcp/dhcpd.conf
从 centos7 升级到 8 再升级到 9, 无需重启系统也不用 kexec 切换内核。
就是中间过程比较曲折,尤其是在升级 8 的过程中的问题。
主要需要注意的地方是,UEFI 启动需要 shim-x64 和重新生成 grub.conf, 确定内核和IP 配置正确。
curl -k -i https://10.10.10.10:6767/command.php
最后确认 api 接口 php 输出不是 500 错误就成功了。
注意:Centos9 是用 UEFI 启动方式, 升级前请先确认,以免重启无法引导
由于 Centos9 是滚动更新所以VER=9.0-26参数需要查看http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/的 rpm
dnf upgrade --refresh -y
dnf remove -y $(dnf repoquery --unneeded)
dnf remove -y $(dnf repoquery --extras)
dnf autoremove -y
VER="9.0-26"
dnf install -y http://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/Packages/centos-{stream-release,stream-repos,gpg-keys}-${VER}.el9.noarch.rpm --allowerasing
dnf install -y https://dl.fedoraproject.org/pub/epel/{epel-release-latest-9.noarch.rpm,epel-next-release-latest-9.noarch.rpm}
dnf -y remove rxvt-unicode-terminfo
dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync
rpmdb --rebuilddb
dnf -y remove -y subscription-manager
dnf upgrade --refresh -y
dnf -y groupupdate "Core" "Minimal Install"
dnf -y install kernel* yum
rpm -qa | grep '\.el8' | xargs xargs rpm -e # 卸载
#grubby --default-kernel
grubby --set-default 0
dnf -y install grub2 grub2-efi* shim-x64 #centos9的 baseos 包里面是shim-x64-15-15.el8_2.x86_64.rpm
dnf -y reinstall grub2 grub2-efi-x64 shim-x64
grub2-mkconfig -o /boot/grub2/grub.cfg
#grub2-install /dev/sda #不适用于 uefi
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS #判断是 BIOS 还是 EFI
如果有dnf module @modulefailsafe 报错可以禁用或者不管
rm -rf /etc/dnf/modules.d/* /var/lib/dnf/modulefailsafe/* # 删掉即可
升级完成前确认网络配置以及系统内核引导全部正常后才能重启, 否则后续处理起来比较麻烦, 要挂救援系统操作。
阅读剩余部分...
gcc -std=gnu99 -static -g -O2 -static -o init init-init.o
/usr/bin/ld: 找不到 -lc
collect2: 错误:ld 返回 1
make[2]: *** [init] 错误 1
找了半天问 chatgpt 说是缺少glibc, 结果是缺glibc-static
yum install glibc-static -y
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
dnf install yarn nodejs -y
cd /home/path
yarn install
yarn build
有时候防攻击,在上游设定了 UDP 过滤导致 dns 无法解析, 这时候需要透过 正常能正常 UDP 通信IP的DNS 转发来解决这个问题。
可能需要在防火墙上对常用的几个 dns server ip 53 端口劫持到我们的转发服务器 53 端口。
Unbound
yum install unbound -y
cat>/etc/unbound/unbound.conf<<EOF
server:
interface: 0.0.0.0 # 监听所有接口
access-control: 0.0.0.0/0 allow # 允许所有来源的请求
local-data: "a.com. IN A 10.0.0.1" # 自定义解析记录
forward-zone:
name: "."
forward-addr: 1.1.1.1 # 上游 DNS 服务器
forward-addr: 8.8.8.8
EOF
systemctl start unbound
Dnsmasq
yum install dnsmasq -y
cat>/etc/dnsmasq.conf<<EOF
server=1.1.1.1 # 设置上游 DNS 服务器
server=8.8.8.8
address=/a.com/10.0.0.1 # 将 a.com 指定到 10.0.0.1
EOF
systemctl start dnsmasq
另外还有 bind和Knot DNS, 之前用过 DNSDIST 感觉不太好用。
阅读剩余部分...
docker pull vaultwarden/server:alpine #拉取镜像
docker create --name vw vaultwarden/server:alpine #创建容器vw
docker cp vw:/vaultwarden . #从容器vw里面复制 目录/vaultwarden 出来
docker cp vw:/web-vault .
docker rm vw #删除容器
进入容器
docker exec -it NAME /bin/bash
Names:
docker ps --format '{{.Names}}'
ID:
docker ps --format '{{.ID}}'
Image:
docker ps --format '{{.Image}}'
Command:
docker ps --format '{{.Command}}'
Created:
docker ps --format '{{.RunningFor}}'
Status:
docker ps --format '{{.Status}}'
Ports:
docker ps --format '{{.Ports}}'
查看容器 json 配置
docker container ls --format='{{json .}}'
查看所有 ID 和 NAME
docker ps --format '{{.ID}}\t{{.Names}}'
查看所有 IP
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
查看网桥
docker network inspect bridge
查看所有 docker 配置
docker inspect $(docker ps -aq)
更多细节查阅官方 https://docs.docker.com/reference/cli/docker/container/ls/
X86 32bit https://frippery.org/files/busybox/busybox.exe
X86 64bit https://frippery.org/files/busybox/busybox64u.exe
ARM 64bit https://frippery.org/files/busybox/busybox64a.exe
C:\path\to\busybox.exe sh -l #运行 shell 模式
官方网站 https://frippery.org/busybox/
github 项目地址https://github.com/rmyorston/busybox-w32
LXC这玩意和当年的 OpenVZ一模一样(ovz7)
没有自己的 kernel, 靠宿主内核启动系统, 用文件存储,最古老的时候是用文件夹存储。
查看可用系统模板
pveam available
下载导入系统模板
pveam download local ubuntu-24.04-standard_24.04-2_amd64.tar.zst
创建CT(管理 KVM 是 qm,这里是 pct)
pct create 999 local:vztmpl/debian-10.0-standard_10.0-1_amd64.tar.gz
查看 CT 配置内容
pct config 999
原文出处 https://pve.proxmox.com/wiki/Linux_Container
#下载安装Guest Agent 和 VSS Provider
wget "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-gt-x64.msi" -O C:\virtio-win-gt-x64.msi
wget "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win-guest-tools.exe" -O C:\virtio-win-guest-tools.exe
Start-Process "C:\virtio-win-guest-tools.exe" -ArgumentList "/S"
Start-Process msiexec.exe -ArgumentList '/i "C:\virtio-win-gt-x64.msi" /quiet /norestart' -Wait
#下载安装 CloudInit
wget "https://github.com/cloudbase/cloudbase-init/releases/download/1.1.6/CloudbaseInitSetup_1_1_6_x64.msi"-O "C:\CloudbaseInitSetup.msi"
Start-Process msiexec.exe -ArgumentList '/i "C:\CloudbaseInitSetup.msi" /quiet /norestart' -Wait
#下载安装 CloudInit配置文件
wget "https://raw.githubusercontent.com/thundervm/proxmox-windows-template/refs/heads/main/conf/cloudbase-init-unattend.conf" -O "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init-unattend.conf"
wget "https://raw.githubusercontent.com/thundervm/proxmox-windows-template/refs/heads/main/conf/cloudbase-init.conf" -O "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\cloudbase-init.conf"
wget "https://raw.githubusercontent.com/thundervm/proxmox-windows-template/refs/heads/main/conf/Unattend.xml" -O "C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml"
#设置virtio QEMU 的服务
cmd /c sc config "QEMU-GA" start=auto
cmd /c sc config "QEMU Guest Agent VSS Provider" start=auto
cmd /c net start "QEMU Guest Agent VSS Provider"
cmd /c net start "QEMU-GA"
#下载初始化windows的脚本 默认不启用
wget http://dl.kvm.la/windows/win11.txt -O C:\script.bat
#cmd /c "C:\script.bat"
#执行sysprep初始化
C:\Windows\System32\sysprep\sysprep.exe /generalize /oobe /unattend:"C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\Unattend.xml"
#清除下载文件
rm C:\virtio-win-guest-tools.exe
rm C:\virtio-win-gt-x64.msi
rm C:\CloudbaseInitSetup.msi
- 1
- 2
- 3
- 4
- ...
- 62
- »