Сборник статей Handbook inside ! : Linux не для идиотов inside ! : Версия 1 от 15. 07. 2007 2007


Использование CFLAGS для оптимизации собранных программ



Pdf просмотр
страница35/50
Дата14.11.2016
Размер5.65 Mb.
Просмотров7990
Скачиваний0
ТипСборник статей
1   ...   31   32   33   34   35   36   37   38   ...   50
Использование CFLAGS для оптимизации собранных программ
Для чего все это надо?
Стремление выжать из своего компьютера максимум производительности есть в каждом, ну почти в каждом ;-). Особенно его много в русских линуксоидах
Gentoo'шниках ;) Мы попытаемся путем изменения флагов оптимизации ускорить работу приложений нашей системы. ВНИМАНИЕ Некоторые флаги могут сделать приложения нестабильными, так что нужно быть аккуратным.
[править]
Оптимизация
[править]
Переменная окружения CFLAGS
Для указания параметров оптимизации компилятору GCC, используется переменная окружения CFLAGS. Эта переменная определена в /etc/make.conf, её можно изменить двумя способами:
Отредактировать эту переменную в /etc/make.conf;
Экспортировать ее в окружение (emerge будет использовать эти параметры, но каждый раз выполнять export неудобно): export CFLAGS='параметры оптимизации'
[править]
Уровни оптимизации
Для 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.
На других машинах могут быть включены и другие флаги.
487

[править]
-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 флаг активирует все флаги оптимизации из
-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 488
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.
Внимание! pentium-m - это аналог для pentium3. Если процессор в вашем ноутбуке
Mobile Intel Pentium 4 - M, то нужно ставить опцию pentium4 или pentium4m (они равнозначны)
[править]
Выбор оптимальных параметров
Для этого есть очень интересная утилита. emerge acovea
Правда существующие профили рассчитаны только на pentium 3/4, и на gcc 3.3/3.4,
Но в принципе добавить свою конфигурацию тоже не составляет труда. Также рекомендуется добавить в конфигурацию опции -ftracer и -mfpmath=sse. В некоторых случаях они дают значительный прирост производительности сгенерированного кода.
489

После чего вызываем утилиту runacovea -config gcc33_pentium3.acovea -bench evobench.c Ждем несколько часов и получаем оптимальные флаги компиляции.
Возможны различные тесты, которые хранятся в каталоге
/usr/share/acovea/benchmarks, И различные конфигурации платформы
/usr/share/acovea/config, к которым при желании можно добавить свою.
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 обрабатывает файлы в этой директории в алфавитном порядке по возрастанию. Вообще, при написании правил udev следует помнить 2 главные вещи:
Udev считывает файлы из /etc/udev/rules.d в алфавитном порядке.
490

Найдя первое подходящее правило для устройства, 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" Реагируем на удаление устройства.
RUN+="/etc/udev/scripts/udev-flash-mount remove %k" Здесь мы запускаем скрипт,
491
использовавшийся в первом правиле, но уже для выполнения действий после удаления устройства из системы. Этот скрипт будет выполнен как только ядро заметит, что устройство было удалено из системы. Это не самое лучшее решение, т.к. данные могут быть утеряны, но об этом в следующем разделе.
[править]
Пишем скрипт
Теперь напишем скрипт, который будет выполняться после добавления устройства и после его удаления. Допустим он будет размещен в /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 492
rm -rf /mnt/$DEV >> $LOG 2>&1
fi fi
Задержка в 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 может быть оптимизирована на вашей системе для ускорения операций различными способами. Оптимизация, естественно, зависит от вашей системы и её
493
использования. Это также зависит от установки флагов USE, доступных при выполнении emerge. До применения рекомендаций рекомендуется узнать о назначении и использовании флагов 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 и без неё).
[править]
Локализация
494

