Skip to content

Install Gentoo GNU Linux Gude

Dmitriy edited this page Jun 11, 2016 · 7 revisions

Установка:

Данный гайд предназначен для того чтобы оптимизировать систему под современный 64-битный ПК, добиться максимальной скорости и помочь избежать распостраненных ошибок при установке. Это не замена официальной документации, ее все равно придется придерживаться, внося изменения на свой вкус. Это общие рекомендации, а не пошаговый гайд, читать это надо перед установкой по хендбуку или во время.

  1. Выбор Live CD
    Наиболее удобным и оптимальным считаю SystemRescueCD - поддерживает efi, имеет 64-битное ядро и графическую оболочку, совместим с Gentoo GNU/Linux. https://www.system-rescue-cd.org/Download
  2. 2. Разметка диска. Для разметки диска есть множество утилит, предлагаю использовать fdisk, его преимущество в том, что он сначала сделает карту разметки, и только потом запишет изменения на диск. Чтобы начать наберите: fdisk -t gpt /dev/sda В утилите введете m для помощи. g - Создаст новую GPT-разметку Типы разделов которые понадобятся: 1 EFI System Partition 24 Linux root (x86-64) 28 Linux home Еще есть parted, которым пользоватся может показаться проще, но он немедленно записывает изменения на диск. Если делаете разметку parted-ом не забудьте добавить метку esp на соответсвующий раздел. Собственно разметка: 1) EFI System Partition (33-50MB) - Здесь будет лежать ядро весом мегабайт 5, больше 33 мегабайт не имеет смысла делать. 2) Root (60GB) - системный раздел, нельзя делать его 10 гигабайтным, даже если система вместится, при компиляции больших пакетов он будет переполнятся, временные файлы могут занимать 10-20 гигабайт. 3) Home - ваша файлопомойка, здесь будут лежать все файлы, что вы скачивате через торрент и браузер. Обычно во всяких дистрибутивах рекомендуется включать файл подкачки, но по состоянию на 2016 это пережиток прошлого, если мало памяти то оптимизируйте систему под эффективное потребление памяти. Файл подкачки не решает проблему переполнения оперативной памяти, когда она переполняется ПК практически невозможно использовать, что с файлом, что без. Однако стоет заметить что если вы юзаете suspent to disk то должен быть файл подкачки размером с вашу оперативную память, но я его не рекомендую, suspend to RAM гораздо быстрее работает. Пакет для этих режимов: sys-power/suspend 3. Создание файловых систем Прежде всего надо выбрать файловые системы, перечислю 3 актуальных: fat32 - Нужна только для Efi System Partition (ESP) https://wiki.gentoo.org/wiki/FAT f2fs - Файловая система от Samsung для твердотельных накопителей (SSD и флешки), эффективно использует накопитель и продлевает ему жизнь. https://wiki.gentoo.org/wiki/F2FS ext4 - Файловая система для жестких дисков, имеет опции для оптимизации под твердотельные накопители, они выключены по умолчанию. https://wiki.gentoo.org/wiki/Ext4 При создании файловой системы желательно проверить ее на бед-блоки, делается это параметром -c, для подробной проверки на бед блоки его надо указать дважды, например: mkfs.f2fs -c -c /dev/sda2 4. Выбор stage3. Рекомендую nomultilib - он не будет содержать 32-битного кода совершенно. Multilib нужен если вам нужен wine, 32-битные библиотеки или бинарники. Еще есть uclibc - маленький и годный вариант для встраиваемых систем, но почему бы не накатить на свой пк, особенно если мало памяти или хочется еще больше производительности? Сам Я пока не пробывал его на своем десктопе, но собираюсь. uclib/musl могут не поддерживать некоторые пакеты с некоторыми флагами, прежде чем просто устанавливать надо прочитать документацию и HOWTO/README-файлы, добавить оверлеи c патчами, обновлятся как там написано. Можете прочитать так-же про эти либы: http://www.etalabs.net/compare_libcs.html https://blogs.gentoo.org/blueness/2015/08/04/alt-libc-the-state-of-uclibc-and-musl-in-gentoo-part-1/ uclibc: https://wiki.gentoo.org/wiki/Project:Hardened_uClibc http://opensource.dyc.edu/node/345 http://distfiles.gentoo.org/releases/amd64/autobuilds/current-stage3-amd64-uclibc-hardened/ https://dev.gentoo.org/~vapier/uclibc/uclibc.txt Готовый xfce Desktop на uClibc: https://wiki.gentoo.org/wiki/Project:Hardened_uClibc/Lilblue musl: https://wiki.gentoo.org/wiki/Project:Hardened_musl http://distfiles.gentoo.org/experimental/amd64/musl/ Готовый xfce Desktop на musl: https://wiki.gentoo.org/wiki/Project:Hardened_musl/Bluedragon Имейте в виду что на nomultilib/musl/uclibc речи о запуске 32 битных ELF не идет, на счастье уже не 2002 и все можно скомпилировать под 64 бита, но игроделы этому не научились так что с этими профилями вам непаиграть (разве что в опенсорс-игры), стим вроде на эти профили тоже не ставится. Не ставьте Hardened если не знаете что делаете: https://wiki.gentoo.org/wiki/Project:Hardened https://wiki.gentoo.org/wiki/Hardened_Gentoo https://wiki.gentoo.org/wiki/Hardened/FAQ https://en.wikipedia.org/wiki/Hardened_Gentoo http://resources.infosecinstitute.com/gentoo-hardening-part-1-introduction-hardened-profile-2/ 5. make.conf В этом файле определяются основные параметры компиляции, Я опишу два стула - как сделать быструю или экономную систему, но выбрать можно что-то среднее. Путь к файлу: /etc/portage/make.conf Конфиг для быстрой системы: #-masm=att/intel -pthread -mtune= -m64 -m32 -mcpu= -ftree-parallelize-loops= -std=gnu11 -std=gnu++14 - осторожно, не каждый пакет соберется с этими опциями. CFLAGS="-march=native -O2 -pipe" //native всегда лучше CPU-специфичного параметра, явное указание поколения подтянет опции доступные самому простому процессору из поколения. CXXFLAGS="-march=native -O2 -pipe" //Можете добавить -m64 чтобы явно указать компилятору собирать 64-битные пакеты //Если вы выбрали multilib, то не пишите -m64 MAKEOPTS="-j4" // Цифра - количество потоков, количество_потоков+1 работает медленнее пруф: https://blogs.gentoo.org/ago/2013/01/14/makeopts-jcore-1-is-not-the-best-optimization/ CHOST="x86_64-pc-linux-gnu" // Это дефолты и перенастраивать их крайне нежелательно и не имеет смысла. CPU_FLAGS_X86="" //Эту переменную можно задать с помощью cpuinfo2cpuflags-x86 >> /etc/portage/make.conf CTARGET="x86_64-pc-linux-gnu" USE="-fortran -static -static-libs" //Вы можете включить статические библиотеки, это должно дать прирост производительности, но приведет к некоторым неудобствам. //Имейте в виду что если выбрали статически линкованые бинарники при обновлении одной библиотеки прийдется пересобирать части этих библиотек для каждого пакета, статические библиотеки занимают немного больше места на диске и в оперативной памяти, так что может быть лучше их отключить. Если включить то собраные бинарники должны работать быстрее. //Вообще эти флаги лучше задавать локально. //Инфо о статических либах: https://kb.iu.edu/d/akqn https://en.wikipedia.org/wiki/Static_library https://www.akkadia.org/drepper/no_static_linking.html http://sta.li/ # -fortan Уберет компилятор фортрана из gcc, статические библиотеки вызываются быстрее динамических, но потребляют больше памяти, еще поможет избежать проблем с зависимостями при обновлении библиотек. INPUT_DEVICES="evdev" //Если используете тачпад или графический планшет то придется добавить synaptics ACCEPT_KEYWORDS="~amd64" //Начет отображать бета-версии пакетов, как правило большинство из них официально стабильно. Без этой опции будут скачиваться довольно старые пакеты. Конфиг для экономной системы отличается парой флагов: CFLAGS="-march=native -mtune=native -Os -pipe" CXXFLAGS="-march=native -mtune=native -Os -pipe" USE="-fortran -static -static-libs" Если вам интересно посмотреть на готовый make.conf для Intel Core i3 4330 с встроеной графикой можете посмотреть здесь: https://github.com/DmitriyHetman/gentoo/blob/master/make.conf 6. /etc/portage/package.use/localuses В этот файл добавим пару флагов, чтобы gcc собирался без фортрана, а ядро можно было оптимизировать под свою машину. sys-power/suspend -crypt -lzo threads //Программа понадобится если хотите пользоватся спящим режимом, флаги я на свой вкус добавил. sys-kernel/gentoo-sources symlink experimental //Включит патч для оптимизации под свое железо //При конфигурировании ядра в настройках процессора выберите Processor family (Native optimizations autodetected by GCC) ---> sys-devel/gcc -fortran 7. Обновление GCC Для обновления компилятора просто введите в терминал emerge --ask sys-devel/gcc Компилятор соберется под ваше железо, станет быстрее компилировать и лучше оптимизировать, можно пересобрать второй раз, чтобы он сам собой был собраным. cmake тоже не лишним будет обновить и пересобрать под ваше железо. emerge --ask dev-util/cmake 8. Конфигурирование ядра И тут у нас два стула: монолитное или модульное ядро. Я предпочитаю монолитное, для этогод достаточно просто выключить loadable modules support. Начнем с того что нельзя собирать модулем все то, что обеспечивает доступ к корневому разделу, Ядро должно иметь все необходимое для того, чтобы получить доступ к корневому разделу и считать с него информацию чтобы подтянуть оттуда все модули (Модулем можно собрать драйвера графики, аудио, Ethernet, все файловые системы и разметки дисков кроме тех что использует системный раздел). Инструмент для определения нужных драйверов ядра: http://kmuto.jp/debian/hcl/ Еще, чтобы узнать список нужных модулей, надо в своем livecd выполнить: lsmod lspci -k Переходим в каталог исходников активного ядра
    1. cd /usr/src/linux
    Сохраняем на всякий случай конфигурационный файл
    1. cp -a .config .config.backup
    Далее подключите все используемые устройства к компьютеру, чтобы подхватились модули через udev и выполните автоматическую установку только используемых модулей
    1. make localmodconfig
    В этом пункте происходит сильная зачистка конфигурационного файла. Затем проверьте включение некоторых модулей и при их отсутствии включите. Корневую файловую систему, Ваш контроллер диска, ramdisk, если используете initrd (что совсем не обязательно) включайте их не модулями, а сразу в ядро. Модулями подключите ntfs, файловую систему для cd, включите пункт scsi cd-rom, usb принтеры, мониторы и прочую используемую usb технику, которую не увидел скрипт. Ну и само собой Ваши любимые пункты проверьте на правильность настроек, но как правило скрипт их не затрагивает.
    1. make menuconfig
    Далее сохраните настройки в .config и выходите Теперь запускаем максимально быструю компиляцию ядра, модулей и их установку, включая пересборку и подключение внешних модулей типа nvidia и virtualbox (у Вас должен быть установлен пакет sys-kernel/module-rebuild)
    1. make -j(кол-во ядер) && make modules_install
    Затем в grub подключаем новое ядро, но возможно даже не придется переделывать grub, если это повторная компиляция. Таким образом Вы получите минимальную систему непосредственно для Вашего компьютера из стандартного конфигурационного файла gentoo. В случае неуспеха, что маловероятно, скопируйте .config.bak на место .config
    1. cp -a /usr/src/linux/.config.bak /usr/src/linux/.config
    и выполните для компиляции ядра со стандартными параметрами gentoo
    1. make -j(кол-во ядер)
    2. make modules_install
    P.S. Хитрости. Перед началом компиляции скопируйте каталог boot, например, в домашнюю директорию. И в случае неудачи Вы всегда сможете быстро восстановить ядро из liveCD (если ядро у Вас только одно), удалением испорченного boot из корневого раздела и восстановлением из Вашей архивной копии. Для самой быстрой загрузки ядра измените 2 пункта ядра так как показано у меня: Preemption Model (Preemptible Kernel (Low-Latency Desktop)) и Timer frequency (1000 HZ) После этих мероприятий ядро на медленном atom n270 грузится чуть медленнее 1 секунды. Ядро сжимать лучше алгоритмом lz4, чтобы установить архиватор выполните: emerge --ask app-arch/lz4 В конфигурации ядра выберете этот алгоритм: General setup> Kernel compression mode (LZ4) ---> Потом включите автоопределение процессора компилятором: Processor type and features ---> Processor family (Native optimizations autodetected by GCC) ---> А также почти все остальное будет полезным перед или во время конфигурации: https://wiki.gentoo.org/wiki/Kernel/Configuration https://wiki.gentoo.org/wiki/Kernel/Gentoo_Kernel_Configuration_Guide https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Kernel http://swift.siphos.be/linux_sea/kernelbuilding.html После того как отконфигурировали ядро можно отредактировать Makefile добавив флагов оптимизации в переменные: HOSTCFLAGS = -march=native -mtune=native -pipe \\Я добавляю в эти переменные -m64, а в конфиге ядра отключаю эмуляцию 32 бит, моя система полностью состоит из 64-битных ELF-бинарников. HOSTCXXFLAGS = -march=native -mtune=native -pipe KBUILD_CFLAGS = -march=native -mtune=native -pipe В первых двух можно заменить O2 на Os, если у вас мало оперативной памяти. Если мало памяти так-же нужно поставить флаг optimize for size в конфиге ядра. Обязательно прочтите эту статью если решили не использовать загрузчик и грузить ядро из биоса(efi-stub kernel): https://wiki.gentoo.org/wiki/EFI_stub_kernel И еще пара о том-же: https://lorwiki.ru/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_Linux_%D0%BD%D0%B0_EFI https://wiki.gentoo.org/wiki/Efibootmgr (Но ядро должно грузится и без него) Короткий гайд по efi-stub kernel: Прописываем в /etc/fstab наш раздел как /boot. >/dev/sda1 /boot vfat noauto 0 0 Далее монтируем получившийся раздел >mount /boot 2) Компилируем efistub kernel (не забываем в kernel commandline указать / раздел. root=/dev/sdX) 3) Устанавливаем скомпилированное ядро в /boot >make install && make modules_install 4) Копируем ядро в папку в раздел efi, где оно будет доступно для загрузки из UEFI > cp /boot/vmlinuz-* /boot/EFI/gentoo/bootx64.efi 4) Емержим efibootmgr, понадобится нам для того чтобы указать UEFI где находится наше ядро и подписать его. >sudo emerge efibootmgr 5) Записываем данные о ядре в UEFI >efibootmgr -c -d /dev/sdX -p 2 -L «gentoo» -l '\EFI\gentoo\bootx64.efi' 6) посмотреть удачно ли записалась информация в загрузчик >efibootmgr -v Ели ваше ядро не может получить доступ к корневой директории то надо явно указать адрес раздела PARTUUID: Just to clarify UUIDs are the only reliable way for the kernel to identify hard drives. There are two types: UUID, which is stored in the filesystem and is not available to the kernel at boot-time, and PARTUUID, which is stored in the partition table and IS available at boot time. So you have to use root=PARTUUID=SSSSSSSS-PP as /dev/sd?? can change with devices plugged/unplugged. Don't forget to capitalize the hexadecimal number SSSSSSSS-PP you get from blkid! The more easy to use root=LABEL= root=UUID= only work with an initramfs that fetches these identifiers. So, if you use a non-empty initramfs, you can have all three! With an empty initramfs, you only have PARTUUID. Паста взята с http://unix.stackexchange.com/questions/93767/why-cant-i-specify-my-root-fs-with-a-uuid#93777 9. Заключительные шаги. passwd - введите пароль для рута, пользователя добавите уже когда загрузитесь в систему. 10. Настройка fstab /etc/fstab
    1. noatime,nobarrier,noinit_itable,nouser_xattr,noacl,noexec,nosuid,nodev //флаги которые вам могут понадобится
    /dev/sda2 / ext4 noatime,nobarrier,nouser_xattr,noacl 0 0 //noacl - вполне себе нармальная опция, а вот от атрибутов вам вряд-ли удастся избавится. /dev/sda1 /boot vfat noauto,noatime,noexec,nosuid,nodev 0 0 /dev/sda3 /home/dmitriy/files/ ext4 noatime,nobarrier,nouser_xattr,noacl 0 0 //файлопомойка не лежит прямо в юзере или хоме, таким образом конфигов и исполняемых файлов в файлопомойке не будет, что оптимизирует работу пк если у вас SSD shm /tmp/ tmpfs size=3968M 0 0 // Временные файлы хранятся в оперативной памяти, память свободна если там ничего не лежит shm /var/tmp/ tmpfs size=3968M 0 0 \\ Это ускорит процесс компиляции, и еще много всяких процессов. Подробности в ссылках ниже: shm ~/.cache tmpfs size=3968M 0 0 Чтобы понять что такое tmpfs и добавить в исключения жирные пакеты, компилирование которых не вместится в вашей памяти прочтите следующие статьи: https://wiki.gentoo.org/wiki/Portage_TMPDIR_on_tmpfs https://wiki.gentoo.org/wiki/Tmpfs 11. Установка графической оболочки. Приведены ссылки по вейланду, с иксами проблем никаких не будет. Новичкам поясняю что xorg-server сильно устарел, содержит массу ненужных компонентов, поэтому команда x.org взялась за новый протокол, на который уже перешли основные дистрибутивы GNU/Linux. Под вейланд еще не все приложения заточены, поэтому некоторые будут работать через прослойку xwayland, если захотите, потери производительности в прослойке меньше 5%. Читаем маны: man weston man weston.ini man xkeyboard-config Создаем файлы: ~/.bash_profile if [ -z "${XDG_RUNTIME_DIR}" ] then export XDG_RUNTIME_DIR="/tmp/${UID}-runtime-dir" if [ ! -d "${XDG_RUNTIME_DIR}" ] then mkdir "${XDG_RUNTIME_DIR}" chmod 0700 "${XDG_RUNTIME_DIR}" fi fi ~/.config/weston.ini [core] modules=xwayland.so repaint-window=16 idle-time=0 [keyboard] keymap_layout=us,ru keymap_options=grp:caps_toggle,grp_led:caps [shell] background-image=none #background-clolor=0x0000000 panel-color=0x00000000 #num-workspaces=3 animation=none close-animation=none startup-animation=none focus-animation=none [output] name=VGA1 seat=default

    Полезные ссылки:

  • Wayland:
    https://wayland.freedesktop.org/ http://www.chaosreigns.com/wiki/Main_Page http://www.phoronix.com/scan.php?page=news_item&px=Intel-Ozone-Wayland-Continues http://projects.genivi.org/wayland-ivi-extension/ http://www.linuxfromscratch.org/blfs/view/systemd/general/weston.html http://losst.ru/testirovanie-wayland-v-gentoo https://wiki.gentoo.org/wiki/Wayland https://en.wikipedia.org/wiki/Wayland_(display_server_protocol https://wiki.archlinux.org/index.php/wayland https://forums.gentoo.org/viewtopic-p-7486872.html#7486872 https://m.reddit.com/r/Gentoo/comments/2e1rn5/wayland_on_gentoo_any_updates/ https://packages.gentoo.org/packages/dev-libs/sway https://packages.gentoo.org/packages/dev-libs/weston
  • Chromium for Wayland:
    https://www.phoronix.com/scan.php?page=news_item&px=Google-Chrome-50 https://www.phoronix.com/scan.php?page=news_item&px=Intel-Ozone-Wayland-Continues https://www.phoronix.com/scan.php?page=news_item&px=MTU5NTU https://github.com/01org/ozone-wayland/blob/master/README.md https://docs.google.com/document/d/118Cmq_dedHOr4jfyVeE4jBhV7hXzhnaVCqegNMGano0/edit https://www.chromium.org/developers/design-documents/ozone
  • Гайды по установке.

    На русском:

    https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation/ru https://lisakov.com/blog/gentoo-for-goofy/ http://www.unix-lab.org/posts/install-gentoo/ http://nix-sa.blogspot.com/2011/09/gentoo-1.html https://github.com/for2ch/Linux-F.A.Q/wiki/Install-Gentoo http://pastebin.com/U3Lg1pCp

    На английском:

    https://wiki.gentoo.org/wiki/Handbook:AMD64/Full/Installation http://xed.ch/h/gentoo http://swift.siphos.be/linux_sea/installgentoo.html https://wiki.installgentoo.com/index.php/Gentoo#Installation_method http://www.unixmen.com/a-beginners-guide-to-install-gentoo/ http://www.wikihow.com/Install-Gentoo-Linux-from-Ubuntu http://www.tecmint.com/gentoo-linux-installation-guide/
  • Для новичков в GNU/Linux:
    http://swift.siphos.be/linux_sea/ http://nix-sa.blogspot.com/2011/09/linux-gentoo.html
  • Работа с пакетами:
    https://wiki.gentoo.org/wiki/Gentoo_Cheat_Sheet https://wiki.gentoo.org/wiki/Portage#Usage http://pastebin.com/BgcPbjG9
  • Шифрование и безопасность:
    https://wiki.gentoo.org/wiki/Dm-crypt https://wiki.installgentoo.com/index.php?title=Anonymizing_yourself&redirect=no http://www.unshackledmind.net/2013/05/gentoo-full-disk-encryption/ https://wiki.installgentoo.com/index.php/Encryption https://wiki.installgentoo.com/index.php/DNSCrypt http://nix-sa.blogspot.com/2012/03/truecrypt-gentoo-calculate-linux.html
  • Использование видеопамяти для swap/vramfs:
    https://wiki.archlinux.org/index.php/swap_on_video_ram https://github.com/Overv/vramfs https://www.opennet.ru/opennews/art.shtml?num=41267 http://www.gentoo-wiki.info/TIP_Use_memory_on_video_card_as_swap
  • Ускорение ядра с помощью CUDA [deprecaded]:
    http://hackaday.com/2012/12/14/leveraging-the-gpu-to-accelerate-the-linux-kernel/ http://www.phoronix.com/scan.php?page=news_item&px=OTQxMQ https://news.ycombinator.com/item?id=2521820 https://github.com/wbsun/kgpu https://github.com/wbsun/kgpu/wiki/KGPU---Home https://www.flux.utah.edu/project/kgpu http://www.cs.utah.edu/~wbsun/
  • Разширения для консоли:
    https://wiki.gentoo.org/wiki/Tmux https://wiki.gentoo.org/wiki/GPM equery uses ncurses - убедитесь что включили GPM, если хотите использовать мышь в TTY.
  • Оптимизации:
    http://optimization.hardlinux.ru/ https://wiki.gentoo.org/wiki/CFLAGS
  • Использование OpenSWR вместо Mesa:

    OpenSWR - самый быстрый софтварный рендер.

    OpenSWR>Gallium3D>Mesa http://openswr.org/ https://github.com/OpenSWR https://lists.freedesktop.org/archives/mesa-dev/2015-October/097816.html https://www.phoronix.com/scan.php?page=news_item&px=Intel-OpenSWR-Mesa
  • Инфраструктура Gentoo:
  • Скрипты для бекапа конфигов и вывода информации о железе:
    https://github.com/DmitriyHetman/gentoo/tree/master/Scripts
  • </ul>