Skip to contentSkip to conversation

liblxc: lxc-debian

DISCUSSION Serge E. Hallyn 3 participants 8 messages Dec 4, 2008 – Dec 9, 2008 6 messages not in the archive

lore
Share & tools
lore
#0 lore raw

Hi Daniel,

to create a debian-based container using lxc-debian on fedora 10, I needed to just a couple of things:

1. iptables -F :) Grrr.

2. Right above the debootstrap command, I had to fool chage (used during openssh configuration) into thinking selinux was disabled. So after the line:
mkdir -p "$CACHE/rootfs-$ARCH"
I added
mkdir -p "$CACHE/rootfs-$ARCH/selinux"
echo 0 > "$CACHE/rootfs-$ARCH/selinux/enforce"

3. For the actual debootstrap command I had to do debootstrap --arch $ARCH etc $CACHE/rootfs-$ARCH Then apt-get install openssh-server and apache worked fine. But your debootstrap command failed (the last time i tried) on chroot - no idea why.

Now it seems to work. This shouldn't have taken me 2 hours to figure out, but the symptoms were deceptive :)

thanks,
-serge

A message that is not in the archive (sent off-list or not yet received): 20081204023936.GA31830-r/[email protected]

#2 lore raw
Quoted 7 lines · Serge E. Hallyn

Hi Daniel,

to create a debian-based container using lxc-debian on fedora 10, I needed to just a couple of things:

1. iptables -F :) Grrr.

Quoted 7 lines

2. Right above the debootstrap command, I had to fool chage (used during openssh configuration) into thinking selinux was disabled. So after the line:
mkdir -p "$CACHE/rootfs-$ARCH"
I added
mkdir -p "$CACHE/rootfs-$ARCH/selinux"
echo 0 > "$CACHE/rootfs-$ARCH/selinux/enforce"

Good catch ! :)

Quoted 5 lines

3. For the actual debootstrap command I had to do debootstrap --arch $ARCH etc $CACHE/rootfs-$ARCH Then apt-get install openssh-server and apache worked fine. But your debootstrap command failed (the last time i tried) on chroot - no idea why.

Ok, I will try to figure out what is happening.

Quoted 2 lines

Now it seems to work. This shouldn't have taken me 2 hours to figure out, but the symptoms were deceptive :)

I have a some bugs reported I will fix with this one. I'll release a 0.5.1 version soon.

Thanks a lot for taking the time to investigate :)

-- Daniel

A message that is not in the archive (sent off-list or not yet received): 4939AFA7.1060903-NmTC/[email protected]

#4 lore raw
Quoted 16 lines · Daniel Lezcano
Quoted 7 lines · Serge E. Hallyn

Hi Daniel,

to create a debian-based container using lxc-debian on fedora 10, I needed to just a couple of things:

1. iptables -F :) Grrr.

Quoted 7 lines

2. Right above the debootstrap command, I had to fool chage (used during openssh configuration) into thinking selinux was disabled. So after the line:
mkdir -p "$CACHE/rootfs-$ARCH"
I added
mkdir -p "$CACHE/rootfs-$ARCH/selinux"
echo 0 > "$CACHE/rootfs-$ARCH/selinux/enforce"

Quoted 1 line

Good catch ! :)

Are you going to put those lines into the 'official' lxc-debian?

Quoted 7 lines
Quoted 5 lines

3. For the actual debootstrap command I had to do debootstrap --arch $ARCH etc $CACHE/rootfs-$ARCH Then apt-get install openssh-server and apache worked fine. But your debootstrap command failed (the last time i tried) on chroot - no idea why.

Ok, I will try to figure out what is happening.

Great, thanks.

Quoted 7 lines
Quoted 2 lines

Now it seems to work. This shouldn't have taken me 2 hours to figure out, but the symptoms were deceptive :)

I have a some bugs reported I will fix with this one. I'll release a 0.5.1 version soon.

Thanks a lot for taking the time to investigate :)

