Gentoo Linux сборник статей


mount -t ntfs -o utf8,umask=0,ro /dev/hdd2



Pdf просмотр
страница67/79
Дата14.11.2016
Размер5.55 Mb.
Просмотров11400
Скачиваний1
1   ...   63   64   65   66   67   68   69   70   ...   79
mount -t ntfs -o utf8,umask=0,ro /dev/hdd2
/mnt/win1
utf8 - использовать UTF-8 для перекодировки имён файлов.
Автомонтирование
Если у вас все еще есть разделы ОС Windows на харде,то можно добавить монтирование этих разделов при загрузке.Для этого необходимо отредактировать файл /etc/fstab. Файл: /etc/fstab
794

Русское WIKI
/dev/hda9 /mnt/win1 vfat auto,codepage=866,iocharset=koi8-r,quiet,umask=000 0 0
#/dev/hda9 /mnt/win1 vfat auto,codepage=866,iocharset=koi8-u,quiet,umask=000 0 0
/dev/hda3 /mnt/win2 ntfs auto,nls=koi8-r,umask=0,user 0 0 еще к опциям можно добавить showexec, чтобы все файлы не выглядели исполняемыми, в случае с FAT32
Udev
Настройка системы
Установка необходимых программ
emerge udev hotplug coldplug
Конфигурация ядра
Для активизации udev нам необходимо ядро 2.6. Лично у меня 2.6.12-mm1.
General setup --->
[*] Support for hot-pluggable devices
File systems --->
Pseudo filesystems --->
[ ] /dev file system support (OBSOLETE)
[ ] Automatically mount at boot (NEW)
[*] Virtual memory file system support (former shm fs)
Примечание: devfs Может быть включен, но автоматическое монтирование обязано быть выключено. А с учетом того, что из 2.6.13 его вообще собираются убрать... ну смотрите сами.
Примечание: Во всяком случае, из 2.6.14 убрали
Ядро собираем и устанавливаем.
Конфигурация системы
Не буду рассматривать как udev работает из таррбола, рассматриваю вариант чистого udev.
/etc/conf.d/rc:
RC_DEVICE_TARBALL="no"
RC_DEVFSD_STARTUP="yes"
795

Русское WIKI
Примечание: Последнюю опцию можно поставить в "no", когда мы убедимся в нормальной работоспособности udev
rc-update add coldplug boot rc-update add hotplug default
Конфигурация процесса загрузки
GrUB
К строке kernel от старого ядра необходимо дописать:
kernel /boot/kernel-2.6.9-r4 root=/dev/hda3 gentoo=noudev
А в строке kernel для нового ядра прописать:
kernel /boot/kernel-2.6.10-r6 root=/dev/hda3 gentoo=nodevfs
Troubleshuting
Попытка номер раз
В принципе можно перегружаться, но нас ждет одно неприятное сообщение. Вот примерно такое:
WARNING: Unable to open an initial console
Для того чтобы все было хорошо, нам необходимо загрузиться с другого носителя
(например любой LiveCD) подмонтировать наш корневой раздел, и в каталоге /dev
(каталог по идее должен оказаться абсолютно пустым) проделать следующее:
Code:
# mknod -m 660 console c 5 1
# mknod -m 660 null c 1 3
POMAH007: Зачем же так жестоко - заставлять грузиться с компакта? Согласно udev guide с www.gentoo.org (http://www.gentoo.org/doc/en/udev-guide.xml), доступ к девственному /dev можно получить альтернативно: Code: Code Listing 3.1: Listing device nodes available at boot
# mkdir test
# mount --bind / test
# cd test/dev
# ls
796

Русское WIKI
Попытка номер два
С консолью вроде все в порядке, а вот иксы не хотят... грузимся в шелл и в файле конфигурации Xorg прописываем в разделе мыши:
Option "Device" "/dev/input/mice"
PS
Ну теперь вроде все так как было раньше. и старая конфигурация тоже работает.
Если старая конфигурация не нужна, то убираем все из загрузчика, ставим в
/etc/conf.d/rc - "no" и живем спокойно под udev.
PPS
Кстати тарболл может потребоваться пользователям нестандартных устройств, а так же некоторых сторонних модулей ядра
Использование CFLAGS для оптимизации собранных программ
Для чего все это надо?
Стремление выжать из своего компьютера максимум производительности есть в каждом, ну почти в каждом ;-). Особенно его много в русских линуксоидах
Gentoo'шниках ;) Мы попытаемся путем изменения флагов оптимизации ускорить работу приложений нашей системы.
ВНИМАНИЕ: Некоторые флаги могут сделать приложения нестабильными, так что нужно быть аккуратным.
Оптимизация
Переменная окружения CFLAGS
Для указания параметров оптимизации компилятору GCC, используется переменная окружения CFLAGS. Эта переменная определена в /etc/make.conf, её можно изменить двумя способами:
Отредактировать эту переменную в /etc/make.conf;
Экспортировать ее в окружение (emerge будет использовать эти параметры, но каждый раз выполнять export неудобно): export CFLAGS='параметры оптимизации'
797

