阿里云的linux下硬盘名称为/dev/vda
*注意阿里云的安全组建议开放任意协议和端口,任意IP允许访问
*安装完ROS:chr-6.39.2.img版本
内网网卡为ether1
外网网卡为ether2
wget http://download2.mikrotik.com/routeros/6.39.2/chr-6.39.2.img.zip -O chr.img.zip &&
gunzip -c chr.img.zip > chr.img &&
mount -o loop,offset=33554944 chr.img /mnt &&
ADDRESS0=ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1 &&
ADDRESS1=ip addr show eth1 | grep global | cut -d' ' -f 6 | head -n 1 &&
GATEWAY0=ip route list | grep '10.0.0.0/8' | cut -d' ' -f 3 &&
GATEWAY1=ip route list | grep default | cut -d' ' -f 3 &&
echo "/ip address add address=$ADDRESS0 interface=[/interface ethernet find where name=ether1]
/ip address add address=$ADDRESS1 interface=[/interface ethernet find where name=ether2]
/ip route add dst-address=10.0.0.0/8 gateway=$GATEWAY0
/ip route add dst-address=100.64.0.0/10 gateway=$GATEWAY0
/ip route add dst-address=172.16.0.0/12 gateway=$GATEWAY0
/ip route add gateway=$GATEWAY1
" > /mnt/rw/autorun.scr &&
umount /mnt &&
echo u > /proc/sysrq-trigger &&
dd if=chr.img bs=1024 of=/dev/vda &&
reboot命令说明:
1、wget从ros官方下载CHR镜像到本地目录,并命名为chr.img.zip;建议wget下载。自己搭建http下载的地址,比如可以放到阿里云的oss下载路径。
http://lbros.oss-cn-hangzhou.aliyuncs.com
2、gunzip把chr.img.zip解压为chr.img
3、把chr.img镜像释放到/mnt目录下
4、抓取eth0的IP地址,并赋值参数为ADDRESS0
5、抓取eth1的IP地址,并赋值参数为ADDRESS1
6、抓取ip route里的10.0.0.0/8网关,并赋值参数为GATEWAY0
7、抓取ip route里的默认网关,并赋值参数为GATEWAY1
8、echo后面的为ros里的命令,ROS的内网网卡赋值内网IP,外网网卡赋值外网IP,并设置默认网关以及到阿里云的局域网段的网关,
阿里云的局域网有三个段分别是10.0.0.0/8,100.64.0.0/10,172.16.0.0/12
并赋值给/mnt/rw/autorun.scr,这里可以干好多事情,大家自由发挥
9、umount /mnt,卸载已经加载的文件系统/mnt
10、echo u > /proc/sysrq-trigger 立即重新挂载所有的文件系统为只读
11、dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
12、reboot重启机器
Ucloud 云服务器常用安装ROS脚本
境外专用
wget http://download2.mikrotik.com/routeros/6.43.1/chr-6.43.1.img.zip -O chr.img.zip && \
gunzip -c chr.img.zip > chr.img && \
mount -o loop,offset=33554944 chr.img /mnt && \
ADDRESS0=ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1 && \
GATEWAY0=ip route list | grep default | cut -d' ' -f 3 && \
echo "/ip address add address=$ADDRESS0 interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY0
" > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
reboot境内专用
wget --no-check-certificate https://comtk.cn/chr-6.43.1.img.zip -O chr.img.zip && \
gunzip -c chr.img.zip > chr.img && \
mount -o loop,offset=33554944 chr.img /mnt && \
ADDRESS0=ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1 && \
GATEWAY0=ip route list | grep default | cut -d' ' -f 3 && \
echo "/ip address add address=$ADDRESS0 interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY0
" > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
reboot
]]>1.Docker无法启动问题
docker logs -f 6b56126963dc21cdc515d6c758f1d949c55f203d36542b27e360ddbc556ae80a
2022-06-15T05:34:33.902Z Server Listening on http://0.0.0.0:51821
2022-06-15T05:34:33.903Z WireGuard Loading configuration...
2022-06-15T05:34:33.905Z WireGuard Configuration loaded.
2022-06-15T05:34:33.905Z WireGuard Config saving...
2022-06-15T05:34:33.906Z WireGuard Config saved.
$ wg-quick down wg0
$ wg-quick up wg0
Error: Command failed: wg-quick up wg0
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.8.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] iptables -t nat -A POSTROUTING -s 192.0.2.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
modprobe: can't change directory to '/lib/modules': No such file or directory
modprobe: can't change directory to '/lib/modules': No such file or directory
iptables v1.8.3 (legacy): can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
[#] ip link delete dev wg0
at ChildProcess.exithandler (child_process.js:383:12)
at ChildProcess.emit (events.js:400:28)
at maybeClose (internal/child_process.js:1058:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:293:5) {
killed: false,
code: 3,
signal: null,
cmd: 'wg-quick up wg0'
}解决方案
modprobe ip_tables && modprobe iptable-nat2.Upgrade Linux Kernel of CentOS 8
dnf -y update
uname -r
dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
dnf makecache
dnf --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml
dnf --enablerepo="elrepo-kernel" install -y kernel-ml
reboot
uname -r

yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate dokcer-logrotate docker-engin御载docker-ce(ce代表社区版)
yum remove docker-ce docker-ce-cli containerd.io删除docker资源
rm -rf /var/lib/docker2、安装依赖包
yum install -y yum-utils3、设置镜仓库(默认是国外仓库,下载非常慢)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo4、更新yum
yum makecache5、安装docker
yum install docker-ce docker-ce-cli containerd.io如果不想安装最新版本的docker,想安装指定版本,可以这样:
先查询出docker有哪些版本
yum list docker-ce --showduplicates | sort -r安装指定版本
sudo yum install docker-ce-<version_string> docker-ce-cli-<version_string> containerd.io比如,安装18.09.1版本:
sudo yum install docker-ce-18.09.1 docker-ce-cli-18.09.1 containerd.io6、启动docker
sudo systemctl start docker查看是否启动成功
docker version7、开机自动启动docker
systemctl enable dockerDocker官方的一键安装命令,适用于CentOS / Debian / Ubuntu系统
curl -s https://get.docker.com/ | sh
或
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
]]>