我正在尝试使用schroot来处理多个chroot环境,以针对特定版本的ubuntu生成干净的开发版本。主机环境是Ubuntu 16.04。
我使用以下配置创建了/etc/schroot/chroot.d/test.conf:
[test]
description=ubuntu trusty
type=directory # DO NOT FORGET THIS LINE
directory=/var/chroot/test
shell=/bin/bash
groups=sudo
profile=desktop
personality=linux
preserve-environment=true
message-verbosity=verbose
然后,我使用以下命令创建了chroot:
sudo debootstrap --arch amd64 --variant=buildd trusty /var/chroot/test http://archive.ubuntu.com/ubuntu
该命令运行正常,并创建了chroot。然后,我以这种方式输入chroot:
schroot -c test
groups: cannot find name for group ID 1000
groups: cannot find name for group ID 108
groups: cannot find name for group ID 124
groups: cannot find name for group ID 135
groups: cannot find name for group ID 137
I have no name!@xps-dev:/$
无论我尝试了什么,我都无法将/etc/passwd,/etc/group,/etc/hosts之类的文件正确地复制到chroot环境或与chroot环境同步。在此示例中,我将配置文件设置为“桌面”,该配置文件应使用/etc/schroot/desktop中的设置信息,但我也尝试创建自己的配置文件,但未成功。无论如何,桌面配置文件确实指定了它应复制这些文件或对其进行同步:
awake@xps-dev:/etc/schroot/desktop$ cat copyfiles
# Files to copy into the chroot from the host system.
#
# <source and destination>
/etc/resolv.conf
awake@xps-dev:/etc/schroot/desktop$ cat nssdatabases
# System databases to copy into the chroot from the host system.
#
# <database name>
passwd
shadow
group
gshadow
services
protocols
networks
hosts
我曾尝试从nssdatabases文件中删除“passwd”和“group”,以将“/etc/passwd”和“/etc/group”添加到copyfiles,以便将文件直接复制过来,而不是同步复制,但是没有这样做。工作。
我已经尝试了以下命令,以详细输出将chroot输入为root:
sudo schroot -v --debug=notice -c test -u root
日志在这里:http://pastie.org/10947460
我在日志中没有看到任何确认安装脚本已执行的信息。
我显然做错了。有人有主意吗?
谢谢!
最佳答案
我找到了解决问题的方法:在test.conf文件中没有“type = directory”行的情况下,类型变为“普通”,这意味着不会调用配置文件中的安装脚本。添加该行之后,安装脚本开始被调用,并且现在一切正常。
关于linux - schroot无法正确同步nss数据库(passwd,组,主机),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40178297/