本教程、UML镜像文件由91yun电报群群友@allient neko制作!特别感谢!为了尊重原作者,我们采取繁体中文发布!本人在Debian 8 64位下的OpenVZ测试成功(2.6.32-042stab116.2内核)。
UML环境下的内核:
请在部署UML前仔细阅读主机商的Terms of Service和Acceptable Usage Policy,以防被封禁主机,由此带来的损失由读者本人承担。树立国人良好形象,切勿随意争议。
前言
首先要提醒一下 如果本身自己的 OpenVZ 太低配的話,那麼user-mode linux 跑起來會很艱難:最少 512MB RAM 以上才考慮吧,(91yun小编注:评论里有访客反馈在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 的設定
前置安裝
1
|
apt-get install e2fsprogs uml-utilities screen
|
Host OpenVZ 準備網路:以下都要在sudo 下進行
1
2
3
4
5
|
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 連線之用
1
|
iptables -t nat -A PREROUTING -p tcp --dport 22 -j RETURN
|
接下來其餘的traffic 都可以交給即將出現的子系統
1
|
iptables -t nat -A PREROUTING -i venet0 -j DNAT --to-destination 10.0.0.2
|
如果不想把所有port 都交給子系統的話,可以這樣:
1
2
|
iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 10000:20000 --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 了,下載預先設定好的内核,然后解壓縮
1
2
3
4
|
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的容量吧:
1
|
resize2fs rootfs 5G
|
不一定是5G,可以換成你喜歡的大小。
打開 user-mode linux
1
|
./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 就會很容易當機。
打開後先等一下,等到出現以下的內容
1
2
3
4
5
6
|
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先不要關(91yun小编注:如果想关掉ssh后继续保持uml的运行,请看下面tips的第二条。)
打開新的terminal 開新的ssh到機器
1
|
screen /dev/pts/1
|
這時應該是發現terminal什麼都沒有,只要按一下Enter,就會出現登入提示了
login 是 root
而密碼是 91yun.org
在登入之後記得要改密碼
在進入之後會發現….這個系統真的什麼都沒有,連 python都沒有!這樣連SSR也跑不起來呀!
不過可以先跑一下指令
1
|
sysctl net.ipv4.tcp_available_congestion_control
|
看到以下這段就代表有 BBR 了
1
|
net.ipv4.tcp_available_congestion_control = bbr reno cubic highspeed
|
不論是怎樣還是先 update 一下 apt 吧
1
|
apt update
|
如果要快速測試,可以先安裝 V2Ray 比較快捷
V2Ray可以作為多功能平台使用,使常用的 shadowsocks 也包含其中
這邊有關於v2ray的教程 https://toutyrater.github.io/v2ray-guide-pages/
可以把 SS 開起來使用
1
2
3
|
apt install curl zip unzip
bash <(curl -L -s https://install.direct/go.sh)
systemctl start v2ray
|
打開 /etc/v2ray/config.json,很快就可以看到
1
2
3
4
5
6
7
8
9
10
11
12
|
"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
例如:
1
2
|
There are several suitable screens on:
1007.pts-7.localhost (02/24/17 10:59:14) (Detached)
|
這時只要用
1
|
screen -r 1007.pts-7.localhost
|
就可以重新進入到離開的screen。如果想要關掉 user-mode linux 的話,建議還是用 screen 進入到 user-mode linux,用 shutdown now 去關掉,不建議在host上用 kill 把 uml process 關閉,因為這等同於 hard shutdown
tips:
1. 暫時 user-mode linux 並沒有多核心支援,所以就算 host 有多於一個核心也不會對 user-mode linux 有影響
2. 利用
1
|
nohup ./vmlinux ubda=rootfs eth0=tuntap,tap0 mem=256m &
|
可以把 user-mode linux 放到背景,只要用
tail ./nohup.out
就可以看到user-mode linux 的輸出
3. 沒錯 一台VZ可以開多台 user-mode linux,不過如果本身機器不夠強,就不要亂試了。
4. 可以為 user-mode linux 安一個 openssh,那麼就可以由 Host 上傳文件到user-mode linux了,user-mode linux 也可以連回去 host 拿文件
文章评论