Chroot: Difference between revisions
(Created page with "== Boot an existing partition == Example of session <source lang=bash> sudo mount /dev/sda6 /mnt/root sudo mount /dev/sda2 /mnt/root/boot # Optional - if exists for a in dev...") |
No edit summary |
||
Line 66: | Line 66: | ||
locale-gen en_US en_US.utf8 |
locale-gen en_US en_US.utf8 |
||
</source> |
</source> |
||
=== Schroot === |
|||
An extension of chroot that allows to run as unprivileged users in a chroot. See [https://wiki.debian.org/Schroot Schroot on debian]. |
|||
Example of configuration {{file|/etc/schroot/chroot.d/stretch}}: |
|||
<source lang="bash"> |
|||
# schroot chroot definitions. |
|||
# See schroot.conf(5) for complete documentation of the file format. |
|||
# |
|||
# Please take note that you should not add untrusted users to |
|||
# root-groups, because they will essentially have full root access |
|||
# to your system. They will only have root access inside the chroot, |
|||
# but that's enough to cause malicious damage. |
|||
# |
|||
# The following lines are examples only. Uncomment and alter them to |
|||
# customise schroot for your needs, or create a new entry from scratch. |
|||
# |
|||
[stretch] |
|||
description=To run Hadean-lands and test schroot |
|||
#aliases=test |
|||
type=directory |
|||
directory=/srv/chroot/stretch |
|||
users=peetersm |
|||
root-groups=root |
|||
profile=desktop |
|||
personality=linux |
|||
preserve-environment=true |
|||
</source> |
|||
To install the schroot: |
|||
<source lang="bash"> |
|||
sudo apt-get install binutils debootstrap schroot |
|||
sudo mkdir /srv/chroot/stretch/ |
|||
sudo debootstrap stretch /srv/chroot/stretch/ |
|||
</source> |
|||
Then we can enter the schroot system as root with: |
|||
<source lang="bash"> |
|||
sudo schroot -c stretch |
|||
# for instance we can install X system (xfce4, gdm3) |
|||
apt install gdm3 |
|||
exit |
|||
</source> |
|||
Now we can enter as normal user: |
|||
<source lang="bash"> |
|||
xhost + |
|||
schroot -c stretch |
|||
</source> |
|||
;Troubleshoot - cannot write in /dev/shm |
|||
:I simply applied the fix, ie <code>sudo chmod 1777 dev/shm</code>. See also [https://bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/1399772]. |
|||
<source lang="text"> |
|||
[511:1231/162459:FATAL:shared_memory_posix.cc(295)] This is frequently caused by incorrect permissions on /dev/shm. Try 'sudo chmod 1777 /dev/shm' to fix. |
|||
</source> |
|||
=== Xchroot === |
|||
[https://www.elstel.org/xchroot/ xchroot]. Yet another variant. Don't know the difference with schroot / chroot |
Latest revision as of 16:46, 31 December 2019
Boot an existing partition
Example of session
sudo mount /dev/sda6 /mnt/root
sudo mount /dev/sda2 /mnt/root/boot # Optional - if exists
for a in dev proc sys run; do sudo mount --bind /$a /mnt/root/$a; done
# +++ -> run needed to recover /etc/resolv.conf
sudo chroot /mnt/root
#...
#...
#...
exit
sudo umount /mnt/root/{boot,dev,proc,sys,run} /mnt/root
Install another distro inside a distro
For instance, we can use chroot to install a 32-bit system inside a running 64-bit system. We use the schroot and debootstrap package.
Guide below comes from stackexchange.com:
- Install the packages
sudo apt install schroot debootstrap
- Set up schroot
Create a file etc/schroot/chroot.d/lucid32:
[lucid32]
description=Ubuntu 10.04LTS 32-bit
directory=/32
type=directory
personality=linux32
users=yourusername
groups=users,admin
- Install the new distribution
mkdir /32
debootstrap --arch i386 lucid /32 http://archive.ubuntu.com/ubuntu
cp -p /etc/apt/apt.conf /32/etc/apt/ # for proxy settings
cp -p /etc/apt/sources.list /32/etc/apt/ # for universe, security, etc
cp -p /etc/environment /32/etc/ # for proxy and locale settings
cp -p /etc/sudoers /32/etc/ # for custom sudo settings
ln -s /proc/mounts /32/etc/mtab
With the directory
type, schroot will perform bind mounts of a number of directories, i.e. those directories will be shared with the parent installation: /proc, /dev, /home, /tmp.
- Services in the chroot
We setup a policy to prevent services to start on installation. Create the file /32/usr/sbin/policy-rc.d and make it executable (chmod a+rx /32/usr/sbin/policy-rc.d
):
#!/bin/sh
## Don't start any service if running in a chroot.
## See /usr/share/doc/sysv-rc/README.policy-rc.d.gz
if [ "$(stat -c %d:%i /)" != "$(stat -c %d:%i /proc/1/root/.)" ]; then
exit 101
fi
- Populate the new system
schroot -c lucid32
sudo apt-get update
apt-get install lsb-core nano
...
Generate a few locale:
locale-gen en_US en_US.utf8
Schroot
An extension of chroot that allows to run as unprivileged users in a chroot. See Schroot on debian.
Example of configuration /etc/schroot/chroot.d/stretch:
# schroot chroot definitions.
# See schroot.conf(5) for complete documentation of the file format.
#
# Please take note that you should not add untrusted users to
# root-groups, because they will essentially have full root access
# to your system. They will only have root access inside the chroot,
# but that's enough to cause malicious damage.
#
# The following lines are examples only. Uncomment and alter them to
# customise schroot for your needs, or create a new entry from scratch.
#
[stretch]
description=To run Hadean-lands and test schroot
#aliases=test
type=directory
directory=/srv/chroot/stretch
users=peetersm
root-groups=root
profile=desktop
personality=linux
preserve-environment=true
To install the schroot:
sudo apt-get install binutils debootstrap schroot
sudo mkdir /srv/chroot/stretch/
sudo debootstrap stretch /srv/chroot/stretch/
Then we can enter the schroot system as root with:
sudo schroot -c stretch
# for instance we can install X system (xfce4, gdm3)
apt install gdm3
exit
Now we can enter as normal user:
xhost +
schroot -c stretch
- Troubleshoot - cannot write in /dev/shm
- I simply applied the fix, ie
sudo chmod 1777 dev/shm
. See also [1].
[511:1231/162459:FATAL:shared_memory_posix.cc(295)] This is frequently caused by incorrect permissions on /dev/shm. Try 'sudo chmod 1777 /dev/shm' to fix.
Xchroot
xchroot. Yet another variant. Don't know the difference with schroot / chroot