你好,我用 Docker 的 Ubuntu:1604 镜像尝试运行你编译的 UML 系统,在 Checking that ptrace can change system call numbers 的时候,提示 ptrace: Operation not permitted ,添加 --cap-add=SYS_PTRACE 之后提示 /dev/shm must be not mounted noexec。
console [mc-1] enabled
read_cow_header - short header
VFS: Mounted root (hostfs filesystem) on device 0:11.
devtmpfs: mounted
This architecture does not have kernel memory protection.
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
paul:
Monday March 5th, 2018 08:04 PM
您好,我阅读了您所著的这篇文章,对我帮助很大,解决了我的燃眉之急,非常感谢您将这种解决问题的思路提供给大家。
但是,我在实践您文中的方法时遇到了一些问题,想寻求您的帮助:我在docker中启动UML后,试图挂载webDAV成功,但是我挂载的文件系统需要能被host的某个服务程序(直说吧,一个数据库)访问到,请问需要如何操作?是否需要终端复用才能同时开启多个应用?
最后再次对您的无私奉献表示感谢
paul:
Monday March 5th, 2018 08:34 PM
您好,我阅读了您所著的这篇文章,对我帮助很大,解决了我的燃眉之急,非常感谢您将这种解决问题的思路提供给大家。
但是,我在实践您文中的方法时遇到了一些问题,想寻求您的帮助:
1. 我在docker中启动UML后,试图挂载webDAV不成功:
1.1 执行mount.davfs https://webdav.yandex.ru /mnt/webdav后返回mount.davfs: can’t change group of directory /var/run/mount.davfs: Operation not permitted
1.2 执行mount -t davfs https://webdav.yandex.ru /mnt/webdav后返回mount: mounting https://webdav.yandex.ru on /mnt/webdav failed: No such device
2. 挂载的webDAV文件系统需要能被host的某个服务程序(直说吧,一个数据库)访问到,请问需要如何操作?是否需要终端复用才能同时开启多个应用?
最后再次对您的无私奉献表示感谢
Uranus Zhou:
Monday March 5th, 2018 10:45 PM
挂载的问题需要确认 UML 是不是以 root 用户启动的;
还有 ls -dl /var/run/mount.davfs 看看所有者和群组是不是都是 davfs2;
要让 UML 中的文件系统能被 host 程序使用,就是参考导出 UML FUSE 文件系统 这一节了,看你的 Docker 中能否挂载 NFS,不能直接挂载的话是比较麻烦的。
Puteulanus:
Sunday December 23rd, 2018 03:51 PM
你好,我用 Docker 的 Ubuntu:1604 镜像尝试运行你编译的 UML 系统,在 Checking that ptrace can change system call numbers 的时候,提示 ptrace: Operation not permitted ,添加 --cap-add=SYS_PTRACE 之后提示 /dev/shm must be not mounted noexec。
我查到另一个在 Docker 里运行 UML 的镜像( https://hub.docker.com/r/weberlars/diuid/ ) 同样要求 SYS_PTRACE 权限,并使用 tmpfs 挂载了一个 umlshm。
因为看到文章开头说环境是非特权容器,Bluemix 的 Docker 服务又已经关闭了,所以没有办法在相同的环境测试,不知道是 Bluemix 的容器本身带有所需的权限还是比如 Docker 的后续更新导致的。请问这两个是在 Docker 容器里运行 UML 必需的吗?或者是 UML 有选项关闭相应特性的。
log(容器中):
root@f345eb93aa08:~/uml# ./uml-linux.sh
Core dump limits :
soft - NONE
hard - NONE
Checking that ptrace can change system call numbers…ptrace: Operation not permitted
check_ptrace : expected SIGSTOP, got status = 9
Uranus Zhou:
Monday December 24th, 2018 02:40 PM
UML 是必须依赖 ptrace 的,我之前也在 OpenVZ 容器中测试过,
你说的添加 --cap-add=SYS_PTRACE 之后提示 /dev/shm must be not mounted noexec,那是否可以 remount /dev/shm 把 noexec 选项给去掉?
现在 Bluemix 关闭了,如果你能访问已经被墙的 Arukas 的话也可以用这个服务试试。
另外 Win10 自带的 WSL 环境中运行 UML kernel 也会报类似的错误。
Puteulanus:
Monday December 24th, 2018 03:37 PM
如果是必须依赖的话,大概就是 Bluemix 的容器本身在运行的时候添加了一些诸如 SYS_PTRACE 的权限了。。shm 的问题我看 https://github.com/moby/moby/issues/6758 大概是无法从容器内部解决的。
weberlars/diuid 文档中的 --cap-add=SYS_PTRACE -e TMPDIR=/umlshm --tmpfs /umlshm:rw,nosuid,nodev,exec,size=8g 应该已经是在 Docker 中运行 UML 的最简单的参数了。
本来是想能在不添加额外参数的 Docker 容器里运行的 _(:з」∠)_,加权限的话用 UML 的意义就比较小了。。
eatcosmos:
Thursday September 22nd, 2022 06:52 AM
您好,在没用特权的远程docker里,我直接下载的tar.xz文件,然后解压直接运行 ./uml-linux.sh
但是报错了,这是可能是什么原因的?有调试的办法吗?
console [mc-1] enabled
read_cow_header - short header
VFS: Mounted root (hostfs filesystem) on device 0:11.
devtmpfs: mounted
This architecture does not have kernel memory protection.
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
CPU: 0 PID: 1 Comm: init Not tainted 4.10.1 #17
Stack:
6482bc00 60190e70 60190e70 6482bc00
6008c5a1 6008bccb 6440df00 3000000010
6482bcd0 6482bbe0 6440dc00 0000000b
Call Trace:
[] ?
printk+0x0/0x9b
[] ?
os_is_signal_stack+0x15/0x30
Uranus Zhou:
Friday September 23rd, 2022 10:04 AM
Docker 环境是网上的容器服务还是自己搭的哦?还有容器镜像是哪个?
我抽空用本地 Docker 或 LXC 容器环境确认试试。
eatcosmos:
Tuesday September 27th, 2022 12:08 PM
是在线的docker服务,用的这个网站的 https://git.openi.org.cn/zeizei/OpenI_Learning/debugjob?debugListType=all,里面的调试任务是执行在docker容器里,用frp把ssh映射出来的
感觉好像对docker和主机环境依赖挺大的,但道理作为进程存在,就类似普通软件,任何环境都能运行