В основном это основано на еженедельном новостном бюллетене Gentoo от 8 ноября 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
495
grep '^[^#].*' locales.build | sed 's:/: :' > locale.gen rm locales.build nano -w locale.gen
Файл: nano -w /etc/locale.gen
#Читайте комментарии в начале файла для большей информации!
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. Её лучше не убирать, так как
496
некоторые программы не соберутся без неё.
[править]
Сделайте это до установки Gentoo
Вы можете выполнить эти настройки до началасборки системы с нуля. Просто следуйте инструкциям из Gentoo Handbook. Это позволит меньше волноваться о возможных недоделках программ после сборки и наслаждаться быстрой сборкой.
[править]
Сделайте это после установки Gentoo
Если glibc уже установлена, вам потребуется пересобрать glibc: Code: Пересборка glibc emerge glibc
Вы также можете пересобрать world, если пакеты были скомпилированы с поддержкой множества локалей, но полученное ускорение работы пакетов и сэкономленное дисковое пространство не стоят затрат времени. Придётся затратить очень много времени на пересборку всей системы.
Возможно, вам стоит обратить внимание на пакет localepurge, который может очистить систему от любых установленных man страниц или info-файлов на языках не используемых в вашей системе. Вначале прочитайте man к localepurge, что бы определить локали, которые необходимо пропустить в /etc/locale.nopurge.
Для большей инфомации об управлении локалями читайте Gentoo Linux Localization
Guide.
Или на русском языке Руководство по русской локализации Gentoo Linux.
Эта оптимизация полностью безопасна (Кроме случаев, если вы не можете читать на языке, который установили!).
[править]
Безопасность
Как безопасность относится к оптимизации? Итак, это оптимизация безопасности, поскольку ранее было сказано, как оптимизация зависит от вашей системы и как всё это работает. Если это сервер, вы, к примеру, можете пожертвовать оптимизацией в угоду безопасности, или выполнить обе оптимизации.
[править]
Стабилизация Glibc
497

Это предполагает (как вы, возможно, догадывались...) использование флага USE hardened. Это сделает вашу систему более устойчивой к нападениям разного вида.
[править]
Усиление стека
Используйте флаг erandom если вам необходимо использование модуля случайных чисел, установленного в вашем ядре.
Подключение USB-flash
Подключение USB-flash к компьютеру
[править]
Введение
В Linux я пользователь новый и с этим вопросом никогда не сталкивался, и более того - ядро по жизни собирал без поддержки USB устройств, т.к. ничего такого у меня просто нет :), но вот, как говорится - пришлось и срочно. И как оказалось - это довольно несложно.
Итак, по прочтении парочки-тройки вопросов связанных с USB, и небольшого количества теории - я без проблем подмонтировал USB флешку. Примечание: Что такое флешка и USB описывать не буду, т.к. если читатель этого не знает - то имхо ему следует сначала прочесть несколько других статей.
Итак, начнем
[править]
Конфигурация ядра
USB флешки видны в Linux как scsi устройства,ибо поддержка usb устройств в ядре
Linux реализуется именно посредством эмуляции скази, т.е. типа /dev/sda1(2,3) и т.д, смотря сколько партиций.
Следовательно, чтобы была возможность подключения флешки, сначала необходимо добавить поддержку scsi в ядро Linux Kernel Configuration: Включаем поддержку SCSI
Device Drivers --->
SCSI device support
<*>legacy /proc/scsi/ support
--- SCSI support type (disk, tape, CD-ROM)
<*> SCSI disk support
<*> SCSI generic support
--- Some SCSI devices (e.g. CD jukebox) support multiple LUNs
498