Русское WIKI
Уровни оптимизации
Для gcc версий 3.x и выше существует только 5 уровней оптимизации: -O0 (без оптимизации), -O1, -O2 и -O3 (O3 - самый высокий уровень), а так же -Os.
Примечание: Если вы используете несколько -O опций, то только последняя объявленная будет оказывать влияние на процесс компиляции.
-O0
Отключает оптимизацию. Только переменные, объявленные register, сохраняются в регистрах.
-O(-O1)
Включает оптимизацию. Пытается уменьшить размер кода и ускорить работу программы. Соответственно увеличивается время компиляции. При указании -O активируются следующие флаги: -fthread-jumps, -fdefer-pop.
На машинах, у которых есть слоты задержки, включается опция -fdelayed-branch.
На тех машинах, которые способны поддерживать отладку даже без указателя на стек функции, также включается опция -fomit-frame-pointer.
На других машинах могут быть включены и другие флаги.
-O2
Оптимизирует еще больше. GCC выполняет почти все поддерживаемые оптимизации, которые не включают уменьшение времени исполнения за счет увеличения длины кода. Компилятор не выполняет раскрутку циклов или подстановку функций, когда вы указываете -O2. По сравнения с -O, эта опция увеличивает как время компиляции, так и эффективность сгенерированного кода.
-O2 включает все флаги оптимизации наследованные от -O. Также включает следущие флаги оптимизации:
-fforce-mem -foptimize-sibling-calls
-fstrength-reduce -fcse-follow-jumps -fcse-skip-blocks
-frerun-cse-after-loop -frerun-loop-opt -fgcse -fgcse-lm
-fgcse-sm -fgcse-las -fdelete-null-pointer-checks -fexpensive-optimizations
-fregmove -fschedule-insns -fschedule-insns2 -fsched-interblock
-fsched-spec -fcaller-saves -fpeephole2 -freorder-blocks
-fre-order-functions -fstrict-aliasing -funit-at-a-time -falign-functions
-falign-jumps -falign-loops -falign-labels -fcrossjumping
-O3
Оптимизирует еще немного. Включает все оптимизации -O2 и также включает флаг -finline-functions и -fweb.
-Os
Включает оптимизацию по размеру. -Os флаг активирует все флаги оптимизации
798

Русское WIKI
из -O2, в основном те, которые не увиличивают размер выходного файла. В дальнейшем выполняются оптимизации по уменьшению размера кода.
-Os выключает следущие флаги оптимизации: -falign-functions, -falign-jumps, -falign- loop, -falign-labels, -freorder-blocks, -fprefetch-loop-arrays.
Примечание: Более полное описание флагов -Ox, -fflag смотрите в man gcc
Оптимизация под тип процессора
Не все процессоры одинаковы,поэтому давайте укажем компилятору на наш тип процессора. Для этого есть опции -mtune и -march.Отличие в том,что с опцией
-mtune компилятор сделает код,который будет совместим с более младшими моделями процессора,в то время как с -march этого не происходит.Вот список возможных значений для данных опций: i386 i486 i586 i686 pentium pentium-mmx pentiumpro pentium2 pentium3 pentium4 pentium-m prescott nocona k6 k8 k6-2 (не рекомендуется ставить, из-за багов в компиляторе, заменять на i686) k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp athlon64 opteron winchip-c6 winchip2 c3.
799

