Page 1 of 2

Sanderdog 1.8: load and use other linux distro in puppy

Posted: Sat 15 Jun 2019, 00:12
by mistfire
Since underdog linux is retired. I think of a new approach based from chroot approach.

It works like an underdog but chrooted compared to mount at bottom layer. This script allows to load the other linux distro partition on the fly and use its application (even older linux distro versions) with desktop integration and file association without breaking the system

It has gui looks like the former underdog gui.

The chrooted environment only sees the host /root, /home, /mnt, and /media. Everyone is welcome to improve this program. Icon integration is the only missing piece.

How sanderdog works:
1. It will create a directory named /var/vfs
2. The target linux partition will be mounted at /var/vfs/ro_layer
3. Add some flag file at /var/vfs/rw_layer
4. mount /var/vfs/ro_layer, /var/vfs/rw_layer, at /var/vfs/rootfs
5. The /dev, /root, /proc, /sys, /home, /media, /tmp, and /mnt will be bind mounted at /var/vfs/rootfs
6. Generate chrooted desktop files at /usr/local/share/applications
7. Copy some mime xml files from /var/vfs/ro_layer to /usr/local/share/mime
8. Start some services (supports systemd, upstart, runit, and sysvinit [experimental])

Posted: Sat 15 Jun 2019, 09:52
by wiak
I think suggestion is the same (or very similar, except for your planning to mount proc etc in middle layer) as being done in FirstRib leading to one version of WeeDog:

http://www.murga-linux.com/puppy/viewto ... 15#1029315

http://murga-linux.com/puppy/viewtopic. ... 62#1025462

http://murga-linux.com/puppy/viewtopic. ... 27#1027227

http://www.murga-linux.com/puppy/viewto ... 36#1030336

Having said that, FirstRib is being developed to test out both the above chroot overlay (preferred) or aufs fs methods but also more traditional initramfs switch_root (and perhaps also pivot_root with chroot) type boots.

Your middle layer would have to be a read/write layer of course, for proc etc, so maybe only possible with aufs? As far as I remember, but would have to re-read kernel notes on overlayfs, result is undefined according to specs of overlayfs if middle layer used as read/write?).

Looking forward to your own trials/test-code though, since the more code examples and developments like this the better!

wiak

EDIT: By the way, in English, chunder means to vomit, so maybe not the best name... ;-)

Posted: Sat 15 Jun 2019, 13:47
by Terry H
wiak wrote:
EDIT: By the way, in English, chunder means to vomit, so maybe not the best name... ;-)
I had quite a chuckle when I read the title. In the words of Men at Work, immortalized in song:
"I come from a land down under where beer does flow and men chunder".

So now having had a laugh, i congratulate both of you for your many contributions and innovations to puppy. Your contributions are very much appreciated.

Posted: Sat 15 Jun 2019, 15:31
by s243a
I look forward to seeing how chunderdog works. It sounds interesting :). On another note I don't think that underdog should be retired. If you happen do do a woof-CE fork that keeps underdog, please let us know :).

Posted: Mon 17 Jun 2019, 14:12
by mistfire
Update:
It works but here are some observations

1. Binded mountpoints /dev, /sys, /proc, and /tmp does not appear on top layer when mounted on middle layer. It requires to bind mount on top layer

2. Chrooted rootfs can see host /root, /media, and /mnt by mount binding on top layer

3. Auto generation of chrooted desktop files works but need to deal with Icons.

@s243a underdog was removed from woof-ce github. So an alternative solution is needed.

Posted: Mon 17 Jun 2019, 14:25
by s243a
mistfire wrote:Update:
It works but here are some observations

1. Binded mountpoints /dev, /sys, /proc, and /tmp does not appear on top layer when mounted on middle layer. It requires to bind mount on top layer

2. Chrooted rootfs can see host /root, /media, and /mnt by mount binding on top layer

3. Auto generation of chrooted desktop files works but need to deal with Icons.

