Here’s how to store portage in a file. Ext2/3 filesystems on a 2GB partition do not have enough inodes to store the , use reiserfs, for example.

/ # dd if=/dev/null of=/usr/portage.disk bs=1M count=0 seek=2048
/ # mkreiserfs -f /usr/portage.disk
/ # mkdir -p /usr/portage
/ # mount /usr/portage.disk /usr/portage -o loop,notail,noatime,nodev

The portage file is limited to 2GBs, hence we have to move the distfiles directory (default: /usr/portage/distfiles). This can be done either by editing make.conf and specify a new location or creating a distfiles directory somewhere else and have /usr/portage/distfiles link to it:

/ # mkdir -p /var/tmp/portage/distfiles
/ # cd /usr/portage
/usr/portage # ln -s /var/tmp/portage/distfiles

Finally, add a line to /etc/fstab to have the portage disk mounted at boot time:

/usr/portage.disk    /usr/portage    reiserfs    loop,notail,noatime,nodev,noexec 0 0

Done.