Русское WIKI
Внимание! pentium-m - это аналог для pentium3. Если процессор в вашем ноутбуке Mobile Intel Pentium 4 - M, то нужно ставить опцию pentium4 или pentium4m (они равнозначны)
Примечание(JohnBat26) (обновлено в 1.5): Если Вы используете компилятор версии 4.2.0 и выше, то вместо указания специфичного типа процессора, можно указывать одно из двух (в параметрах: -march и -mtune):
3. generic: если Вы хотите, чтобы Ваш скомпилированный код запускался на всех процессорах, архитектуры x86;
4. native: если Вы хотите оптимизировать код только для Вашего процессора.
В этом случае компилятор будет брать сведения о процессоре путем вызова cpuid ! .
Выбор оптимальных параметров
Для этого есть очень интересная утилита. emerge acovea
Правда существующие профили рассчитаны только на pentium 3/4, и на gcc
3.3/3.4, Но в принципе добавить свою конфигурацию тоже не составляет труда.
Также рекомендуется добавить в конфигурацию опции -ftracer и -mfpmath=sse. В некоторых случаях они дают значительный прирост производительности сгенерированного кода.
После чего вызываем утилиту runacovea -config gcc33_pentium3.acovea -bench evobench.c Ждем несколько часов и получаем оптимальные флаги компиляции.
Возможны различные тесты, которые хранятся в каталоге
/usr/share/acovea/benchmarks, И различные конфигурации платформы
/usr/share/acovea/config, к которым при желании можно добавить свою.
Редактор nano
nano - Nano's ANOther editor
Nano - достаточно простой и удобный текстовый редактор, клон редактора pico
Установка
emerge nano
Конфигурация
800