<*> Probe all LUNs on each SCSI device
Далее добавляеем непосредственно поддержку USB (я не говорю о клавиатурах или других устройствах USB, а говорю только о флешке) Linux Kernel Configuration:
Поддержка USB
Device Drivers --->
USB support
<*> Support for Host-side USB
<*> USB device filesystem
<*> EHCI HCD (USB 2.0) support
< > OHCI HCD support
<*> UHCI HCD (most Intel and VIA) support
<*> USB Mass Storage support
Примечание: В разделе USB Mass Storage support есть куча других устройств - я там не отмечал ничего, у меня заработало и так. Подозреваю, что для специфических устройств (всмысле каких то навороченных флешок) нужно будет что нибудь еще там отметить.
Кроме того, для этих всяких сложных флешок скорее всего придется добавить MTD в ядро Linux Kernel Configuration: MTD
Device Drivers --->
Memory Technology Devices (MTD) --->
ну и там смотрим, что нужно. Примечание: Для большинства современных флэшек,
USB носителей и цифровых фотоаппаратов поддержка MTD не требуется.
[править]
Монтирование
После загрузки с новым ядром, нажимаем Alt+F12 и вставляем флешку - если с ядром все ок- то сразу появятся сообщения, что мол есть устройство USB , потом пишется, что есть /dev/uba ну и т.п.
Если этого не происходит, делаем dmesg | grep usb
Если и здесь ничего нет, то советую перегрузиться и посмотреть включенны ли USB контроллеры в BIOS :) как это не смешно звучит, но я сам себе это отрубил, когда ядро собирал, а потом включить забыл, и минут 15 гадал - чего же оно не работает :)
Если dmesg | grep usb выдает результат, а когда вставляем флешку - никакой реакции, то нужно проверить еще раз - все ли отмеченно в ядре.
Вобщем - надеемся , что все заработало и теперь нужно смонтировать флешку.
Добавляем в /etc/fstab строку Файл: /etc/fstab
/dev/uba1 /mnt/usbdir auto user,noauto,rw 0 0 499
и можно монтировать! но есть одно но, в опциях я не указал кодировки, т.к. кодировка по умолчанию указанна в разделе Native Languages конфигурации ядра.
Не будет лишним напомнить отмонтировать флешку перед тем как вытаскивать ее!
Если такой вариант вас не устраивает, то вы можете установить пакет submount и монтировать флэшку вот так: Файл: /etc/fstab
/dev/uba1 /mnt/usb subfs fs=vfat,auto,umask=0,quiet,sync 0 0
Параметр sync необходим чтобы отключить отложенную запись и избежать потерю данных при копировании файлов на флэшку.
Вроде бы все. Удачи всем!
И есстественно- за любые комментарии, дополнения, уточнения и исправления ошибок – буду только благодарен :) надеюсь, кому-то помог tradakad исправил касательно монтирования при помощи submount (dernik)
[править]
Монтирование под kde
Установите пакеты: hal, dbus, and hotplug
Добавьте флаг hal в /etc/make.conf emerge -avt kdebase-kioslaves
Убедитесь, что hal используется всеми пакетами: emerge -DNu world rc-update add dbus default
/etc/init.d/dbus start rc-update add hald default
/etc/init.d/hald start так же можно монтировать устройства без изменения /etc/fstab с помощью emerge -av pmount
Добавьте себя в групп plugdev gpasswd -a USER plugdev
500

Включите "Storage media" ("Устройства хранения данных" в русском варианте) в systray (на панель). Наслаждайтесь :)
[править]
Автоматическое монтирование
Если лень замарачиваться каждый раз при втыкании флэшки или сидюка, а хочется, чтоб как в одной другой ОС, добавьте параметр managed в /etc/fstab к требуемому устройству, например Файл: /etc/fstab
/dev/cdrw /mnt/cdrom iso9660 user,noauto,ro,managed 0 0
/dev/sda /mnt/flash vfat exec,user,noauto,sync,managed 0 0
Типа, все, теперь при появлении флэшки в системе будет появляться иконка на рабочем столе. ps. распишите эту статью подробнее. Добавьте gpasswd в статью: http://gentoo- wiki.com/HOWTO_D-BUS,_HAL,_KDE_media:/

Каталог: pub -> docs books -> Linux -> Linux 2
pub -> Буланов С. В. Кудрявцева Е. Л. Развитие креативности билингвов: путь от интеркультурности к формированию «человека мира»
pub -> «октябрьский лицей»
pub -> Самообследование гоу сош «Школа надомного обучения» №196 по направлениям деятельности. Общие вопросы
pub -> Занятие для математического кружка. Задачи работы
pub -> Доклад муниципальное образовательное
pub -> Публичный доклад. 2013 год Общая характеристика образовательного учреждения. Место расположения
pub -> Публичный доклад муниципального общеобразовательного учреждения средней общеобразовательной школы №13


Поделитесь с Вашими друзьями:
1   ...   31   32   33   34   35   36   37   38   ...   50


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

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


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