Difference between revisions of "Make your own LiveCD using Funtoo Linux"

From Funtoo
Jump to: navigation, search
(configure /etc/portage/make.conf)
(configure /etc/portage/make.conf)
Line 106: Line 106:
 
{{console|body=
 
{{console|body=
  
###########################################################################
+
  ###########################################################################
 
  ## ATTENTION: THIS IS THE MAKE.CONF ON THE LIVECD                        ##
 
  ## ATTENTION: THIS IS THE MAKE.CONF ON THE LIVECD                        ##
 
  ## PLEASE EDIT /mnt/custom/customcd/files/etc/portage/make.conf INSTEAD  ##
 
  ## PLEASE EDIT /mnt/custom/customcd/files/etc/portage/make.conf INSTEAD  ##

Revision as of 23:01, November 4, 2019

Gif cd.png
Edit-cd.png

This tutorial explains Howto build your own LiveCD Funtoo Linux using oficial stage3. After configure the new system using CHROOT, just burn the new ISO file, using the official Área31 Hackerspace tool.

The LiveCD Funtoo Linux, basically a system recovery disk, available as a bootable DVD or USB device to administer or repair your system after an accident. Your goal is to provide an easy way to perform administrative tasks on your computer, such as repairing, creating, and editing your hard disk partitions. It comes with a lot of Open Source software such as system tools (parted, partimage, photorec, foremost, dcfldd, ddrescue, hdparm, and others) and basic tools (editors, browsers, network tools). The LiveCD can be used for both Linux, Mac OS and Windows computers, as well as desktops or servers. This LiveCD does not require installation as it can be booted from a DVD drive or USB device. The kernel supports the most commonly used file systems (ext2 / ext3 / ext4, ReiserFS, Btrfs, XFS, JFS, VFAT, NTFS via ntfs-3g) as well as network file systems (Samba and NFS) encrypted (LUKS).

   Note

This LiveCD uses OverlayFS instead of AUFS, so it does not need specific patches and kernels, only sys-kernel/gentoo-sources

   Warning

A virtual machine is strongly recommended for this procedure, including for security reasons

   Warning

you need to boot with a 64bit kernel.


More infos:

https://area31.net.br/wiki/LiveCD_oficial

Source code:

https://github.com/area31/LiveCD-Funtoo


Construction of the environment Funtoo

Get the oficial LiveCD created by Área31 Hackerspace

http://area31.mchaves.com/funtoo-livecd-area31-5.1-beta.iso

https://datagate.com.br/area31/funtoo-livecd-area31-5.1-beta.iso

https://www.wickedlinux.com/files/funtoo-livecd-area31-5.1-beta.iso

http://midnightsystems.net/funtoo-livecd-area31-5.1-beta.iso


MD5: 3c30acbf12848c29681ef8c58f194d19


After boot using LiveCD created by Área31 Hackerspace, create and format all partitionsː

root # mkswap /dev/sda2
root # mkfs.ext4 /dev/sda1


Activate swap and mount /mnt/custom directoryː

root # swapon /dev/sda2
root # mkdir -p /mnt/custom ; mount /dev/sda1 /mnt/custom


Get and extract stage3 (64bits) from https://www.funtoo.org/Generic_64 ː

root # wget https://build.funtoo.org/1.3-release-std/x86-64bit/generic_64/stage3-latest.tar.xz -P /mnt/custom
root # mkdir -p /mnt/custom/customcd/files ; tar xpf /mnt/custom/stage3-latest.tar.xz -C /mnt/custom/customcd/files

CHROOT

Configure network and use the chroot

root # cp /etc/resolv.conf /mnt/custom/customcd/files/etc/
root # mkdir -p /mnt/custom/customcd/files/var/cache/portage /mnt/custom/portage-chroot
root # mount -o bind /mnt/custom/portage-chroot /mnt/custom/customcd/files/var/cache/portage
root # mkdir -p /mnt/custom/meta-repo /mnt/custom/customcd/files/var/git
root # mount -o bind /mnt/custom/meta-repo/ /mnt/custom/customcd/files/var/git
root # cd /mnt/custom/customcd/files/ ; mount -o bind /proc/ proc ; mount -o bind /sys sys ; mount -o rbind /dev dev
root # chroot /mnt/custom/customcd/files/ /bin/bash

LiveCD configuration into CHROOT

root # . /etc/profile ; cd ; export PS1="(chroot) $PS1"

Update portage tree

root #  ego sync


Get Area31 overlay

Clone repo:

root # mkdir -p /etc/portage/localpatches /mnt/funtoo /var/overlay
root # cd /var/overlay ; git clone https://github.com/area31/area31-ebuilds.git
root # mv area31-ebuilds area31-hackerspace

Configure /etc/portage/repos.conf/overlay-area31-hackerspace.conf

[overlay-area31-hackerspace]
location = /var/overlay/area31-hackerspace
auto-sync = no
priority = 10


configure /etc/portage/make.conf

root ###########################################################################
 ## ATTENTION: THIS IS THE MAKE.CONF ON THE LIVECD                        ##
 ## PLEASE EDIT /mnt/custom/customcd/files/etc/portage/make.conf INSTEAD  ##
 ###########################################################################

 #MAKEOPTS="-j5"
 #PORTAGE_NICENESS="19"
 #USE="-elogind"

ACCEPT_LICENSE="*"
FEATURES="-pid-sandbox -network-sandbox -sandbox -usersandbox -ipc-sandbox -selinux -sesandbox -collision-detect -protect-owned assume-digests binpkg-logs config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync multilib-strict news parallel-fetch preserve-libs sandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"

DISTDIR="/var/cache/portage/distfiles"
PKGDIR="/var/cache/portage/packages"

VIDEO_CARDS="i915 i965 vmware intel nouveau radeon vesa vmware apm ast cirrus dummy glint i128 i740 mach64 nv r128 rendition s3 savage siliconmotion sisusb tdfx trident via"
INPUT_DEVICES="evdev keyboard mouse synaptics vmmouse"

foobashrc_modules = "localpatch"
LOCALPATCH_OVERLAY="/etc/portage/localpatches"

PAX_MARKINGS="none"

L10N="en"

Remove debian-sources and update world

root # emerge -C sys-kernel/debian-sources-lts
root # emerge -uDN @world


Install app-portage/eix

root # emerge app-portage/eix
root # eix-update


Install Area31 ebuild and dependencies to generate LiveCD

root # emerge sys-apps/sysresccd-area31 sys-kernel/linux-firmware
root # rc-update add sysresccd default


Configure hostname

Edit /etc/conf.d/hostname and insert:

hostname="livecd.funtoo"

Configure livecd profile

Remove systemd:

root # epro mix-ins +no-systemd


Install dependencies

Configure useflags:

root # vi /etc/portage/package.use
net-misc/tigervnc drm nls pam server xorgmodule -dri3 -gnutls -java opengl -xinerama
x11-base/xorg-server glamor ipv6 suid udev xorg xvfb
media-sound/pulseaudio X alsa alsa-plugin asyncns bluetooth caps dbus equalizer gdbm glib gnome ipv6 orc qt4 ssl tcpd udev webrtc-aec -doc -gtk -jack -libressl -libsamplerate -lirc -native-headset -neon -ofono-headset -oss -realtime -selinux -sox -system-wide -systemd -test -zeroconf
x11-libs/gtk+ X -abi_x86_32 abi_x86_64 -cups -abi_mips_n32 -abi_mips_n64 -abi_mips_o32 -abi_ppc_32 -abi_ppc_64 -abi_s390_32 -abi_s390_64 -abi_x86_64 -abi_x86_x32 -aqua -broadway -cloudprint -colord -examples -introspection -test -vim-syntax -wayland -xinerama
>=app-text/poppler-0.57.0-r1 cairo
sys-block/gparted btrfs dmraid f2fs fat hfs jfs mdadm ntfs policykit reiser4 reiserfs xfs udf cryptsetup
sys-block/parted debug nls readline device-mapper
dev-cpp/gtkmm X
sys-boot/grub binfont device-mapper fonts grub_platforms_efi-64 grub_platforms_pc mount multislot nls themes grub_platforms_efi-32
>=dev-qt/qtgui-5.9.4-r3 egl
www-client/w3m -X
app-editors/vim -X
net-misc/openssh -X
sys-apps/groff -X 
sys-kernel/gentoo-sources symlink
>=media-plugins/alsa-plugins-1.1.7-r1 pulseaudio
sys-apps/smartmontools -daemon
net-misc/ntp -zeroconf
net-dns/bind -berkdb caps idn ipv6 -ldap python ssl threads urandom xml dlz -doc -filter-aaaa -geoip -gost -gssapi -mysql -odbc -postgres -rpz -rrl -sdbldap -static-libs
sys-apps/util-linux tty-helpers
x11-terms/rxvt-unicode blink fading-colors  pixbuf  unicode3 256-color


root # vi /etc/portage/package.keywords
=x11-terms/termite-9999 **
=x11-libs/vte-ng-0.48.2.9999 **


root # vi /etc/portage/package.unmask
=sys-auth/consolekit-1.2.1


Compile basic tools:

root # emerge app-admin/cpulimit app-admin/hddtemp app-admin/ide-smart app-admin/lib_users app-admin/mcelog app-admin/passook app-admin/procinfo-ng app-admin/sudo app-admin/syslog-ng app-admin/sysstat app-admin/testdisk app-admin/whowatch app-arch/bzip2 app-arch/cabextract app-arch/cfv app-arch/cpio app-arch/dpkg app-arch/dump app-arch/gzip app-arch/lbzip2 app-arch/libarchive app-arch/lz4 app-arch/lzlib app-arch/lzop app-arch/mt-st app-arch/ncompress app-arch/p7zip app-arch/pigz app-arch/pixz app-arch/plzip app-arch/pxz app-arch/rpm2targz app-arch/rzip app-arch/sharutils app-arch/snappy app-arch/star app-arch/tar app-arch/unrar app-arch/unshield app-arch/unzip app-arch/xz-utils app-arch/zip app-editors/hexcurse app-editors/hexedit app-editors/vim app-editors/zile app-forensics/foremost app-i18n/uchardet app-laptop/radeontool app-misc/screen app-pda/libimobiledevice app-pda/libplist app-pda/libusbmuxd app-portage/cpuid2cpuflags app-portage/foobashrc app-portage/genlop app-shells/zsh app-text/pastebinit app-text/tree app-text/wgetpaste media-sound/alsa-utils net-dns/bind net-dns/bind-tools net-misc/dhcp net-misc/dhcpcd net-misc/iputils net-misc/ntp net-misc/telnet-bsd net-wireless/iw sys-apps/dcfldd sys-apps/hdparm sys-apps/ipmitool sys-apps/ipmiutil sys-apps/iucode_tool sys-apps/lm_sensors sys-apps/lshw sys-apps/rescan-scsi-bus sys-block/mbuffer sys-block/nbd sys-block/open-isns sys-block/parted sys-block/thin-provisioning-tools sys-block/whdd sys-boot/gnu-efi sys-boot/grub:2 sys-boot/grub-static sys-boot/lilo sys-firmware/intel-microcode sys-fs/cryptsetup sys-fs/ddrescue sys-fs/fuse sys-fs/lvm2 sys-fs/mdadm sys-fs/ntfs3g sys-libs/gpm sys-power/acpi sys-process/acct sys-process/atop sys-process/audit sys-process/cronbase sys-process/glances sys-process/htop sys-process/iotop sys-process/lsof sys-process/nmon sys-process/vixie-cron net-analyzer/tcpdump net-fs/nfs-utils net-analyzer/netcat net-analyzer/nmap sys-block/partimage


Create tftpboot directory:

root # mkdir /tftpboot

Graphic interface

Enable X + audio:

root # epro mix-ins +X +audio

Compile graphic tools:

root # emerge -uDN @world x11-terms/termite xorg-server net-misc/tigervnc sys-auth/consolekit x11-base/xorg-x11 x11-misc/xvkbd net-ftp/filezilla net-wireless/spectools net-print/boomaga sys-block/gparted net-wireless/bluez x11-terms/xterm www-client/links net-wireless/wpa_supplicant net-misc/networkmanager-vpnc net-misc/networkmanager-openvpn net-misc/networkmanager net-misc/networkmanager-pptp net-wireless/crackle x11-wm/openbox x11-misc/rofi x11-misc/obconf x11-misc/hsetroot x11-misc/xcompmgr www-client/firefox-bin www-client/elinks x11-misc/urxvt-perls x11-terms/rxvt-unicode


Configure xinitrc:

root # cd /root ; ln -sf /etc/area31/xinitrc .xinitrc
root # touch /etc/area31/xinitrc ; chmod +x /etc/area31/xinitrc
root # vi /etc/area31/xinitrc


root #!/bin/bash
if [ -f /etc/sysconfig/keyboard ]
then
        source /etc/sysconfig/keyboard
        KEYMAP=${XKEYBOARD}

        # The keymap must be listed in the following file:
        # /usr/share/X11/xkb/rules/xorg.lst

        [ $KEYMAP = "azerty" -o $KEYMAP = "01" -o $KEYMAP = "1" ] && KEYMAP="azerty"
        [ $KEYMAP = "be" -o $KEYMAP = "02" -o $KEYMAP = "2" ] && KEYMAP="be"
        [ $KEYMAP = "bg" -o $KEYMAP = "03" -o $KEYMAP = "3" ] && KEYMAP="bg"
        [ $KEYMAP = "br-a" -o $KEYMAP = "04" -o $KEYMAP = "4" ] && KEYMAP="br"
        [ $KEYMAP = "br-abnt2" -o $KEYMAP = "04" -o $KEYMAP = "4" ] && KEYMAP="br"
        [ $KEYMAP = "br-l" -o $KEYMAP = "05" -o $KEYMAP = "5" ] && KEYMAP="br"
        [ $KEYMAP = "by" -o $KEYMAP = "06" -o $KEYMAP = "6" ] && KEYMAP="by"
        [ $KEYMAP = "cf" -o $KEYMAP = "07" -o $KEYMAP = "7" ] && KEYMAP="cf"
        [ $KEYMAP = "croat" -o $KEYMAP = "08" -o $KEYMAP = "8" ] && KEYMAP="hr"
        [ $KEYMAP = "cz" -o $KEYMAP = "09" -o $KEYMAP = "9" ] && KEYMAP="cz"
        [ $KEYMAP = "de" -o $KEYMAP = "10" ] && KEYMAP="de"
        [ $KEYMAP = "dk" -o $KEYMAP = "11" ] && KEYMAP="dk"
        [ $KEYMAP = "dvorak" -o $KEYMAP = "12" ] && KEYMAP="dvorak"
        [ $KEYMAP = "es" -o $KEYMAP = "13" ] && KEYMAP="es"
        [ $KEYMAP = "et" -o $KEYMAP = "14" ] && KEYMAP="et"
        [ $KEYMAP = "fi" -o $KEYMAP = "15" ] && KEYMAP="fi"
        [ $KEYMAP = "fr" -o $KEYMAP = "16" ] && KEYMAP="fr"
        [ $KEYMAP = "gr" -o $KEYMAP = "17" ] && KEYMAP="gr"
        [ $KEYMAP = "hu" -o $KEYMAP = "18" ] && KEYMAP="hu"
        [ $KEYMAP = "il" -o $KEYMAP = "19" ] && KEYMAP="il"
        [ $KEYMAP = "is" -o $KEYMAP = "20" ] && KEYMAP="is"
        [ $KEYMAP = "it" -o $KEYMAP = "21" ] && KEYMAP="it"
        [ $KEYMAP = "jp" -o $KEYMAP = "22" ] && KEYMAP="jp"
        [ $KEYMAP = "la" -o $KEYMAP = "23" ] && KEYMAP="latam"
        [ $KEYMAP = "lt" -o $KEYMAP = "24" ] && KEYMAP="lt"
        [ $KEYMAP = "mk" -o $KEYMAP = "25" ] && KEYMAP="mk"
        [ $KEYMAP = "nl" -o $KEYMAP = "26" ] && KEYMAP="nl"
        [ $KEYMAP = "no" -o $KEYMAP = "27" ] && KEYMAP="no"
        [ $KEYMAP = "pl" -o $KEYMAP = "28" ] && KEYMAP="pl"
        [ $KEYMAP = "pt" -o $KEYMAP = "29" ] && KEYMAP="pt"
        [ $KEYMAP = "ro" -o $KEYMAP = "30" ] && KEYMAP="ro"
        [ $KEYMAP = "ru" -o $KEYMAP = "31" ] && KEYMAP="us,ru(winkeys) -option grp:ctrl_shift_toggle,lctrl_shift_toggle"
        [ $KEYMAP = "se" -o $KEYMAP = "32" ] && KEYMAP="se"
        [ $KEYMAP = "sg" -o $KEYMAP = "33" ] && KEYMAP="sg"
        [ $KEYMAP = "sk-y" -o $KEYMAP = "34" ] && KEYMAP="sk"
        [ $KEYMAP = "sk-z" -o $KEYMAP = "35" ] && KEYMAP="sk"
        [ $KEYMAP = "slovene" -o $KEYMAP = "36" ] && KEYMAP="si"
        [ $KEYMAP = "trf" -o $KEYMAP = "37" ] && KEYMAP="tr"
        [ $KEYMAP = "trq" -o $KEYMAP = "38" ] && KEYMAP="tr"
        [ $KEYMAP = "ua" -o $KEYMAP = "39" ] && KEYMAP="ua"
        [ $KEYMAP = "uk" -o $KEYMAP = "40" ] && KEYMAP="gb"
        [ $KEYMAP = "us" -o $KEYMAP = "41" ] && KEYMAP="us"
        [ $KEYMAP = "wangbe" -o $KEYMAP = "42" ] && KEYMAP="wangbe"
        [ $KEYMAP = "fr_CH" -o $KEYMAP = "43" ] && KEYMAP="ch -variant fr"
        [ $KEYMAP = "speakup" -o $KEYMAP = "44" ] && KEYMAP="us"
        [ $KEYMAP = "cz" -o $KEYMAP = "45" ] && KEYMAP="cz"
        [ $KEYMAP = "de_CH" -o $KEYMAP = "46" ] && KEYMAP="ch"
        [ $KEYMAP = "sg-lat1" -o $KEYMAP = "47" ] && KEYMAP="ch" 
        [ $KEYMAP = "fr-bepo" -o $KEYMAP = "48" ] && KEYMAP="fr bepo"
        [ $KEYMAP = "colemak" -o $KEYMAP = "49" ] && KEYMAP="us -variant colemak"
        [ $KEYMAP = "de_neo" -o $KEYMAP = "50" ] && KEYMAP="de -variant neo"

        echo "setxkbmap -layout $KEYMAP" > /var/log/xorg-keymap.log
        setxkbmap -layout $KEYMAP >> /var/log/xorg-keymap.log 2>&1
    fi
[ -f /usr/bin/xset ] && /usr/bin/xset s off >/dev/null 2>&1 &
[ -f /usr/bin/xset ] && /usr/bin/xset r >/dev/null 2>&1 &

if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
        exec ck-launch-session dbus-launch --sh-syntax --exit-with-session startlxde
else
        exec dbus-launch --exit-with-session startlxde
fi

Adjust various services on boot

Just run:

root # bash /usr/sbin/sysresccd-area31-setservices


Use VIM instead VI:

root # mv /usr/bin/vi /usr/bin/vim-legacy ; ln -s /usr/bin/vim /usr/bin/vi


Enable Local Patches to Ebuilds:

root # ln -s /etc/portage/foobashrc.bashrc /etc/portage/bashrc

Compile kernel

Configure ebuild

root # echo "sys-kernel/gentoo-sources symlink" >> /etc/portage/package.use
root # emerge sys-kernel/gentoo-sources

Configure kernel

root # wget https://area31.net.br/downloads/ebuilds/releases/config-4.20.4-rescuecd-funtoo-overlayfs-area31-5.0 -O /usr/src/linux/.config

Compile and install kernel and modules

root # cd /usr/src/linux ; make oldconfig && make && make install && make modules_install

ZFS support (OPTIONAL)

Configure useflags

root # echo "sys-fs/zfs -rootfs" >> /etc/portage/package.use


Compile ZFS ebuilds

root # emerge sys-kernel/spl sys-fs/zfs-kmod sys-fs/zfs
root # rc-update add zfs-import boot
root # rc-update add zfs-mount boot
root # rc-update add zfs-share default
root # rc-update add zfs-zed default


Configure fstab

Clear fstab:

root # echo '# Funtoo LiveCD fstab' > /etc/fstab

Configure automatic login [RECOMMENDED]

Make script bashlogin

root # touch /bin/bashlogin ; chmod +x /bin/bashlogin ; vi /bin/bashlogin

With the following content:

root #!/bin/sh
root # ============ ENV VARS ================================
cd /root
export LANG=en_US.UTF-8
export HOME=/root
export SHELL=/bin/bash
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
export MAIL=/var/mail/root
export USER=root

source /etc/profile

root # ============ PRINT MESSAGE ===========================
lc1='\e[01;31m' # light red
dc1='\e[00;31m' # dark red
lc2='\e[01;37m' # white
dc2='\e[00;37m' # gray

root # fix broken console with utf8 in the alternative-kernels
echo -n -e '\033%G'
kbd_mode -u

LINES=$(stty size

Configure inittab

root # vi /etc/inittab

Change the lines below the comment '# TERMINALS' 'to the following pattern:


root # TERMINALS
c1:12345:respawn:/sbin/agetty -nl /bin/bashlogin 38400 tty1 linux
c2:12345:respawn:/sbin/agetty -nl /bin/bashlogin 38400 tty2 linux
c3:12345:respawn:/sbin/agetty -nl /bin/bashlogin 38400 tty3 linux
c4:12345:respawn:/sbin/agetty --noclear 38400 tty4 linux
c5:2345:respawn:/sbin/agetty 38400 tty5 linux
c6:2345:respawn:/sbin/agetty 38400 tty6 linux

That way we will automatically log in to TTY's from 1 to 3.


Configure Time Zone

/etc/localtime is used to specify the timezone that your machine is in, and defaults to UTC. If you would like your Funtoo Linux system to use local time, you should replace /etc/localtime with a symbolic link to the timezone that you wish to use.

Configure to UTCː

root # ln -sf /usr/share/zoneinfo/UTC /etc/localtime

Check using date commandː

root # date -R
Sat, 26 Jan 2019 04:45:28 +0000


Or configure other Time Zoneː

root # ln -sf /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime

Make automatic post-login banner [OPTIONAL]

Include banner on /etc/bash/bashrc:

root # echo '/bin/bashlogin-banner' >> /etc/bash/bashrc

Create the script with the following content:

root # touch /bin/bashlogin-banner ; chmod +x /bin/bashlogin-banner ; vi /bin/bashlogin-banner
root #!/bin/sh
root # ============ ENV VARS ================================
cd /root
export LANG=en_US.UTF-8
export HOME=/root
export SHELL=/bin/bash
export PATH=/sbin:/bin:/usr/sbin:/usr/bin
export MAIL=/var/mail/root
export USER=root

source /etc/profile

root # ============ PRINT MESSAGE ===========================
lc1='\e[01;31m' # light red
dc1='\e[00;94m' # light blue
lc2='\e[01;37m' # white
dc2='\e[00;37m' # gray

root # fix broken console with utf8 in the alternative-kernels
echo -n -e '\033%G'
kbd_mode -u

LINES=$(stty size

Install aditional locales [OPTIONAL]

root # echo 'pt_BR.UTF-8 UTF-8' >> /etc/locale.gen
root # locale-gen


Enable date and time on history

Add these lines on /etc/profile

export HISTTIMEFORMAT="%h/%d %H:%M:%S "
export HISTFILESIZE="1000000"
export HISTSIZE="1000000"

Exit from CHROOT

root # exit

Prepare the iso environment (Kernel + GRUB)

Download and extract the required files:

root # cd /mnt/custom/customcd
root # wget https://area31.net.br/downloads/ebuilds/releases/isoroot-livecd-funtoo-area31-5.0.tar.bz2
root # tar xjpf isoroot-livecd-funtoo-area31-5.0.tar.bz2 -C /mnt/custom/customcd


Prepare initram

Make backup:

root # cd /mnt/custom/customcd
root # tar cpf isoroot-bkp.tar isoroot

Configure initram created by Área31 Hackerspace

Get latest initram from Área31 Hackerspace:

root # mkdir -p /usr/src/initramfs
root # cd /usr/src/initramfs
root # rm /mnt/custom/customcd/isoroot/isolinux/initram.igz
root # wget https://area31.net.br/downloads/releases/initram-ara31-overlayfs-5.0.igz -O /usr/src/initram.igz

Unpack initram created by Área31 Hackerspace:

root # cat /usr/src/initram.igz | xz -d | cpio -id


Or unpack initram from LiveCD:

root # cat /livemnt/boot/isolinux/initram.igz | xz -d | cpio -id


Copy modules from kernel to initram

root # cp -rp /mnt/custom/customcd/files/lib/modules/* lib/modules


Repack initram

root # rm -f /usr/src/initram.igz
root # cd /usr/src/initramfs
root # find . | cpio -H newc -o | xz --check=crc32 --x86 --lzma2 > /usr/src/initram.igz


Copy new initram and kernel to isoroot dir

root # cp /usr/src/initram.igz /mnt/custom/customcd/isoroot/isolinux/initram.igz
root # cp /mnt/custom/customcd/files/boot/vmlinuz-*gentoo* /mnt/custom/customcd/isoroot/isolinux/rescue64
root # mkdir -p /mnt/custom/customcd/isoroot/boot/EFI/BOOT /mnt/custom/customcd/isoroot/efi/boot
root # cp /mnt/custom/customcd/isoroot/efi/bootx64.efi /mnt/custom/customcd/isoroot/boot/EFI/BOOT/bootx64.efi
root # cp /mnt/custom/customcd/isoroot/efi/bootx64.efi /mnt/custom/customcd/isoroot/efi/boot

Remove temporary files and umount /proc, /dev, /sys

root # rm -rf /mnt/custom/customcd/files/usr/src/* /mnt/custom/customcd/files/var/tmp/portage
root # cd / ; umount /mnt/custom/customcd/files/var/cache/portage /mnt/custom/customcd/files/var/git
root # cd /mnt/custom/customcd/files/ ; umount proc sys
root # umount -l dev ; cd


Make iso file

root # sh /usr/share/sysresccd-area31/sysresccd-area31-targets make-iso


Get new iso funtoo

ISOs are always generated in the same directory:

/mnt/custom/customcd/isofile


How to install Livecd on USB-Stick

You first have to mount the ISO image (or a media where you have burned it). You just need an empty directory on your system on which the ISO image can be mounted. We will use /tmp/cdrom in this example but you can use any directory such as /mnt/cdrom:

Mount the ISO image

root # mkdir -p /tmp/cdrom
root # mount -o loop,exec funtoo-livecd-area31-*.iso /tmp/cdrom

Plug in the USB stick

Just make sure the USB stick has been plugged in, and wait a few seconds to be sure the device has been detected by the system.

Execute the installer

Now you just have to execute the installation script which is at the root of the CD-ROM. This script requires several commands to run but it won't be a problem. To be sure the script will always work, these commands are part of the CD-ROM:

root # cd /tmp/cdrom
root # bash ./usb_inst.sh

Unmount the ISO image

Now you can unmount the ISO image

root # cd ~
root # umount /tmp/cdrom