Русское WIKI
Файл: /etc/nanorc
Запуск
Запуск редактора
nano -w somefile
Параметр -w здесь означает запрет переноса строк.
Udev и автомонтирование носителей
Введение
В данной статье речь пойдет о том, как настроить udev для автоматического монтирования и отмонтирования usb-носителей. Ведь согласитесь, неудобно каждый раз монтировать флэшки из консоли. А когда вам нужно быстро что-то скинуть с одной флэшки на другую? Здесь я привожу одно из возможных решений.
Требования
У меня установлена следующая версия udev:
sys-fs/udev-069
Я умышленно не ставлю более новые версии, т.к. с ними возникают проблемы при загрузке firmware на моем компьютере. Возможно в более новых версиях что-то работает по-другому, но суть одна и та же.
Настраиваем udev
Создаем правила для flash-носителей
Правила udev, в соответствии с которыми устройствам назначаются имена, а также выполняются специфические действия, расположены в /etc/udev/rules.d/*. В этой директории уже есть файлы, содержащие правила, у меня их было 2:
# ls /etc/udev/rules.d
05-udev-early.rules
50-udev.rules
Такие названия им были даны неспроста. Дело в том, что udev обрабатывает
801

Русское WIKI
файлы в этой директории в алфавитном порядке по возрастанию. Вообще, при написании правил udev следует помнить 2 главные вещи:
Udev считывает файлы из /etc/udev/rules.d в алфавитном порядке.
Найдя первое подходящее правило для устройства, udev прекращает дальнейший поиск.
Давайте добавим свой файл с правилами так, чтобы он обрабатывался раньше, чем файл с правилами по умолчанию (50-udev.rules). Назовем его 10-udev- my.rules. Содержимое нового файла будет следующим:
Файл: /etc/udev/rules.d/10-udev-my.rules
# First rule
SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="add", NAME="%k",
GROUP="disk", RUN+="/etc/udev/scripts/udev-flash-mount add %k"
#Second rule
SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="remove",
RUN+="/etc/udev/scripts/udev-flash-mount remove %k"
Теперь разберемся в том, что написали.
Первое правило (добавление устройства)
SUBSYSTEM=="block" При добавлении нового устройства в систему возникает множество событий разных классов. block - это класс для блочных устройств, который нам больше всего подходит для составления правила. Для просмотра значений всех переменных, возникающих событий используйте udevmonitor --env
Т.о. здесь мы реагируем только на событие, в окружении которого есть переменная SUBSYSTEM со значением block .
KERNEL=="sd*" Эта часть правила сравнивает имя устройства, которое было дано по умолчанию ядром, с шаблоном. В данном случае нам нужны такие имена как: sda, sda1, sdb, sdb1 и т.д.
ACTION=="add" Реагируем на событие добавления устройства. Например, usb флэшка была вставлена в разьем.
NAME="%k" Обратите внимание на то, что здесь стоит один знак равенства, а не два, как в предыдущих частях правила. Это говорит о присваивании, а не сравнении. Здесь мы присваиваем вставленному устройству имя, которое соответствует тому, что было дано по умолчанию ядром. %k это одна из переменных окружения. Подробнее о них можно прочитать в man udev.
GROUP="disk" Причисляем устройство к группе дисковых.
RUN+="/etc/udev/scripts/udev-flash-mount add %k" Это самая интересная часть скрипта. Здесь мы добавляем ("+=") одно из действий, которое произойдет после обработки правила. В данном случае мы запускаем скрипт (он будет рассмотрен далее) /etc/udev/scripts/udev-flash-mount и передаем ему 2 параметра. Первый указывает на то что нужно выполнить действия по добавлению и инициализации нового устройства, а второй содержит имя устройства, с которым нужно выполнять действия.
Второе правило (удаление устройства)
ACTION=="remove" Реагируем на удаление устройства.
802

Русское WIKI
RUN+="/etc/udev/scripts/udev-flash-mount remove %k" Здесь мы запускаем скрипт, использовавшийся в первом правиле, но уже для выполнения действий после удаления устройства из системы. Этот скрипт будет выполнен как только ядро заметит, что устройство было удалено из системы. Это не самое лучшее решение, т.к. данные могут быть утеряны, но об этом в следующем разделе.
Пишем скрипт
Теперь напишем скрипт, который будет выполняться после добавления устройства и после его удаления. Допустим он будет размещен в /usr/bin/. Итак, от пользователя root:
# su
Создадим файл:
# touch /etc/udev/scripts/udev-flash-mount
Сделаем его исполняемым:
# chmod u+x /etc/udev/scripts/udev-flash-mount
Напишем в нем следующее: Файл: /etc/udev/scripts/udev-flash-mount
#!/bin/bash
LOG="/var/log/udev"
sleep 3
DEV=`echo $2 | sed -n '/^sd[a-z][1-9]\?/p'`
if [ "$1" = "add" ]; then if [ "$DEV" != "" ]; then echo "--- `date` ---" >> $LOG
echo "Mounting /dev/$DEV" >> $LOG
mkdir /mnt/$DEV >> $LOG 2>&1
chmod a+rwx /mnt/$DEV >> $LOG 2>&1
mount /dev/$DEV /mnt/$DEV -o sync,umask=0000,iocharset=cp1251 >> $LOG 2>&1
fi elif [ "$1" = "remove" ]; then if [ "$DEV" != "" ]; then echo "--- `date` ---" >> $LOG
echo "Unmounting /dev/$DEV" >> $LOG
umount /dev/$DEV >> $LOG 2>&1
rm -rf /mnt/$DEV >> $LOG 2>&1
fi fi
803

Русское WIKI
Задержка в 3 или более секунд необходима для того, чтобы ядро успело выполнить свои действия по инициализации устройства. Если не лень, то поэкспериментируйте с задержкой. Если скрипту был передан параметр add, то он создает папку с именем устройства, затем пытается примонтировать устройство в эту папку. Весь вывод, в том числе и ошибки, выводятся в файл лога.
Соответственно, при вызове скрипта с параметром remove, он пытается отмонтировать устройство и удалить ранее созданную папку. Предупреждение:
Опция sync в параметрах mount является необходимой, т.к. форсирует мгновенную запись на устройство. Если ее не будет, то когда вы удалите устройство из системы, данные не будут записаны на него. Поэтому, чтобы избежать проблем такого рода, дождитесь пока индикатор на носителе перестанет мигать и после этого извлеките устройство. НО для файловой системы fat c версии ядра linux 2.6.13 sync ставить нельзя т.к. функционирование данной опции сильно изменилось и максимальная скорость записи на usb2.0 это 200 клибойт в секунду а для usb1.0 это где то 10 - 20 килобайт в секунду. Кроме того, опция sync в параметрах mount убьет Вашу флешку с гарантией за 6 месяцев использования.
См. http://bugs.debian.org/309625
Предупреждение: Внимание! Если какая-либо запущенная программа просматривает содержимое папки, в которую смонтировано устройство, то скрипт не сможет отмонтировать его и удалить папку. Поэтому сначала убедитесь в том, что ни одна из программ не использует эту папку.
Заключение
Последний скрипт можно немного модернизировать. Предположим, если вы монтируете свою камеру, чтобы просмотреть фотографии, то можно передать скрипту еще один параметр из udev правила, например, с производителем устройства. Либо можно проанализировать содержимое каталога и на основе этого выполнить какие-либо действия. Все в ваших руках, дерзайте
Оптимизация glibc
Введение
Glibc - свободная библиотека, предоставляющая системные вызовы и другие основные операторы для основных систем GNU/Linux. Если C является наиболее распространённым языком, используемым для программирования в Linux, такая же судьба постигла и glibc - она является продуманной частью ядра системы.
Glibc может быть оптимизирована на вашей системе для ускорения операций различными способами. Оптимизация, естественно, зависит от вашей системы и её использования. Это также зависит от установки флагов USE, доступных при выполнении emerge. До применения рекомендаций рекомендуется узнать о
804

Русское WIKI
назначении и использовании флагов USE. Есть неплохая инструкция здесь.
Оптимизация компиляции Glibc
Эффект CFLAGS
Компиляция Glibc с возможностями GCC используется в основном коде glibc. Glibc идентифицирует GCC как компилятор и использует установленный флаги
CFLAGS.Подробней здесь. Используя правильные флаги CFLAGS для вашей системы, вы можете хорошо оптимизировать glibc.
Улучшение оптимизации
Если вы использовали -fomit-frame-pointer, вы можете также поместить glibc-omitfp во флаги USE. Повторно пересоберите glibc. Code: Remerging glibc
emerge --newuse -v world
При этом соберутся Glibc и её зависимости. При компиляции glibc этот флаг активизирует флаг -enable-omitfp, который, в свою очередь, указывает glibc на использование --fomit-frame-pointer. В результате более безопасно устанавливается указатель кадра. Этот флаг устанавливает максимальную оптимизацию glibc и предоставляет два типа библиотек - 'оптимизированная' и 'стандартная'. То есть, по умолчанию будут использоваться оптимизированные библиотеки, но при необходимости можно будет использовать 'стандартную' версию. Это увеличит размер glibc и приведет к обычному поведению при установленном --fomit-frame-pointer, т.е. сделает невозможным отладку (debug) программ, так что не используйте этот флаг если вы планируете заниматься разработкой программ. Теоретически этот флаг может вызвать некоторые ошибки компилятора, хотя на практике он достаточно безопасен, тем не менее вы были предупреждены.
Модели потоков
glibc поддерживает 2 различных модели потоков - старую linuxthreads и новую nptl.
По умолчанию, если не был указан флаг nptlonly, кроме nptl собирается и версия с linuxthreads. В случае, если у вас нет устаревшего программного обеспечения, вы можете указать флаг nptl. Если у вас современная система без сторонних бинарных пакетов, будет лучше указать nptlonly, чтобы избежать сборки glibc дважды (с поддежкой linuxthreads и без неё).
Локализация
В основном это основано на еженедельном новостном бюллетене Gentoo от 8 805

Русское WIKI
ноября 2004 года, который можно найти здесь (en:TIP Specifying only needed locales). Вы можете выбрать, какие локали (включая раскладки и установки клавиатуры, времени и т.д.) будут собраны при установке. Если вы не ограничите локали, используемые в вашей системе, будут собраны все имеющиеся локали, начиная с aa_DJ (локаль Афар для Джибути) через en_GB (английская локаль для
Великобритании) и заканчивая zu_ZA.utf8 (локаль Зулу для Южной Африки). При ограничении сборки локалей вы можете сохранить до 90% места, необходимого для Glibc в вашей системе, сохранить время, необходимое на сборку ненужных вам локале и, как следствие, уменьшить общее время компиляции. Если вы действительно не нуждаетесь в них всех (а трудно представить, кому это могло бы понадобиться), вы можете ограничить их необходимым минимумом.
Используйте флаг USE userlocales для сборки только тех локалей, которые указаны в /etc/locales.build.
Отредактируйте /etc/make.conf в вашем любимом редакторе и поместите userlocales где-нибудь между "" в строке USE="".
Другой способ - изменить /etc/portage/package.use используя данную команду:
Code: Activating the userlocales USE flag for glibc echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
После этого вы можете указать локали, которые хотите использовать:
Файл: nano -w /etc/locales.build
#Читайте комментарии в начале файла для большей информации!
en_US/ISO-8859-1
en_US.UTF-8/UTF-8
#en_GB/ISO-8859-1
#en_GB.UTF-8/UTF-8
de_DE/ISO-8859-1
de_DE@euro/ISO-8859-15
ru_RU.UTF-8/UTF-8
В glibc-2.3.6-r4 или glibc-2.4-r2, был удалён флаг userlocales. Вы должны править файл /etc/locale.gen и удалить /etc/locales.build.
Вы можете воспользоваться для этого следующими командами: Code: Convert locales.build to locale.gen cd /etc grep '^[^#].*' locales.build | sed 's:/: :' > locale.gen rm locales.build nano -w locale.gen
Файл: nano -w /etc/locale.gen
#Читайте комментарии в начале файла для большей информации!
806

Русское WIKI
en_US.UTF-8 UTF-8
en_US ISO-8859-1
ru_RU.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15
Вы можете найти правильные значения локалей в файле
/usr/share/i18n/SUPPORTED.
Помогите! Я не знаю, какими должны быть настройки моей локали!
Не волнуйтесь, это просто. Записи в этом файле должны быть в формате
/. это локаль из каталога /usr/share/i18n/locales, а
-- это имя одного из файлов каталога /usr/share/i18n/charmaps/. Нужно только понимать два момента: первое, локаль с новой валютой, такой как евро, требует изменения @euro, описанного в примере выше. Второе, локали UTF-8 требуют от вас добавления .UTF-8 в конец определения локали (нет, я не знаю, зачем, но иначе оно не работает).
Если вы В САМОМ ДЕЛЕ хотите минимизировать ваши локали, вам всего лишь нужно перевести вашу систему на Юникод. Вообще-то пока есть причины этого не делать, но это уже становится стандартом de facto, так как несёт множество преимуществ перед старыми форматами ISO, ASCII и другими. Больше об этом можно прочесть здесь и здесь, а также непосредственно в соответствующем руководстве с сайта Gentoo.
Вам просто нужно определить следующее: Файл: nano -w /etc/locales.build
#Как раньше!
en_US.UTF-8/UTF-8
ru_RU.UTF-8/UTF-8
Обратите внимание, я оставил строку US UTF-8. Её лучше не убирать, так как некоторые программы не соберутся без неё.
Сделайте это до установки Gentoo
Вы можете выполнить эти настройки до началасборки системы с нуля. Просто следуйте инструкциям из Gentoo Handbook. Это позволит меньше волноваться о возможных недоделках программ после сборки и наслаждаться быстрой сборкой.
Сделайте это после установки Gentoo
807

Русское WIKI
Если glibc уже установлена, вам потребуется пересобрать glibc:
Code: Пересборка glibc
emerge glibc
Вы также можете пересобрать world, если пакеты были скомпилированы с поддержкой множества локалей, но полученное ускорение работы пакетов и сэкономленное дисковое пространство не стоят затрат времени. Придётся затратить очень много времени на пересборку всей системы.
Возможно, вам стоит обратить внимание на пакет localepurge, который может очистить систему от любых установленных man страниц или info-файлов на языках не используемых в вашей системе. Вначале прочитайте man к localepurge, что бы определить локали, которые необходимо пропустить в /etc/locale.nopurge.
Для большей инфомации об управлении локалями читайте:
Gentoo Linux Localization Guide
Или на русском языке
Руководство по русской локализации Gentoo Linux
Эта оптимизация полностью безопасна (Кроме случаев, если вы не можете читать на языке, который установили!).



Поделитесь с Вашими друзьями:
1   ...   63   64   65   66   67   68   69   70   ...   79


База данных защищена авторским правом ©nethash.ru 2019
обратиться к администрации

войти | регистрация
    Главная страница


загрузить материал