zfs and portage’s var directories
While /var
is usually for non-crucial content, caches[3], pid files, etc, portage has a different idea [1]:
/var/db/pkg Portage stores the state of your system
/var/lib/portage The versions for the applications you have explicitly installed
These directories store the current tree state, there is no way recreating them if they are deleted.[2]
So if you plan to use ZFS with separate /
and /var
to take a snapshot of /
, install some packages and then rollback the snapshot as you changed your mind, your /
and /var
will be out of sync!
/var/db/pkg
and /var/lib/portage
has to be on /
.
mkdir /usr/var_db_pkg /usr/var_lib_portage cp -r /var/lib/portage /usr/var_lib_portage cp -r /var/db/pkg /usr/var_db_pkg rm -rf /var/lib/portage /var/db/pkg ln -s /usr/var_lib_portage /var/lib/portage ln -s /usr/var_db_pkg /var/db/pkg
[1] https://wiki.gentoo.org/wiki/Directories
[2] Or at least it is painfull. To avoid the initial circular-dependency hell, issue:
emerge --nodeps dev-lang/perl dev-lang/python dev-libs/libxml2 dev-util/cmake dev-util/pkgconfig sys-apps/acl ys-apps/systemd sys-devel/automake sys-libs/glibc sys-libs/ncurses sys-libs/zlib virtual/libudev
[3] what you'd have to recreate: powertop's calibration measurements, gentoolkit's busybox and initramfs
sytem information/monitoring
# sys-apps/pciutils lspci -k # app-admin/sysstat iostat -dm 2 # sys-process/htop htop # sys-apps/util-linux lsblk # sys-apps/usbutils lsusb -v # sys-process/iotop iotop -o #sys-power/acpi acpi # app-admin/mcelog emerge -avq sys-apps/pciutils app-admin/sysstat sys-process/htop sys-apps/util-linux sys-apps/usbutils sys-process/iotop sys-power/acpi
intel 7265 wifi, iwlwifi and systemd
compile your kernel to support:
CONFIG_IWLWIFI=y
CONFIG_IWLMVM=y
# check which firmware version suits your kernel [1] emerge -av iwl7265-ucode iw wpa_supplicant # or maybe not. If your kernel want's another version, (see dmesg) (3.19 wanded the D: iwlfiwi-7265D.12.ucode) just download the correct version, unpack and move the ucode file to /usr/lib/firmware # iwconfig is deprecated, use iw to check the wifi iface iw dev # ... interface wlp2p0 # manual: wpa_supplicant -B -i wlp2p0 -c /etc/wpa_supplicant/wpa_supplicant.conf dhcpcd wlp2p0 # or by systemd. Do not enable wpa_supplicant, it will be started by dhcpcd #systemctl enable wpa_supplicant@wlp2p0 cat "env wpa_supplicant_driver=nl80211" >> /etc/dhcpcd.conf systemctl enable dhcpcp@wlp2p0
# my wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
update_config=1
network={
ssid="MY ESSID"
psk="MY PASS"
proto=RSN
key_mgmt=WPA-PSK
pairwise=CCMP
auth_alg=OPEN
}
[1] https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi
update gentoo
emerge --update --newuse --deep --with-bdeps=y @world -av emerge --depclean -av emerge @preserved-rebuild -av perl-cleaner --all python-updater revdep-rebuild -pv rm -rf /usr/share/man/?? rm -rf /usr/share/man/??_* eix-test-obsolete glsa-check -t all
migrating from openrc to systemd
# remove blocking package, systemd provides the functionality. emerge -C sys-fs/udev openrc netifrc virtual/service-manager sysvinit # comment out service manager and openrc from your @system set, defined in /usr/portage/profiles/base/packages # add systemd to use flags emerge -av systemd emerge -av virtual/udev virtual/libudev # set kernel options& recompile Gentoo Linux ---> Support for init systems, system and service managers ---> [*] systemd # to kernel command line: init=/usr/lib/systemd/systemd hostnamectl set-hostnamecat /etc/locale.conf # LANG="en_US" localectl set-locale LANG=en_US localectl set-keymap us
install gentoo from liveCD
suppose we booted up for a liveCD/USB
#mount the destination device, DEV mount DEV /mnt/gentoo cd /mnt/gentoo wget http://mirror.mdfnet.se/gentoo/releases/amd64/autobuilds/current-stage3-amd64-nomultilib/stage3-amd64-20150226.tar.bz2 tar xjpf stage3* cd / mkdir -p /mnt/{dev,proc,sys} mount -t proc proc /mnt/gentoo/proc mount --rbind /dev /mnt/gentoo/dev mount --rbind /sys /mnt/gentoo/sys cp -L /etc/resolv.conf /mnt/gentoo/etc/ chroot /mnt/gentoo /bin/bash source /etc/profile emerge-webrsync eselect profile list passwd #timezone cp /usr/share/zoneinfo/Europe/Oslo /etc/localtime echo "Europe/Oslo" > /etc/timezone emerge --config timezone-data # glibc will generate lang files according to: nano locale.gen locale-gen eselect locale list # check /etc/fstab
gentoo gcc optimalization – make.conf
edit you /etc/portage/make.conf
# chost [4] # 64bit intel processors are AMD64 or x86_64, IA64 is for ithanium CHOST="x86_64-gentoo-linux-gnu" # CPU arch # use gcc to detech your arch: gcc -c -Q -march=native --help=target | grep march CFLAGS="-march=broadwell -O2 -pipe -fomit-frame-pointer" CXXFLAGS="${CFLAGS}" # emerge -1v app-portage/cpuinfo2cpuflags # cpuinfo2cpuflags CPU_FLAGS_X86="mmx mmxext sse sse2 sse3" USE="${CPU_FLAGS_X86} ..." # N = #CPUs + 1 or just #CPUs, see link[3] # interl 5y10 has 2 cores (x2 hyper threading): MAKEOPTS="-j4" ABI_X86="64" # debug symbols stripped FEATURES="splitdebug" #misc: # accept all unstable packages too ACCEPT_KEYWORDS="~amd64" # accept all licenses ACCEPT_LICENSE="*" # x11-base/xorg-drivers VIDEO_CARDS="intel i965" INPUT_DEVICES="evdev keyboard mouse mutouch virtualbox synaptics" # pick the highest if possible PYTHON_TARGETS="pypy python3_4" RUBY_TARGETS="ruby22"
[1] Gentoo wiki: http://wiki.gentoo.org/wiki/GCC_optimization
[2] Look up your CPU architecture https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/i386-and-x86-64-Options.html#i386-and-x86-64-Options
[3]https://blogs.gentoo.org/ago/2013/01/14/makeopts-jcore-1-is-not-the-best-optimization
[4]http://wiki.gentoo.org/wiki/CHOST
direct rendering without root
If as a non-root user even thou GLX module is loaded:
user $ cat /var/log/Xorg.0.log | grep -i glx LoadModule: "glx"
you don't have direct rendering:
user $ glxinfo | grep direct direct rendering: Yes
But you do have it as a root, you might want to add the user to the correct group:
root $ gpasswd -a [USERNAME] video
getting rid of consolekit and policykit
systemd
makes them redundant, getting rid of them is pretty easy:
edit /etc/pam.d/system-auth
and enable pam_systemd.so
:
session optional pam_systemd.so
and re-emerge pambase
USE=-consolekit emerge pambase
and sincle polkit
is used by upower
and udisks
(automount) and these 2 is used by kdelibs
, you may want ot rebuild kdelibs too:
USE="-upower -udisks" emerge kdelibs
link: gentoo wiki
update all packages under same category (for example KDE) with emerge
from eix --help
:
-#, --only-names --pure-packages with format/ -I, --installed Next expression only matches installed packages. -C, --category category
The emerge
command:
emerge -av $(eix -I#C kde-base)