@s243a underdog was removed from woof-ce github. So an alternative solution is needed.
Unless you want to maintain a separate fork of alternatively unless it is possible to provide underdog as a pet.

That all said perhaps the chunderdog idea is superior and none of these above two alternatives are necessary. I look forward to seeing how this progresses :)

Posted: Tue 18 Jun 2019, 04:43
by mistfire
Here is a simple chunderdog demo that I made

How to use this script:
1. Puppy host
2. You need an installed linux distro on a partition
3. Type this command on terminal

Code: Select all

 ./chunderdog.sh [target linux partition] 
4. It will enter chrooted shell, minimize the terminal
5. You will now see the additional applications came from other linux distro on Applications Menu. Also the underdog apps have file association too (for xdg-compliant file managers)
6. To quit the demo. Restore the minimized terminal and type "exit"

Also I need help to implement the following on chunderdog
1. Make /var/vfs/ro_layer/usr/share/icons and /var/vfs/ro_layer/usr/share/mime visible on host
2. Run services/daemons from chrooted underdog and stop them also upon exiting chrooted underdog

Posted: Tue 25 Jun 2019, 06:59
by mistfire
chunderdog is now called sanderdog (sandboxed underdog).

The pet package is attached at the first post of this thread

Posted: Wed 26 Jun 2019, 10:19
by mistfire
Sanderdog-1.1 released

Changes:
* Improved chrooting
* Improved gui

Posted: Wed 26 Jun 2019, 22:55
by mistfire
Take note, the chrooted application has (isolated) suffix on its name.

Re: sanderdog 1.1: load and use other linux distro partition in puppy

Posted: Tue 02 Jul 2019, 07:56
by 01101001b
mistfire wrote:[...]How sanderdog works:[...]
Mistfire, this is inmensely useful to me. I've tried and failed several attempts with underdog in the past and the present. Now I'll try this as soon as possible.
Thank you! :-)

Posted: Thu 04 Jul 2019, 10:55
by mistfire
Sanderdog 1.2 released

Changes:
* More improvements
* Able to start some systemd service and autostart

Posted: Fri 05 Jul 2019, 06:36
by mistfire
Sanderdog 1.3 released

Changes:
* Aside some systemd services, it can now start upstart services
* More bugfixes

Download link was on the first post of this thread

Posted: Thu 11 Jul 2019, 12:30
by mistfire
Sanderdog 1.4 released

Changes:
* Added support for starting some runit services
* Failsafe added. Sanderdog will not run if 32-bit host attempts to load 64-bit linux distro

Download was on the first post of this thread

Posted: Thu 11 Jul 2019, 13:55
by rockedge
I have been having success with firstrib (WeeDog) in various forms from a boot version to a chroot'ed one. The chroot'ed version of firstrib really works well with a Puppy Linux Bionic as host.

So I am going to give this script a try as this looks interesting and a potential approach to a LAMP system I am messing with.

Posted: Tue 16 Jul 2019, 06:47
by mistfire
Sanderdog 1.5 released

Changes:
* Now supports starting sysvinit services (experimental)
* With cpu arch compatibility matching. Sanderdog will not run if the cpu arch and the target installed linux partition is not compatible (works best on x86 and arm architectures)

Download was on the first post of this thread

Posted: Tue 01 Oct 2019, 21:49
by 01101001b
mistfire wrote:Sanderdog 1.5 released
I'm really looking forward to try this tool when, at last, I have some spare time back again :roll:

Thx so much! :D

Posted: Sun 05 Apr 2020, 10:56
by mistfire
Sanderdog 1.6 released

Changes:
* Chrooted desktop files and mime files moved to /usr/local
* Sandbox cache file update on first run
* Bugfixes

Posted: Tue 14 Apr 2020, 03:51
by mistfire
Sanderdog 1.7 released

Changes
* Improved cleanup

Posted: Tue 14 Apr 2020, 20:01
by 01101001b
mistfire wrote:Sanderdog 1.7 released
Wow! :shock: Thank you so much for your efforts! :D