UML 环境下的内核:
请在部署 UML 前仔细阅读主机商的 Terms of Service 和 Acceptable Usage Policy ,以防被封禁主机,由此带来的损失由读者本人承担。 树立国人良好形象,切勿随意争议。
前言
首先要提醒一下 如果本身自己的 OpenVZ 太低配的话,那么 user-mode linux 跑起来会很艰难:最少 512MB RAM 以上才考虑吧, ( 注:评论里有访客反馈在 128M 的 NAT 上也跑起来了) 建议配置是 1G RAM 。因为现时 user-mode linux 不支援多核心处理,所以 CPU 数量一个就够了
user-mode linux 相等放在 VPS 上开一台小小的 virtual machine ,不过不建议用这台 virtual machine 放一些重要的资料,毕竟 user-mode linux 只是设计用来测试新 kernel 的功能,论稳定度还是没有正常系统好
先去 control panel 打开 TUN/TAP 的功能,如果是 SolusVM 的话通常 setting 就可以看到 TUN/TAP 的设定
前置安装
apt-get install e2fsprogs uml-utilities screen
Host OpenVZ 准备网路:以下都要在 sudo 下进行
ip tuntap add tap0 mode tap
ip addr add 10.0.0.1/24 dev tap0
ip link set tap0 up
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
设置 packet forwarding
先留下 port 22 给自己作为 ssh 连线之用
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
接下来其余的 traffic 都可以交给即將出现的子系统
iptables -t nat -A PREROUTING -i venet0 -j DNAT --to-destination 10.0.0.2
如果不想把所有 port 都交给子系统的话,可以这样:
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 10000:20000 -j DNAT --to-destination 10.0.0.2
iptables -t nat -A PREROUTING -i venet0 -p udp --dport 10000:20000 -j DNAT --to-destination 10.0.0.2
把 10000 到 20000 交给子系统 其他保留给 Host
可以离开 sudo 了,下载预先设定好的内核,然后解压缩
wget http://soft.91yun.org/uml/32/uml.tar.xz #32 位系统下载该压缩包
wget http://soft.91yun.org/uml/64/uml.tar.xz #64 位系统下载该压缩包
tar xvJf uml.tar.xz
cd uml # 即最新版本解压的文件夹,注意看上一行解压缩的路径
解压缩开的內有两个是文件:一个是 vmlinux (kernel) ,一个是 rootfs (filesystem image) ,而整个最简单系统就是放在 rootfs 內,这个系统为了方便,已经设定好网路设定,想要改的话只要打开 /etc/network/interfaces 就好。
因为 rootfs 一开始只有 300MB 放了系统就几乎没容量,先扩大 image 的容量吧:
resize2fs rootfs 5G
不一定是 5G ,可以换成你喜欢的大小。有的时候要运行下 e2fsck -f rootfs
打开 user-mode linux
./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m
256m 是分配给 user-mode linux 的 RAM 大小,如果要跑梯子的话,还是建议有 256m 为佳,这就是为什么会建议有 1GB RAM 的原因,如果分配太多 RAM 给 user-mode linux ,那么 Host 就跑不动了,但如果分配太少 RAM 给 user-mode linux ,那么 user-mode linux 就会很容易当机。
打开后先等一下,等到出现以下的內容
Virtual console 3 assigned device '/dev/pts/1'
Virtual console 4 assigned device '/dev/pts/2'
Virtual console 5 assigned device '/dev/pts/3'
Virtual console 6 assigned device '/dev/pts/4'
Virtual console 2 assigned device '/dev/pts/5'
Virtual console 1 assigned device '/dev/pts/6'
/dev/pts/X 就是 user-mode linux 放 virtual console 的地方,隨便记下来一个,这个 terminal 先不要关( 注:如果想关掉 ssh 后继续保持 uml 的运行,请看下面 tips 的第二条。 )
打开新的 terminal 开新的 ssh 到机器
screen /dev/pts/1
这时应该是发现 terminal 什么都没有,只要按一下 Enter ,就会出现登入提示了
login 是 root
而密码是 91yun.org
在登入之后记得要改密码
在进入之后会发现 …. 这个系统真的什么都没有,连 python 都没有!这样连 SSR 也跑不起来呀!
不过可以先跑一下指令
sysctl net.ipv4.tcp_available_congestion_control
看到以下这段就代表有 BBR 了
net.ipv4.tcp_available_congestion_control = bbr reno cubic highspeed
不论是怎样还是先 update 一下 apt 吧
apt update
如果要快速测试,可以先安装 V2Ray 比较快捷
V2Ray 可以作为多功能平台使用,使常用的 shadowsocks 也包含其中
这边有关於 v2ray 的教程 https://toutyrater.github.io/v2ray-guide-pages/
可以把 SS 开起来使用
apt install curl zip unzip
bash <(curl -L -s https://install.direct/go.sh)
systemctl start v2ray
打开 /etc/v2ray/config.json ,很快就可以看到
"inbound": {
"port": 20722,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b4b413e4-24b9-4bc9-95a6-93f4bef419bc",
"level": 1,
"alterId": 64
}
]
}
当中 20722 就是 port , id 是密码
如果想要用 SSR 的话
那可能要耐心一点
把 python git
等等先安装好
要离开的话 user-mode linux
的话
按 ctrl-a d
就可以离开了
要再进去的话就用
screen -r
这样就会例出所有 Detached 的 screen
例如 :
There are several suitable screens on:
1007.pts-7.localhost (02/24/17 10:59:14) (Detached)
这时只要用
screen -r 1007.pts-7.localhost
就可以重新进入到离开的 screen 。如果想要关掉 user-mode linux 的话,建议还是用 screen 进入到 user-mode linux ,用 shutdown now 去关掉,不建议在 host 上用 kill 把 uml process 关闭,因为这等同於 hard shutdown
tips:
- 暂时 user-mode linux 並没有多核心支援,所以就算 host 有多於一个核心也不会对 user-mode linux 有影响
- 利用
nohup ./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m &disown
可以把 user-mode linux 放到背景,只要用
tail ./nohup.out
就可以看到 user-mode linux
的输出
没错 一台 VZ 可以开多台 user-mode linux ,不过如果本身机器不够强,就不要乱试了。
可以为 user-mode linux 安一个 openssh ,那么就可以由 Host 上传文件到 user-mode linux 了, user-mode linux 也可以连回去 host 拿文件
完成!作者另外给了几篇文章,对于折腾党,可以看看:
怎样从零开始盖 uml 不过只有 KVM 这种有 loop dev 的 才可以用!
最后,再次感谢 电报群群友 @allient neko !
并送上一个部署了 BBR 后,辣鸡机房(亚特兰大 Colocrossing 机房)看 1080p 的照片。
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。