One more thing that would be helpful - can you think of an easy way to specify devices whitelist rules for lxc-debian? I don't want to complicate the creation process, but as it is it's not trivial to define them. Perhaps specifying a default that should work for most everyone would be ok? I find the following to be plenty flexible:

(this is the code i inserted into the old lxc-debian command, haven't checked if i need to change it for the new one)

echo "lxc.cgroup.devices.deny = a" >> $CONFFILE # /dev/null and zero
echo "lxc.cgroup.devices.allow = c 1:3 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:5 rwm" >> $CONFFILE # consoles
echo "lxc.cgroup.devices.allow = c 5:1 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 5:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:1 rwm" >> $CONFFILE # /dev/{,u}random
echo "lxc.cgroup.devices.allow = c 1:9 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:8 rwm" >> $CONFFILE # /dev/pts/* - pts namespaces are "coming soon" echo "lxc.cgroup.devices.allow = c 136:* rwm" >> $CONFFILE # rtc
echo "lxc.cgroup.devices.allow = c 254:0 rwm" >> $CONFFILE

thanks,
-serge

A message that is not in the archive (sent off-list or not yet received): 20081206001110.GA32712-r/[email protected]

#6 lore raw
Quoted 49 lines · Serge E. Hallyn
Quoted 16 lines · Daniel Lezcano
Quoted 7 lines · Serge E. Hallyn

Hi Daniel,

to create a debian-based container using lxc-debian on fedora 10, I needed to just a couple of things:

1. iptables -F :) Grrr.

Quoted 7 lines

2. Right above the debootstrap command, I had to fool chage (used during openssh configuration) into thinking selinux was disabled. So after the line:
mkdir -p "$CACHE/rootfs-$ARCH"
I added
mkdir -p "$CACHE/rootfs-$ARCH/selinux"
echo 0 > "$CACHE/rootfs-$ARCH/selinux/enforce"

Quoted 1 line

Good catch ! :)

Are you going to put those lines into the 'official' lxc-debian?

Quoted 7 lines
Quoted 5 lines

3. For the actual debootstrap command I had to do debootstrap --arch $ARCH etc $CACHE/rootfs-$ARCH Then apt-get install openssh-server and apache worked fine. But your debootstrap command failed (the last time i tried) on chroot - no idea why.

Ok, I will try to figure out what is happening.

Great, thanks.

Quoted 7 lines
Quoted 2 lines

Now it seems to work. This shouldn't have taken me 2 hours to figure out, but the symptoms were deceptive :)

I have a some bugs reported I will fix with this one. I'll release a 0.5.1 version soon.

Thanks a lot for taking the time to investigate :)

One more thing that would be helpful - can you think of an easy way to specify devices whitelist rules for lxc-debian? I don't want to complicate the creation process, but as it is it's not trivial to define them. Perhaps specifying a default that should work for most everyone would be ok? I find the following to be plenty flexible:

(this is the code i inserted into the old lxc-debian command, haven't checked if i need to change it for the new one)

Quoted 16 lines

echo "lxc.cgroup.devices.deny = a" >> $CONFFILE # /dev/null and zero
echo "lxc.cgroup.devices.allow = c 1:3 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:5 rwm" >> $CONFFILE # consoles
echo "lxc.cgroup.devices.allow = c 5:1 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 5:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:1 rwm" >> $CONFFILE # /dev/{,u}random
echo "lxc.cgroup.devices.allow = c 1:9 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:8 rwm" >> $CONFFILE # /dev/pts/* - pts namespaces are "coming soon" echo "lxc.cgroup.devices.allow = c 136:* rwm" >> $CONFFILE # rtc
echo "lxc.cgroup.devices.allow = c 254:0 rwm" >> $CONFFILE

This could be a tad prettier with a "here file" rather than all the echoes and >> $CONFFILE:

#
# Write some reasonable default device whitelist rules #
cat - >> $CONFFILE <<-"EOF" lxc.cgroup.devices.deny = a
# /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/pts/* - pts namespaces are "coming soon" lxc.cgroup.devices.allow = c 136:* rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm
EOF

The quotes around EOF prevent bash from doing any substitution on the file contents.

Cheers,
-Matt

#7 lore raw
Quoted 20 lines · Matt Helsley
Quoted 19 lines

(this is the code i inserted into the old lxc-debian command, haven't checked if i need to change it for the new one)

echo "lxc.cgroup.devices.deny = a" >> $CONFFILE # /dev/null and zero
echo "lxc.cgroup.devices.allow = c 1:3 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:5 rwm" >> $CONFFILE # consoles
echo "lxc.cgroup.devices.allow = c 5:1 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 5:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:1 rwm" >> $CONFFILE # /dev/{,u}random
echo "lxc.cgroup.devices.allow = c 1:9 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:8 rwm" >> $CONFFILE # /dev/pts/* - pts namespaces are "coming soon" echo "lxc.cgroup.devices.allow = c 136:* rwm" >> $CONFFILE # rtc
echo "lxc.cgroup.devices.allow = c 254:0 rwm" >> $CONFFILE

Quoted 2 lines

This could be a tad prettier with a "here file" rather than all the echoes and >> $CONFFILE:

The new lxc-debian actually does

cat > $CONFIGFILE << EOF

I pasted from my old version.

Quoted 27 lines

#
# Write some reasonable default device whitelist rules #
cat - >> $CONFFILE <<-"EOF" lxc.cgroup.devices.deny = a
# /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/pts/* - pts namespaces are "coming soon" lxc.cgroup.devices.allow = c 136:* rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm
EOF

The quotes around EOF prevent bash from doing any substitution on the file contents.

Cheers,
-Matt

A message that is not in the archive (sent off-list or not yet received): 20081208234348.GA7935-r/[email protected]

#9 lore raw
Quoted 20 lines · Serge E. Hallyn
Quoted 19 lines · Matt Helsley
Quoted 19 lines

(this is the code i inserted into the old lxc-debian command, haven't checked if i need to change it for the new one)

echo "lxc.cgroup.devices.deny = a" >> $CONFFILE # /dev/null and zero
echo "lxc.cgroup.devices.allow = c 1:3 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:5 rwm" >> $CONFFILE # consoles
echo "lxc.cgroup.devices.allow = c 5:1 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 5:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:0 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 4:1 rwm" >> $CONFFILE # /dev/{,u}random
echo "lxc.cgroup.devices.allow = c 1:9 rwm" >> $CONFFILE echo "lxc.cgroup.devices.allow = c 1:8 rwm" >> $CONFFILE # /dev/pts/* - pts namespaces are "coming soon" echo "lxc.cgroup.devices.allow = c 136:* rwm" >> $CONFFILE # rtc
echo "lxc.cgroup.devices.allow = c 254:0 rwm" >> $CONFFILE

Quoted 33 lines
Quoted 2 lines

This could be a tad prettier with a "here file" rather than all the echoes and >> $CONFFILE:

The new lxc-debian actually does

cat > $CONFIGFILE << EOF

I pasted from my old version.

Quoted 24 lines

#
# Write some reasonable default device whitelist rules #
cat - >> $CONFFILE <<-"EOF" lxc.cgroup.devices.deny = a
# /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/pts/* - pts namespaces are "coming soon" lxc.cgroup.devices.allow = c 136:* rwm
# rtc
lxc.cgroup.devices.allow = c 254:0 rwm
EOF

The quotes around EOF prevent bash from doing any substitution on the file contents.

I added these devices to the debian configuration file and fixed the cgroup list order, "lxc.cgroup.devices.deny = a" was the last entry :/

By default the debian has no root password, so the ssh connection will always fail until a password is set for root. I will look on how to change the root password to 'root' after debootstraping ...

I added "lxc.cgroup.devices.allow = c 5:2 rwm" in order to use /dev/ptmx for the tty's ssh connection.

The container is no longer able to create /dev/initctl, so the poweroff command will fail. Serge do you know what is the syntax for the devices.allow for initctl ?

Thanks.
-- Daniel

A message that is not in the archive (sent off-list or not yet received): 493E4A48.5020200-NmTC/[email protected]

#11 lore raw
Quoted 23 lines · Daniel Lezcano
Quoted 22 lines · Serge E. Hallyn
Quoted 21 lines · Matt Helsley

#
# Write some reasonable default device whitelist rules #
cat - >> $CONFFILE <<-"EOF" lxc.cgroup.devices.deny = a
# /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/pts/* - pts namespaces are "coming soon" lxc.cgroup.devices.allow = c 136:* rwm
# rtc lxc.cgroup.devices.allow = c 254:0 rwm
EOF

Quoted 5 lines
Quoted 2 lines
Quoted 2 lines

The quotes around EOF prevent bash from doing any substitution on the file contents.

I added these devices to the debian configuration file and fixed the cgroup list order, "lxc.cgroup.devices.deny = a" was the last entry :/

Weird. It's the first now I hope :)

Quoted 10 lines

By default the debian has no root password, so the ssh connection will always fail until a password is set for root. I will look on how to change the root password to 'root' after debootstraping ...

I added "lxc.cgroup.devices.allow = c 5:2 rwm" in order to use /dev/ptmx for the tty's ssh connection.

The container is no longer able to create /dev/initctl, so the poweroff command will fail. Serge do you know what is the syntax for the devices.allow for initctl ?

initctl isn't a device, it's a fifo. At least on my laptop.

thanks,
-serge

A message that is not in the archive (sent off-list or not yet received): 20081209163209.GE9487-r/[email protected]

#13 lore raw
Quoted 24 lines · Serge E. Hallyn
Quoted 23 lines · Daniel Lezcano
Quoted 22 lines · Serge E. Hallyn
Quoted 21 lines · Matt Helsley

#
# Write some reasonable default device whitelist rules #
cat - >> $CONFFILE <<-"EOF" lxc.cgroup.devices.deny = a
# /dev/null and zero lxc.cgroup.devices.allow = c 1:3 rwm lxc.cgroup.devices.allow = c 1:5 rwm
# consoles
lxc.cgroup.devices.allow = c 5:1 rwm lxc.cgroup.devices.allow = c 5:0 rwm lxc.cgroup.devices.allow = c 4:0 rwm lxc.cgroup.devices.allow = c 4:1 rwm
# /dev/{,u}random
lxc.cgroup.devices.allow = c 1:9 rwm lxc.cgroup.devices.allow = c 1:8 rwm
# /dev/pts/* - pts namespaces are "coming soon" lxc.cgroup.devices.allow = c 136:* rwm
# rtc lxc.cgroup.devices.allow = c 254:0 rwm
EOF

Quoted 6 lines
Quoted 4 lines
Quoted 2 lines
Quoted 2 lines

The quotes around EOF prevent bash from doing any substitution on the file contents.

I added these devices to the debian configuration file and fixed the cgroup list order, "lxc.cgroup.devices.deny = a" was the last entry :/

Weird. It's the first now I hope :)

I meant it was a bug of liblxc to store the cgroup in the wrong order :)

Quoted 4 lines
Quoted 4 lines

By default the debian has no root password, so the ssh connection will always fail until a password is set for root. I will look on how to change the root password to 'root' after debootstraping ...

Quoted 8 lines
Quoted 6 lines

I added "lxc.cgroup.devices.allow = c 5:2 rwm" in order to use /dev/ptmx for the tty's ssh connection.

The container is no longer able to create /dev/initctl, so the poweroff command will fail. Serge do you know what is the syntax for the devices.allow for initctl ?

initctl isn't a device, it's a fifo. At least on my laptop.

Yes, right.
"devices.deny = a" prohibits the creation of this fifo in /dev.

After doing "lxc-cgroup -n debian devices.allow a", mknod -m 600 /dev/initctl p ,
succeed in the debian container.

(rm /dev/initctl)

But after doing "lxc-cgroup -n debian devices.deny a", mknod -m 600 /dev/initctl p
mknod: `/dev/initctl': Operation not permitted

Is is a way to specify this fifo for devices.allow ?