Fabianx
07-04-2003, 10:16 PM
This is actuaqlly a copy of a mail I sent to debian-knoppix earlier this day ...
I hope this is interesting for some of you:
---
Hi,
in my last mail I said, that there are problems with chroot, that you are not
able to unmount or remount ...
I also had an idea, and this idea did work ...
What you need:
- Linux partition
- Lilo (Grub could also be possible)
Create an ext2-image with 2560000 bytes. (Should be enough).
Mount it to /mnt.
-rwxr-xr-x 1 root root 150580 2002-07-26 14:09 /mnt/static/ash
lrwxrwxrwx 1 root root 3 2003-04-01 23:46 /mnt/static/init
-> ash
lrwxrwxrwx 1 root root 3 2003-04-01 23:46 /mnt/static/sh ->
ash
Copy ash to /mnt/static and create symlinks ...
Copy needed modules (for ext3 that are jbd.o and ext3.o) to /mnt/modules
-rw-r--r-- 1 root root 87626 2003-04-01 23:46
/mnt/modules/ext3.o
-rw-r--r-- 1 root root 74090 2003-04-01 23:46 /mnt/modules/jbd.o
Copy device that needs to be mounted to /mnt/dev (or copy whole /dev)
cp libraries for non-static binaries ("real" mount/pivot_root are needed)
-rwxr-xr-x 1 root root 82456 2003-05-07 09:27
/mnt/lib/ld-linux.so.2
-rwxr-xr-x 1 root root 1104072 2003-05-07 09:27 /mnt/lib/libc.so.6
mkdir -p /mnt/mnt /mnt/mnt2 /mnt/proc
copy mount and pivot_root to /bin:
-rwsr-xr-x 1 root root 81080 2003-05-07 09:27 /mnt/bin/mount
-rwsr-xr-x 1 root root 4832 2003-05-07 09:27
/mnt/bin/pivot_root
Last but not least create the /mnt/linuxrc the heart of our operation :-))
#!/static/sh
# load needed modules
insmod /modules/jbd.o
insmod /modules/ext3.o
# mount proc, say that root is pivot_rooted and unmount it
mount -t proc proc /proc
echo 256 > /proc/sys/kernel/real-root-dev
umount /proc
# mount the root-filesystem
mount -t ext3 /dev/hda5 /mnt
# tricky: We now bind our chroot environment to /mnt2
/bin/mount --bind /mnt/home/knoppix/newroot /mnt2
# now we unmount the root-filesystem; believe me, its possible and /mnt2 is
still there
umount /mnt
# Now we change the root permanently to the chroot-dir and we can do every
operation that is needed (remount, unmount, ...)
/bin/pivot_root /mnt2 /mnt2/initrd
Of course you can sue the comments and just have the script so compact :
#!/static/sh
insmod /modules/jbd.o
insmod /modules/ext3.o
mount -t proc proc /proc
echo 256 > /proc/sys/kernel/real-root-dev
umount /proc
mount -t ext3 /dev/hda5 /mnt
/bin/mount --bind /mnt/home/knoppix/newroot /mnt2
umount /mnt
/bin/pivot_root /mnt2 /mnt2/initrd
I tried this and it did work ... I was really suprised, but I think its an
kind of easy way to test several copied knoppix systems or bootstrapped and
then knoppised debian's :-)).
If anyone knows an easier way, I'm interested to learn it :-) (Or if anyone
knows this way from another source on the web ...)
btw. lilo.conf:
image=/boot/vmlinuz-2.4.20-xfs
label=Chroot
append="hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi
hdh=scsi apm=power-off nomce ramdisk_size=100000 lang=de init=/etc/init"
initrd=/boot/chroot_initrd
read-only
I think it would be possible to also have all this pointing to
/home/knoppix/newroot/vmlinuz|boot/chroot_initrd ...
But as I had the same kernel, I'm lazy ... :-))
cu
Fabian
PS: I hope this is useful to someone ...
PPS: So you can finally start your changed system and such USE sortlists and
so optimise the system more and more without the need of an extra-partition
...
I hope this is interesting for some of you:
---
Hi,
in my last mail I said, that there are problems with chroot, that you are not
able to unmount or remount ...
I also had an idea, and this idea did work ...
What you need:
- Linux partition
- Lilo (Grub could also be possible)
Create an ext2-image with 2560000 bytes. (Should be enough).
Mount it to /mnt.
-rwxr-xr-x 1 root root 150580 2002-07-26 14:09 /mnt/static/ash
lrwxrwxrwx 1 root root 3 2003-04-01 23:46 /mnt/static/init
-> ash
lrwxrwxrwx 1 root root 3 2003-04-01 23:46 /mnt/static/sh ->
ash
Copy ash to /mnt/static and create symlinks ...
Copy needed modules (for ext3 that are jbd.o and ext3.o) to /mnt/modules
-rw-r--r-- 1 root root 87626 2003-04-01 23:46
/mnt/modules/ext3.o
-rw-r--r-- 1 root root 74090 2003-04-01 23:46 /mnt/modules/jbd.o
Copy device that needs to be mounted to /mnt/dev (or copy whole /dev)
cp libraries for non-static binaries ("real" mount/pivot_root are needed)
-rwxr-xr-x 1 root root 82456 2003-05-07 09:27
/mnt/lib/ld-linux.so.2
-rwxr-xr-x 1 root root 1104072 2003-05-07 09:27 /mnt/lib/libc.so.6
mkdir -p /mnt/mnt /mnt/mnt2 /mnt/proc
copy mount and pivot_root to /bin:
-rwsr-xr-x 1 root root 81080 2003-05-07 09:27 /mnt/bin/mount
-rwsr-xr-x 1 root root 4832 2003-05-07 09:27
/mnt/bin/pivot_root
Last but not least create the /mnt/linuxrc the heart of our operation :-))
#!/static/sh
# load needed modules
insmod /modules/jbd.o
insmod /modules/ext3.o
# mount proc, say that root is pivot_rooted and unmount it
mount -t proc proc /proc
echo 256 > /proc/sys/kernel/real-root-dev
umount /proc
# mount the root-filesystem
mount -t ext3 /dev/hda5 /mnt
# tricky: We now bind our chroot environment to /mnt2
/bin/mount --bind /mnt/home/knoppix/newroot /mnt2
# now we unmount the root-filesystem; believe me, its possible and /mnt2 is
still there
umount /mnt
# Now we change the root permanently to the chroot-dir and we can do every
operation that is needed (remount, unmount, ...)
/bin/pivot_root /mnt2 /mnt2/initrd
Of course you can sue the comments and just have the script so compact :
#!/static/sh
insmod /modules/jbd.o
insmod /modules/ext3.o
mount -t proc proc /proc
echo 256 > /proc/sys/kernel/real-root-dev
umount /proc
mount -t ext3 /dev/hda5 /mnt
/bin/mount --bind /mnt/home/knoppix/newroot /mnt2
umount /mnt
/bin/pivot_root /mnt2 /mnt2/initrd
I tried this and it did work ... I was really suprised, but I think its an
kind of easy way to test several copied knoppix systems or bootstrapped and
then knoppised debian's :-)).
If anyone knows an easier way, I'm interested to learn it :-) (Or if anyone
knows this way from another source on the web ...)
btw. lilo.conf:
image=/boot/vmlinuz-2.4.20-xfs
label=Chroot
append="hda=scsi hdb=scsi hdc=scsi hdd=scsi hde=scsi hdf=scsi hdg=scsi
hdh=scsi apm=power-off nomce ramdisk_size=100000 lang=de init=/etc/init"
initrd=/boot/chroot_initrd
read-only
I think it would be possible to also have all this pointing to
/home/knoppix/newroot/vmlinuz|boot/chroot_initrd ...
But as I had the same kernel, I'm lazy ... :-))
cu
Fabian
PS: I hope this is useful to someone ...
PPS: So you can finally start your changed system and such USE sortlists and
so optimise the system more and more without the need of an extra-partition
...