-
Senior Member
registered user
A quick and dirty chroot.
I had posted this to answer a specific need. A minimalist chroot, capable of a few commands that needed to have a root filesystem to extract some files to, without overwriting what is already there in the real root... The original post really belongs here in tips and tricks, but it was in answer to another post there.
Ok, I have wrestled with this one for a few days. I tried stuff trying to avoid setting up a chroot.
Now that I have given in and set up the chroot... I can extract the minirt from the cpio archive to my changed "root."
Then I just timestamped a file with touch... and tried to rearchive it. Bingo! It was the exact same size.
So I am going to leave the steps I did in a semi script... well these are the commands I just 'did' from a konsole.
(I can just come back here and copy when I need it.)
Assuming you've booted up to the knoppix user and have a konsole opened to the /home/knoppix/Desktop directory....
I am putting together the files I needed to get a minimal chroot working... using knoppix 5.1.1
A specific chroot just capable of using cpio, and find, ls and a few others. A small one. I had never done it before.
I may want to again though.
If you want to use other commands than this minimal chroot... you will be good to try out the ldd command.
For example... I decided I wanted to be able to use ls. I copied ls to my new-root/bin directory. Then I did a:
ldd /bin/ls
It outputs:
linux-gate.so.1 => (0xffffe000)
librt.so.1 => /lib/tls/librt.so.1 (0xb7efc000)
libacl.so.1 => /lib/libacl.so.1 (0xb7ef6000)
libselinux.so.1 => /lib/libselinux.so.1 (0xb7ee1000)
libc.so.6 => /lib/tls/libc.so.6 (0xb7daf000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0xb7d9d000)
/lib/ld-linux.so.2 (0xb7f2e000)
libattr.so.1 => /lib/libattr.so.1 (0xb7d98000)
libdl.so.2 => /lib/tls/libdl.so.2 (0xb7d94000)
libsepol.so.1 => /lib/libsepol.so.1 (0xb7d53000)
So I grabbed those libraries from /lib and /lib/tls (I think I just grabbed the whole /lib/tls/*)
and put them in new-root/lib, aka /home/knoppix/Desktop/work/lib.
Simple enough. Well, almost. Ignore the linux-gate.so.1. It doesn't exist. It's a virtual library.
Then a
chroot /home/knoppix/Desktop/work
and I get a
bash-3.1# prompt.
Ok so in another root console I copy my unzipped "minirt" to the new-root as minirt_53de.
Then back in the new-root I execute...
cpio -i --list -I ./minirt_53de > minirt.lst
cpio -imd --format=newc -I ./minirt_53de
cpio -o --format=newc < minirt.lst > minirt_53de2
Same size... same blocks count. Bingo.
Any files you add to the minirt, just make sure to add them to the minirt.lst file...
and that way you won't add all the libs and binaries to the minirt when you rearchive.
Cheers
su
mkdir -p work/bin
DEST=`realpath ./work/bin`
SOURCE=/bin
for i in bash cp cpio login ls mkdir more mv rm rmdir sed sh touch; do cp $SOURCE/$i $DEST; done;
mkdir -p work/usr/bin
DEST=`realpath ./work/usr/bin`
SOURCE=/usr/bin
for i in find ldd strace ; do cp $SOURCE/$i $DEST; done;
mkdir -p work/lib/tls
DEST=`realpath ./work/lib/tls`
SOURCE=/lib/tls
for i in libBrokenLocale-2.3.6.so \
libBrokenLocale.so.1 \
libSegFault.so \
libanl-2.3.6.so \
libanl.so.1 \
libc-2.3.6.so \
libc.so.6 \
libcidn-2.3.6.so \
libcidn.so.1 \
libcrypt-2.3.6.so \
libcrypt.so.1 \
libdl-2.3.6.so \
libdl.so.2 \
libm-2.3.6.so \
libm.so.6 \
libmemusage.so \
libnsl-2.3.6.so \
libnsl.so.1 \
libnss_compat-2.3.6.so \
libnss_compat.so.2 \
libnss_dns-2.3.6.so \
libnss_dns.so.2 \
libnss_files-2.3.6.so \
libnss_files.so.2 \
libnss_hesiod-2.3.6.so \
libnss_hesiod.so.2 \
libnss_nis-2.3.6.so \
libnss_nis.so.2 \
libnss_nisplus-2.3.6.so \
libnss_nisplus.so.2 \
libpcprofile.so \
libpthread-2.3.6.so \
libpthread.so.0 \
libresolv-2.3.6.so \
libresolv.so.2 \
librt-2.3.6.so \
librt.so.1 \
libthread_db-1.0.so \
libthread_db.so.1 \
libutil-2.3.6.so \
libutil.so.1 ; do cp $SOURCE/$i $DEST; done;
DEST=`realpath ./work/lib`
SOURCE=/lib
for i in ld-2.3.6.so \
ld-linux.so.2 \
libacl.a \
libacl.la \
libacl.so \
libacl.so.1 \
libacl.so.1.1.0 \
libattr.a \
libattr.la \
libattr.so \
libattr.so.1 \
libattr.so.1.1.0 \
libc-2.3.6.so \
libc.so.6 \
libncurses.so.5 \
libncurses.so.5.5 \
libncursesw.so.5 \
libncursesw.so.5.5 \
libselinux.so.1 \
libsepol.so.1 ; do cp $SOURCE/$i $DEST; done;
Similar Threads
-
By onemyndseye in forum Hdd Install / Debian / Apt
Replies: 0
Last Post: 02-07-2007, 09:08 AM
-
By chethcoat in forum Hdd Install / Debian / Apt
Replies: 1
Last Post: 08-22-2004, 09:26 PM
-
By fabiand in forum General Support
Replies: 2
Last Post: 08-05-2004, 12:09 AM
-
By PrOCesSkIlL in forum Customising & Remastering
Replies: 4
Last Post: 10-23-2003, 02:20 PM
-
By in forum Tips and Tricks
Replies: 3
Last Post: 09-06-2003, 11:09 PM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
ARUBA J9772A 2530-48G PoE+ 48 PORT ETHERNET SWITCH W/ RACK EARS J9772-60301
$140.23
Fortinet FortiSwitch FS-124D-POE 24 Port Gigabit Ethernet Switch UNREGISTERED
$99.97
Juniper Networks EX2200-C-12P-2G Gigabit Ethernet Managed Switch
$79.99
Cisco 3560CG Series 8 Port POE Network Switch WS-C3560CG-8PC-S
$80.00
NETGEAR GS108 ProSafe 8-Port GbE Unmanaged Switch w/ Power Adapter
$14.99
Netgear ProSafe FS726T 24 Port 10/100 Smart Switch w/2 Gigabit Ports
$19.99
TP-Link TL-SG108 8-Port 10/100/1000 Mbps Gigabit Ethernet Desktop Switch FREE SH
$14.99
Netgear ProSafe GS116v2 16-Port Gigabit Switch Issue
$14.99
HPE ARUBA 2530-24G J9773A PoE+ 24-PORT GIGABIT ETHERNET SWITCH J9773-60201
$93.24
Loocam Gigabit PoE Switch 8 Port 96W 2 Uplink Port Unmanaged Ethernet Switch
$49.99