编译又出现了一个错误,能在帮我看一下吗,十分感谢!
/usr/bin/ld: arch/um/drivers/built-in.o: relocation R_X86_64_32 against `.rodata
.str1.1′ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
Makefile:969: recipe for target ‘vmlinux’ failed
请问下,我按照教程做到最后一步运行uml-linux.sh时,出现下面的提示,怎么解决,此时ss连接不通,谢谢。
[root@256OVZ ~]# bash uml-linux.sh
uml-linux.sh: line 14: tunctl: command not found
SIOCSIFADDR: No such device
tap0: unknown interface: No such device
tap0: unknown interface: No such device
[root@256OVZ ~]# nohup: appending output to `nohup.out’
feifei:
Friday March 10th, 2017 08:35 PM
http://www.feifeiss.com/code 注册即可享受60G 60天的免费试用
Das:
Monday March 13th, 2017 11:38 AM
libvdeplug2-dev-i386 跟你一样用的windows10 bash 但提示
Unable to locate package libvdeplug2-dev-i386
Uranus Zhou:
Monday March 13th, 2017 11:45 AM
不好意思,应该是 libvdeplug-dev-i386(安装命令里贴错了,下面提示信息里是正确的),我修改一下,库文件包是 libvdeplug2 或者 libvdeplug2-i386;
如果你是直接编译 64 位的 UML vmlinux,那就不用加 i386 后缀了。
孤狼吠月:
Wednesday March 15th, 2017 04:00 PM
楼主可以详细的写一下 rootfs 怎么构建的吗? 我打算用 Debian 8 x64 构建一个,但是目前不知道应该怎么动手? 谢谢
Uranus Zhou:
Wednesday March 15th, 2017 05:47 PM
我这里用的都是基于 busybox 构建的 rootfs,为了能最小的体积实现特定的功能;
如果你要用 Debian 8 x64,可以 Docker 部署一个基础的 Debian 系统,或者到网上下载做好的基础 Debian 8 rootfs 映像,
有别人分享的做好的 UML rootfs 映像:Linux Filesystems: Distribution Disk Images;
或者也可以自己手动制作:User Mode Linux on Debian Jessie。
孤狼吠月:
Wednesday March 15th, 2017 06:38 PM
楼主要么写一下这个 busybox 的 rootfs 制作过程?很喜欢这个小巧的 rootfs,干净简单够用, 包括编译 shadowsocks-libev 之后怎么知道哪些动态链接库应该要放到 rootfs 里面呢? 没有这些动态链接库,ss 应该在 uml 里面跑不起来吧
Uranus Zhou:
Wednesday March 15th, 2017 07:13 PM
额,这个相关的东西就比较多了,要对 Linux 启动和文件系统之类的有些了解,可以参考 Linux Journal 上的几篇文章学习一下:
Building Tiny Linux Systems with Busybox--Part I
Building Tiny Linux Systems with Busybox, Part 2: Building the Kernel
Building Tiny Linux Systems with BusyBox, Part 3
编译完成之后用
ldd
命令可以看到程序依赖的动态库;如果
shadowsocks-libev
是静态编译的话,就不需要专门增加这些动态链接库了;这里我的 rootfs 用动态库也是为了加别的程序方便,不需要都用静态编译的程序。
Das:
Thursday March 16th, 2017 03:16 PM
怎么才能设置成开机启动啊?我在/etc/rc.local 里添加了 /root/uml-linux.sh 开机没反应。但直接执行是没有问题的
Uranus Zhou:
Thursday March 16th, 2017 03:25 PM
我的VPS上就是改 /etc/rc.local 文件开机启动的,你的VPS是什么系统?可能 uml-linux.sh 没有加执行权限?可以 ifconfig -a 看看 tap0 网卡有没有起来
Das:
Thursday March 16th, 2017 04:09 PM
我用的 ubuntu-14.04-x86-minimal系统,查看tap0网卡是有的。
Uranus Zhou:
Thursday March 16th, 2017 04:44 PM
不太确定哪里不对了,可以先停止 UML Linux 系统,删除
/nohup.out
文件,把
/etc/rc.local
里改成类似/root/uml-linux.sh >/root/uml.out 2>&1
这样输出到文件的形式然后重启系统,运行
ifconfig -a
看看 tap0 网卡 IP 地址对不对,运行iptables -t nat -L
确认转发规则是否正确设置了,然后看看
/nohup.out
和/root/uml.out
文件有没有什么错误了。Das:
Friday March 17th, 2017 10:16 AM
按照你说的方法试了下,tap0 网卡 IP 地址是对的,转发规则也真确。不知道是不是这里错了
make_uml_dir : no value in environment for $HOME
Uranus Zhou:
Friday March 17th, 2017 10:27 AM
UML vmlinux 运行时需要在
$HOME/.uml
目录下创建临时目录和产生一些文件,应该是$HOME
环境变量没正确设置导致的;你可以在
/root/uml-linux.sh
前面加上一句:export HOME="/root"
再重启试试效果。
Das:
Friday March 17th, 2017 10:39 AM
OK,解决,谢谢了!
Uranus Zhou:
Friday March 17th, 2017 10:47 AM
不客气,也可以把
uml-linux.sh
脚本最后一行改一下,直接指定 uml_dir:nohup $DIR/vmlinux-i686 umid=$UML_ID uml_dir=$DIR/.uml root=/dev/root rootfstype=hostfs rootflags=$DIR/umlfs-i686 rw mem=48M init=/sbin/init con=pts eth0=tuntap,$TAP_DEV,,$UML_ADDR &
这样不指定
$HOME
环境变量也没关系了。Eric:
Saturday March 18th, 2017 07:21 AM
64 位的 UML ShadowsocksR 系统 解压还是SS程序啊? 怎么‘回事?
Uranus Zhou:
Saturday March 18th, 2017 09:57 AM
可执行程序名字是一样的,是用 shadowsocksr-libev 编译的
jleewin95:
Monday March 20th, 2017 12:10 PM
博主你好,我编译 UML 内核时出错,请教怎么解决
linux-4.9.16# make menuconfig ARCH=um
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/mconf.o
SHIPPED scripts/kconfig/zconf.tab.c
SHIPPED scripts/kconfig/zconf.lex.c
SHIPPED scripts/kconfig/zconf.hash.c
HOSTCC scripts/kconfig/zconf.tab.o
HOSTCC scripts/kconfig/lxdialog/checklist.o
HOSTCC scripts/kconfig/lxdialog/util.o
HOSTCC scripts/kconfig/lxdialog/inputbox.o
HOSTCC scripts/kconfig/lxdialog/textbox.o
HOSTCC scripts/kconfig/lxdialog/yesno.o
HOSTCC scripts/kconfig/lxdialog/menubox.o
HOSTLD scripts/kconfig/mconf
scripts/kconfig/mconf arch/x86/um/Kconfig
kernel/time/Kconfig:155:warning: range is invalid
configuration written to .config
*** End of the configuration.
*** Execute ‘make’ to start the build or try ‘make help’.
----------------------------
我尝试了4.10 和4.9 的内核,都报错
kernel/time/Kconfig:155:warning: range is invalid
就算用了make defconfig ARCH=um
也是同样错误
恳请博主帮助
Uranus Zhou:
Monday March 20th, 2017 12:18 PM
range is invalid 只是警告,make menuconfig 和 defconfig 都只是配置内核选项,真正编译是运行 make ARCH=um;
make menuconfig 有没有出现配置界面?
jleewin95:
Monday March 20th, 2017 05:59 PM
多谢博主解疑!
这个warning困扰了我两天,google了一堆也没发现答案…
原来是可以忽略的啊~
menuconfig正常,我选择了tcp中的bbr,然后编译OK
然后又用了博主的mini.config,同样OK
------
接下来准备按照博主的教程搞定shadowsocks
thanks a lot!
zavier:
Wednesday March 22nd, 2017 02:14 PM
编译内核时出错了,求助大佬:
ld -r -dp -o arch/um/drivers/vde.o arch/um/drivers/vde_kern.o arch/um/drivers/vde_us
er.o -m elf_i386 -r /usr/lib/gcc/x86_64-linux-gnu/6/../../../../lib/libvdeplug.a
ld: Relocatable linking with relocations from format elf64-x86-64 (/usr/lib/gcc/x86_ 64-linux-gnu/6/../../../../lib/libvdeplug.a(libvdeplug.o)) to format elf32-i386 (arch/um/drivers/vde.o) is not supported
arch/um/drivers/Makefile:30: recipe for target ‘arch/um/drivers/vde.o’ failed
make[1]: *** [arch/um/drivers/vde.o] Error 1
Makefile:988: recipe for target ‘arch/um/drivers’ failed
make: *** [arch/um/drivers] Error 2
Uranus Zhou:
Wednesday March 22nd, 2017 02:34 PM
编译32位UML Linux内核要安装 libvdeplug-dev-i386 包(假设编译所用的系统是64位的),64位系统下编译64位UML内核用 libvdeplug-dev 包。
zavier:
Wednesday March 22nd, 2017 05:39 PM
编译又出现了一个错误,能在帮我看一下吗,十分感谢!
/usr/bin/ld: arch/um/drivers/built-in.o: relocation R_X86_64_32 against `.rodata
.str1.1′ can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
Makefile:969: recipe for target ‘vmlinux’ failed
Uranus Zhou:
Wednesday March 22nd, 2017 10:40 PM
这个的前面应该有别的报错吧?你的编译环境是什么样的?是编译64位的UML内核?
可以运行这个命令看看:
file arch/um/drivers/built-in.o
可以 make clean 之后再重新编译试试
zavier:
Thursday March 23rd, 2017 10:18 AM
抱歉,提问时没有给足够的信息给你。昨天的问题查了好久没解决,今天编译又出了新的错误,我这方面太菜不想折腾了。。。还是十分感谢博主的热心帮助
Uranus Zhou:
Thursday March 23rd, 2017 11:52 AM
简单点可以直接下载我编译好的那个内核文件和 rootfs。
wu先生:
Thursday March 23rd, 2017 02:35 PM
技术文。收藏备用。
谢谢:
Friday March 24th, 2017 10:46 AM
博主。ss应该怎么配置呢,我不管怎么换端口,都没法连接上uml里的ss。访问主机内的ss没问题。
从uml里可以访问外部网络,外部网络和主机能够ping通
用的是你的64位版本,ubuntu 16.04.
我的理解是,ss本地端口填9443,server地址填host的ip,服务端的ss配置文件里监听端口也是9443。
bhlis:
Friday March 24th, 2017 11:23 AM
SSR-libev 的版本只是客户端支持SSR,服务端跟无混淆的一样,见https://github.com/breakwa11/shadowsocks-rss/wiki说明,服务端只有python版本。
能帮忙编译一个uml可用的python吗,自己尝试不成功,Python的动态链接库太多了。谢谢!
Uranus Zhou:
Friday March 24th, 2017 11:31 AM
SS 配置里的本地端口(local_port)是无所谓的,server_port 需要和
uml-linux.sh
脚本里设置的端口一致(默认 9443);你可以在 host 端运行
iptables -t nat -L
命令确认端口映射是否正确。Uranus Zhou:
Friday March 24th, 2017 11:43 AM
谢谢指出,一直也没用这个 SSR 的服务端;
Python 不用自己编译,可以把 32 位(Ubuntu 14.04)或 64 位(CentOS 6)系统里 Python 包的所有文件及依赖库拷到 UML rootfs 目录中;
只是稍微有些麻烦,我有空时可以再把 SSR 的 UML rootfs 更新一下。
Uranus Zhou:
Friday March 24th, 2017 11:44 PM
我制作了 32 和 64 位 ShadowsocksR Python 服务器版本的 UML rootfs 包(包含 Python 环境),文章中的链接也已经更新;
可将 ShadowsocksR 服务器 JSON 配置文件(支持多个文件)放到
/etc/shadowsocks
目录启动 UML 系统即可。firebotao:
Saturday March 25th, 2017 03:50 AM
请问下,我按照教程做到最后一步运行uml-linux.sh时,出现下面的提示,怎么解决,此时ss连接不通,谢谢。
[root@256OVZ ~]# bash uml-linux.sh
uml-linux.sh: line 14: tunctl: command not found
SIOCSIFADDR: No such device
tap0: unknown interface: No such device
tap0: unknown interface: No such device
[root@256OVZ ~]# nohup: appending output to `nohup.out’
Uranus Zhou:
Saturday March 25th, 2017 12:42 PM
你的 VPS 系统缺少 tunctl 命令,需要安装 uml-utilities 软件包。
firebotao:
Saturday March 25th, 2017 01:23 PM
你好,我用的是centos 64位系统,需要安装 uml-utilities 这个软件包,我是否要换成ubuntu系统?centos上面提示没apt-get这个命令。
Uranus Zhou:
Saturday March 25th, 2017 01:29 PM
yum install 就行,用 VPS 这些基础命令要了解的。
firebotao:
Saturday March 25th, 2017 01:37 PM
yum install我试过很多次不行哦,提示没这个东东
root@256OVZ ~]# yum install uml-utilities
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* base: http://ftp.cuhk.edu.hk
* extras: http://ftp.cuhk.edu.hk
* updates: http://ftp.cuhk.edu.hk
No package uml-utilities available.
Error: Nothing to do
Uranus Zhou:
Saturday March 25th, 2017 05:40 PM
额,CentOS 下的软件包名直接就是 tunctl。
stranger:
Saturday May 13th, 2017 03:45 PM
請問樓主,如果我想同時擁有IPV6,配置 OpenVZ 系统上的 TUN/TAP 虚拟网卡和开启端口转发該如何修改呢?
Uranus Zhou:
Saturday May 13th, 2017 05:50 PM
不好意思,这个 UML Linux 内核在编译的时候我没启用 IPv6,你需要先修改配置启用 IPv6 编译出新的 vmlinux 文件;
然后把 uml-linux.sh 还有 hostfs 里面的 /etc/rc.local 脚本中的 IP 地址换成 IPv6 的。