- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF100-101:Ответы
Материал из Linuxformat.
Содержание |
Ответы
- Есть вопрос по Open Source? Пишите нам по адресу: answers@linuxformat.ru
Настроить загрузку с CD
B: Мне ужасно понравилась ваша статья «Собери себе Ubuntu» в LXF97. Я выполнил все ее инструкции на моем ноутбуке HP DV9308nr, добавил прошивку BCM43xx в созданный ISO-образ, записал на диск, загрузился с него, и все заработало как ожидалось. Как мне отредактировать файл menu.lst в /boot/grub/ в ISO-образе, чтобы передать ядру следующие параметры:
vga=791 pnpbios=off irqpoll nomsi nomce
Мой ноутбук без этих установок блокируется.
Филипп Шарбоно [Philippe Charboneaux]
O: Ubuntu использует на своих CD не Grub, а isolinux. Его файл конфигурации – isolinux/isolinux.cfg на CD. Синтаксис файла будет вполне знаком тем, кто использовал Lilo. Вы можете скопировать содержимое CD в директорию ubuntu-rebuild. Теперь в файле ubuntu-rebuild/isolinux/isolinux.cfg найдите первый пункт меню, который в Ubuntu 7.10 выглядит так:
LABEL live menu label ^Start or install Ubuntu kernel /casper/vmlinuz append file=/cdrom/preseed/ubuntu. seed boot=casper initrd=/casper/initrd. gz quiet splash --
Строка append содержит параметры, передаваемые ядру при загрузке, как и такая же строка в lilo.conf, так что добавьте ваши опции в эту строку перед «--» на ее конце и сохраните файл. Теперь продолжите по учебнику, и ваш переделанный диск загрузится с нужными вам опциями. Еще есть проблемы? Дайте нам знать!
Блуждающий диск
B: У меня USB-винчестер Seagate на 250 ГБ, подключенный к моему ноутбуку Dell Inspiron с Ubuntu 7.04. Распознается он нормально, но каждый раз при загрузке появляется в /dev в разных местах – где-то между /dev/sdb и /dev/sdh. Из-за этого автомонтирование разделов, которые я создал на диске, мягко говоря, усложняется.
Существует ли способ заставть этот диск всегда появляться как определенное устройство в /dev, чтобы я мог добавить его в /etc/fstab и не злобствовал, пытаясь отыскать, куда Ubuntu вздумалось засунуть диск сегодня, и затем вручную монтировал свои разделы?
И еще, есть ли способ добавить разделы в /etc/fstab так, чтобы, независимо от расположения их /dev, они монтировались в определенные точки в /media? Ubuntu монтирует разделы при старте, но большинство из них на 40 ГБ, и они получают не самые «говорящие» имена ‘40GB disc-1’, ‘40GB disc-2’ и т.д. Мне нужно, чтобы они автоматически монтировались в более осмысленные места.
Дэвид Шоу [David Shaw]
O: Можно велеть fstab монтировать разделы по их уникальным ID вместо традиционных узлов /dev/sd? Заглянув в /dev/disk/by-id, вы увидите символьные ссылки на различные разделы дисков с использованием их ID. Эти ID сохраняются неизменными, а ссылки на конкретные узлы обновляются каждый раз при старте udev (обработчик устройств в Linux). Вы могли бы использовать их в /etc/fstab вместо традиционных имен узлов, но вообще-то они предназначены не для использования со сменными дисками. Преимущество данного метода для постоянных дисков в том, что при добавлении разделов нумерация сбивается, но /etc/fstab будет продолжать действовать, и поэтому Ubuntu использует эту систему по умолчанию.
При использовании сменных дисков лучше вообще не прописывать их в /etc/fstab. В этом случае Gnome Volume Manager автоматически смонтирует их, как только обнаружит, при загрузке или в любое время позже. Но это как раз и приводит к вашей проблеме, и для обеспечения неизменности имен устройств мы воспользуемся другой функцией udev. Udev поддерживает правила, которые могут, среди прочего, задавать имена узлов /dev для специфических устройств или файловых систем, и система будет их помнить, так что вы сможете дать Вашим устройствам содержательные имена, типа /dev/extdisk для внешних дисков и /dev/camera для... ну, вы поняли идею. Для использования этих правил вам нужно обеспечить уникальность идентификации устройств; здесь поможет команда udevinfo. Если ваш диск сейчас виден как /dev/sda, запустите
udevinfo --attribute-walk --path /block/hda | less
Если вы хотите запросить конкретный раздел, допустим, sda1, используйте /block/sda/sda1 как путь. Посмотрев вывод, вы найдете строки вида
ATTRS{model}==”model_code” ATTRS{vendor}==”manufacturer”
которые можно использовать для идентификации устройства. Затем отредактируйте или создайте файл /etc/udev/rules.d/10-local.rules и добавьте в него строки
BUS==”usb”, KERNEL==”sd*”, ATTRS{model}==”model_code”, ATTRS{vendor}==”manufacturer”, NAME:=”extdisk%n”, SYMLINK+=”%k”
Пункты, использующие == – это условия для проверки, которые должны быть удовлетворены, чтобы правило выполнялось. Первые два дают уверенность, что вы работаете с USB-диском или разделом, следующие два скопированы прямо из вывода udevinfo.
Следующий пункт задает имя узла /dev/extdisk для диска и /dev/extdiskN для N-го раздела. Финальная часть создает символьную ссылку на устройство, используя исходное имя, которое действовало бы без этого правила.
Эти правила применимы к диску и любым разделам на нем, но вы также можете перечислить индивидуальные разделы, полезные для устройств типа камер, MP3-плейеров или карт памяти в вашем кардридере. Например
BUS==”usb”, KERNEL==”sd?[0-9]”, ATTRS{model}==”model_code”, ATTRS{vendor}==”manufacturer”, NAME:=”camera”, SYMLINK+=”%k”
В этом случае монтируются только разделы, удовлетворяющие шаблону sd[a-z][0-9], который определяет sd и следующую за ним одну букву или цифру; такой раздел появляется как /dev/camera вместо /dev/camera1. Немало полезной информации о написании правил udev находится на http://www.reactivated.net/udevrules.php.
Может оказаться, что Gnome Volume Manager продолжает монтировать устройства с именами вида /dev/disk-n. Самое простое решение – давать разделам при создании метки (volume label), чтобы менеджер томов использовал их. Для именования раздела ext3 при его создании, используйте
mke2fs -j -L Volume_Name /dev/sda1
а для добавления или изменения имени тома в существующей файловой системе –
tune2fs Volume_Name /dev/sda1
О dcop, слайд-шоу и качающихся окнах
B: Я только что прочел учебник Дэвидa Фили KDE: «Галерея на рабочем столе» в LXF98. Я нашел ее по-настоящему интересной и, надеюсь, полезной для меня. Сейчас я использую функцию KDE по случайному выводу обоев рабочего стола (Слайдшоу из случайного набора изображений), и некоторые изображения хотелось бы оставить на экране подольше или скопировать и установить в мой ноутбук или рабочий ПК. Но вот беда: в моей коллекции около 3000 изображений, и найти там желаемое не так-то просто. Мой оконный менеджер – Beryl, но я могу вернуться на kwin, чтобы это заработало (когда я занимался по учебнику, я так и сделал).
Я заставил первую команду работать на текущем рабочем столе (он у меня только один), но вторая currentWallpaper вылетает с сообщением ‘object not accessible (объект недоступен)’. По-моему, это из-за слайд-шоу, но толком не знаю.
Я надеялся получить маленький скрипт, который просто использует kdialog или что-то похожее и говорит мне имя изображения. Не могли бы вы подсказать, как изменить код из учебника, но чтобы он работал также и с Beryl?
Нейл Уильямс [Neil Williams]
O: Команда точно работает со слайд-шоу: я сам использую ее вариант для удаления текущих обоев (я просто могу свалить все изображения в директорию с обоями, а затем выкинуть несимпатичные, когда они появятся на рабочем столе). Сообщение “object not accessible” у меня воспроизвелось, когда я по ошибке использовал с currentWallpaper KwinInterface вместо KBackgroundIface. По-моему, легче всего экспериментировать с dcop, запустив kdcop, что позволит обозревать интерфейс и команды dcop – можно даже скопировать и вставить строки из окна kdcop в оболочку или скрипт. Вот скрипт, который выводит имя текущих обоев.
#!/bin/sh IMAGE=$(dcop kdesktop KBackgroundIface currentWallpaper 0) kdialog --title “Current desktop wallpaper” -- msgbox “The path to the current wallpaper is\n${IMAGE}”
Даже если у вас только один рабочий стол (мы и не думали, что такое еще бывает – разве что с тоски по Windows), вам необходимо указать его номер. Использование 0 здесь означает «текущий рабочий стол», это сокращает проверку того, на каком рабочем столе мы находимся. Вы можете уместить скрипт в одну строку, используя командную подстановку, то есть назначить команде псевдоним или горячую клавишу без необходимости иметь отдельный сценарий в файле:
kdialog --title “Current desktop wallpaper” -- msgbox “The path to the current wallpaper is\n$(dcop kdesktop KBackgroundIface currentWallpaper 0)”
Так как ваш оконный менеджер Beryl, а не Kwin, вызовы kwin через dcop работать не будут, но использованные здесь вызовы kdesktop сработают (по крайне мере, они работали с compiz-fusion). Kdcop точно доложит, что у вас есть.
Многоядерные процессоры
B: Двух- и четырехъядерные процессоры так подешевели, что я заинтересовался, сможет ли Linux воспользоваться этой технологией сейчас или в ближайшем будущем. Просмотрев доступную мне информацию, я так и не понял, какую выгоду они смогут принести мне на компьютере с Linux. Также, существует ли дистрибутив или версия Linux, более подходящий при использовании новых процессоров, чем другие?
Уилсон Е. Стивенс [Wilson E Stevens]
O: Linux поддерживает несколько процессоров (или процессорных ядер) уже несколько лет: Я пишу эти строки на Core2Duo (хотя редактору Kate не нужна вся мощь двух ядер, даже для проверки моего правописания). Большинство дистрибутивов поддерживают несколько процессоров «из коробки» – главное, чтобы ядро было собрано с поддержкой SMP (симметричной мультипроцессорности). Некоторые дистрибутивы включают ее в основное ядро, другие имеют отдельное ядро с SMP, которое выбирается, если установщик определит более одного ядра процессора. Существует несколько способов легко определить наличие поддержки SPM; вывод команды
cat /proc/cpuinfo
показал вам цифру “cpu cores”? Попробуйте запустить top в терминале и нажать 1, при этом вывод нагрузки процессора переключается с показа общей картины на показ индивидуальной загрузки процессоров, и наоборот. Запуск
zgrep SMP /proc/config.gz
выведет CONFIG_SMP=y, если поддержка SMP включена, при условии, что ваше ядро поддерживает /proc/config.gz, в противном случае вы увидите невразумительную ошибку.
Поддержка SMP в ядре улучшает многозадачный режим, так как программы могут перекидываться на менее загруженный процессор, но большинство приложений продолжают использовать только один процессор [ОС может сама распределять программы по процессорам, – прим. пер.]. Однако некоторые программы с интенсивной загрузкой процессора могут разделять ее между несколькими ядрами. Например, в ffmpeg опция -threads делит задачу перекодирования видео между несколькими процессорами, существенно снижая время обработки. При компиляции программ это также полезно, ведь большинство из них состоит из множества мелких файлов, требующих компиляции, а это легко распараллелить. При установке переменной окружения MAKEOPTS в профиле пользователя на -j3 для двухъядерных и -j5 для четырехъядерных процессоров, программы обычно компилируются гораздо быстрее. Заметим, что используемое здесь число на единицу больше количества процессоров (-j2 используется для однопроцессорных систем), для обеспечения наибольшей эффективности использования процессора.
Если вы загружаете систему интенсивными задачами вроде компиляции или перекодирования видео, попробуйте использовать команду nice (смотрите Краткая справка про...) для улучшения отклика вашей системы при работе.
Обновления сбоят
B: У меня Compaq Deskpro 650 MГц со 128-МБ ОЗУ и 10 ГБ жестким диском. На нем стоит Mandrake 10.0, который уже устарел, и я пытаюсь обновиться до – или установить с нуля – Mandriva 2007. Компьютер постоянно слетает в процессе установки. Иногда установка удается, но при попытке загрузки системы она всегда зависает. Я вижу на экране много текста, что наводит на мысль о проблемах с ядром. Пробовала другие дистрибутивы – Fedora, Ubuntu, Slackware и Gentoo – и везде та же проблема. Есть ли способ установить новые дистрибутивы (Mandrake 10.1 – и тот отказал) и заставить их работать?
Райнхильде Вермейлен [Reinhilde Vermeulen]
O: Тот факт, что ваши проблемы с разными дистрибутивами не всегда проявляются в том же месте, говорит, что проблема может исходить от оборудования – вероятнее всего, сбой памяти, перегрев или плохое качество блока питания. Прежде чем этим заняться, рекомендую запустить инсталлятор в текстовом режиме. Графические инсталляторы требуют много памяти, гораздо больше, чем нужно для запуска установленного дистрибутива: они записывают все необходимое на большой ram-диск, чтобы все было доступным, когда вы смените CD. Установка в текстовом режиме существенно снижает требования к памяти.
Если это не поможет, вам нужно проверить вышеупомянутые проблемы. Тестирование памяти делается просто: большинство установочных дисков дистрибутивов включают memtest как опцию в меню. Выберите ее и дайте ей поработать как можно дольше: понадобится как минимум два прохода, и лучше запустить ее на всю ночь. Перегрев возможен при поломке вентилятора или засоре (извините за выражение) вентиляторов, радиаторов или вентиляционных отверстий. Для очистки от пыли их продувают сжатым воздухом. Неисправный блок питания также может вызывать случайные перезагрузки и зависания, но единственный способ протестировать его – это замена.
Если все это не сработает, обратите внимание на последний десяток строк текста на экране при сбое. Часть этих сообщений идет от ядра, а часть от различных программ, запускаемых при загрузке системы. Знание содержания этих сообщений может помочь в определении проблемы. Если сообщения бессвязны, у вас точно сбой в оборудовании.
Пропали файлы?
B: У меня не устанавливаются никакие программы: не могу выполнить инструкции в журнале, сколько ни пытаюсь. Конечно, архивы я распаковываю, это не проблема. К примеру, я пытался установить Digikam, и когда я запускал configure, все проходило на ура, почти до конца. Тут я получал сообщение об ошибке: программа не могла найти важный файл kde-config и спрашивала, правильно ли у меня установлен KDE.
Debian был загружен с официального DVD, и инсталяция работала как часы. Установка-то прошла хорошо, но я явно не способен уйти от рабочего стола. Эта машина не подключена к интернету. Буду очень признателен, если вы мне скажете, где я могу или должен искать kde-conf. Я не смог его найти нигде.
Билл Брукс [Bill Brooks]
O: Во-первых, инструкции в журнале по установке из исходных текстов – это общие рекомендации. Они годятся в более чем 90 процентов случаев, но конкретные инструкции помещаются внутри архивов с исходниками, в файлах README и/или INSTALL. Обычная проблема пользователей Debian и систем на основе RPM в том, что большинство пакетов разбито на два: стандартный foo-x.y.z и foo-devel-x.y.z. Обычно нужно устанавливать только foo, но второй содержит заголовочные файлы, необходимые для компиляции другого ПО, работающего с этой программой. То есть, когда вы видите сообщение об ошибке вида “libfoo not found” и знаете что foo установлен, это значит, что вам нужно установить еще и пакет foo-devel.
В вашем случае этого может не быть: kde-config – это часть kdelibs. Запустите команду which kde-config в терминале, она должна вернуть путь к программе (/usr/bin/kde-config). Если этого не произошло, проверьте, существует ли /usr/bin/kde-config. Если файл на месте, но which не может его найти, значит, что-то неправильно в установках $PATH. Вывод echo $PATH должен включать /usr/bin, если этого нет, проверьте установки в /etc/profile.
Если kde-config там нет, возможно, вам надо переустановить содержащий его пакет. Так и слышу ваш вопрос: «Откуда я знаю, какой пакет мне нужен?» Debian держит мощный движок поиска пакетов на сайте http://packages.debian.org. Зайдите в Search the contents of packages, введите kde-config и выберите Packages that contain files named like this; он должен вернуть вам, что искомый содержится в пакете kdelibs4c2a, который должен быть у вас уже установлен, если вы используете программы KDE. Переустановите пакет и kdelibs4-dev, потому что это вам понадобится, и проверьте, что файлы теперь на своих местах.
Проигрывая DVD
B: Моя работа требует поездок по всему миру, и в свободное время, как и многие другие люди, я развлекаюсь, смотря фильмы на DVD. Я запускаю Fedora 7 на моем T60 Thinkpad с установленным VLC и всеми расширениями из репозитория Livna, но могу смотреть только незашифрованные DVD. У меня установлен libdvdcss, и все равно я не могу смотреть большинство фильмов, которые мне попадаются. Я слышал, что привод Matshita DVD не может проигрывать зашифрованные диски. Это правда? Если нет, то есть ли ПО для излечения этой болезни?
Петер Берг [Peter Berg]
O: Bаш привод ориентирован на определенный регион и позволяет проигрывать зашифрованные диски только для него. Консорциум DVD разделил мир на шесть регионов, и привод может проигрывать только диски того региона, на который он настроен. Регионы пронумерованы так:
- Северная Америка (США и Канада)
- Европа, Ближний Восток, Южная Африка и Япония
- Юго-Восточная Азия, Тайвань, Корея
- Латинская Америка, Австралия, Новая Зеландия
- Бывший Советский Союз (Россия, Украина и т.д.), остальная Африка, Индия
- Китай
В большинстве приводов можно сменить регион, используя нечто вроде regionset (http://linvdr.org/projects/regionset), но это ловушка. Многие приводы позволяют сменить регион только четыре-пять раз, а затем блокируются на последнем установленном регионе, от чего мало пользы, если вы ездите из региона в регион, покупая DVD по дороге. На ноутбуке вы даже не сможете сменить привод на региононезависимый. На некоторых приводах можно обновить прошивку, что позволит менять регионы бесконечно или сделать привод работающим со всеми регионами. К сожалению, это не относится ко всем приводам Matshita, и вам может не повезти. Информация о многих приводах имеется на http://www.rpc1.org.
Если на вашем приводе нельзя обновить прошивку (у некоторых приводов прошивка зашифрована), остается вариант перекопировать ваш DVD в другой формат на другом компьютере с региононезависимым приводом. Этот метод хорошо работает и спасает вас от необходимости тащить с собой DVD, если вы запишете снятые копии на жестком диске, но не поможет проигрывать DVD, купленные за границей. dvd::rip (http://www.exit1.org/dvdrip) – хороший выбор для этого.
OpenOffice.org и Java
B: Я установил OpenOffice.org 2.3 с LXF99 по инструкциям в журнале. Большинство его частей работают нормально, но когда я пытаюсь открыть файлы Base, он требует обновить среду Java, которая, похоже, исчезла. Я скачал и переустановил Java с Sun, но так и не получил доступ к файлам моей базы данных – получаю сообщение, спрашивающее меня о расположении Java с помощью Tools > Options [Сервис > Параметры], но не могу обнаружить ни одной установки Java.
Дональд Кэмбелл [Donald Campbell]
O: OpenOffice.org нуждается в Java для базы данных и справочной системы, но остальная часть пакета будет работать и без нее. Лучший способ установить Java – через менеджер пакетов вашего дистрибутива. Загруженная с Sun версия будет работать, но старайтесь по возможности получать ПО через менеджер пакетов, это снижает вероятность конфликтов и проблем с зависимостями в будущем.
Заставить OpenOffice.org работать с Java проще некуда. Выбираем Options [Параметры] из меню Tool [Сервис] и переходим к OpenOffice.org >Java. Включаем Java, отметив квадратик Use a Java runtime environment [Использовать виртуальную машину Java], и ждем, пока Ваша система просканируется на предмет наличия установок Java, на что может уйти от нескольких секунд до минуты, в зависимости от скорости вашей системы. Так как это Java, то за это время вы успеете выпить чашечку кофе. В итоге вы должны увидеть список установленных Java Runtime Environment (JRE); выберите одну и нажмите OK. Придется выйти из OpenOffice.org и перезапустить его, чтобы изменения вступили в силу.
Если OpenOffice.org не может найти ваш JRE, можете нажать кнопку Add (Добавить) и указать путь к нему вручную: нечто вроде /opt/sun-jdk-1.6.0.03/jre/bin. Если вы устанавливали Java через менеджер пакетов вашего дистрибутива (а не менеджер пакетов OpenOffice.org), можете использовать его, чтобы посмотреть содержимое пакета, оно подскажет вам, где все установилось.
Решение некоторых проблем с USB
Нет длинных имен
B: Я использую USB-брелок на компьютере с Windows и скачиваю на него файлы из интернета. Затем подключаю брелок к компьютеру с Linux дома и нахожу, что все файлы с длинными именами переименовались с использованием “~” Например, mylongfile3.mp3 переименовался в mylong~1.mp3.
Если бы вы смогли помочь мне с этим, я был бы очень признателен, так как понятия не имею, что тут неправильно. Сперва я использовал grml.org – дистрибутив на основе Debian, но нашел, что проблема имеет место и на других дистрибутивах, например, Knoppix (тоже на базе Debian).
Джорди Барнс [Jordi Barnes]
O: Это похоже на проблему с опциями, используемыми при монтировании файловой системы USB-брелка. По умолчанию на этих устройствах используется FAT16 или FAT32, которые не поддерживают длинные имена напрямую и поэтому используют клуджи (да, знаю: то, что Windows использует клуджи, может шокировать) для отображения видимых вами коротких имен в соответствующие корректные длинные. Файловая система vfat в ядре Linux поддерживает это, а msdos – нет. Запустите команду mount в терминале, и вы увидите строки типа этих ля вашего USB-брелка.
/dev/sda1 on /media/usbstick type msdos (rw)
Если тип показывается как msdos, корень проблемы найден – теперь вам надо добиться, чтобы ваш брелок монтировался корректно. Если вы используете записи в /etc/fstab для монтирования, измените тип файловой системы, третий параметр в строке, с msdos на vfat или auto. Если вы используете систему автоматического монтирования вашего дистрибутива, то тип файловой системы должен идентифицироваться правильно.
Происходит ли Ваша беда со всеми брелками, которые вы пробуете, или только с этим? Если только с ним, то, наверное, у вас есть повреждения файловой системы, из-за которых команда mount неверно определяет файловую систему. Существуют обходные способы, но лучшим решением будет переформатирование брелка для устранения повреждения (или его замена, если это не поможет). Я не смог воспроизвести эту проблему на grml.org, поэтому подозреваю, что ваш USB-брелок поврежден или сломан. Память, используемая в этих устройствах, имеет ограниченный срок жизни, и, возможно, он уже вышел.
Загрузка с USB
B: У меня ноутбук Pentium 3, 866 MГц с жестким диском на 20 ГБ и Mandriva 2005LE, с загрузкой через Grub. Я хочу установить Ubuntu 7.04 на внешний жесткий диск, сделав двойную загрузку. Я знаю, что доступ к внешнему диску USB2 будет медленным, так как моя машина имеет только порты USB1.1.
Моя проблема в том, что BIOS ноутбука не может сделать USB-диск первым загрузочным устройством. Как модифицировать загрузчик для доступа к USB-диску или использовать дисковод для установки загрузчика? Я испытал трудности при поиске соответствующей информации по этому вопросу, но может быть эта тема уже обсуждалась в LXF…
shoreacre, из форума
O: Для загрузки с USB-диска вы можете использовать имеющийся загрузчик. Для этого хорошо использовать альтернативный установочный CD Ubuntu, он дает больше контроля над параметрами установки.
Установите Ubuntu на внешний диск обычным путем, но не разрешайте записать загрузчик в MBR, как обычно делается. Вместо этого установите Grub в корневой раздел – это, скорее всего, /dev/sdb1, если внешний диск – /dev/sda. Затем загрузитесь в Mandriva как обычно и смонтируйте раздел с Ubuntu. Mandriva 2005 использует /dev/hd* для IDE-дисков, так что ваш USB-диск теперь должен быть в /dev/sda. Откройте терминал суперпользователя и запустите
mkdir /mnt/tmp mount /dev/sda1 /mnt/tmp ВашТекстовыйРедактор /boot/Grub/ menu.lst /mnt/tmp/boot/Grub/menu.lst
для загрузки обеих конфигураций загрузчиков в ваш любимый текстовый редактор. Теперь у вас есть выбор: быстрый и простой метод или вариант поприятнее-глазу-но-позаковыристей-в-установке. Для «быстрого и простого» добавьте следующие строчки в конец файла menu.lst Mandriva:
title Ubuntu menu root (hd1,0) chainloader +1
Эти строки добавят в меню запись, запускающую загрузчик Ubuntu. Чтобы все делать из одного меню, вам придется скопировать пункты меню загрузчика Ubuntu в меню Mandriva. Посмотрите на его основные опции, которые идут первыми. Они содержат три строчки: заголовок, показываемый в меню, ядро для загрузки с набором опций и используемый initrd. Скопируйте эти строки в menu.lst Mandriva и исправьте заголовок на что-нибудь более понятное, затем измените пути к устройствам для корректного их определения. Grub считает от нуля, так что (hd1,0) – это первый раздел (0) на втором диске. вы можете просто включить этот путь в строки kernel и initrd, или (как я предпочитаю) как отдельную запись root.
Содержимое вашего menu.lst должно выглядеть так (для Ubuntu 7.10):
title Ubuntu 7.10 root(hd1,0) kernel /boot/vmlinuz-2.6.22-14 root=/dev/sda1 quiet splash initrd /boot/initrd.img-2.6.22-14
вы также должны скопировать другие пункты меню Ubuntu сходным образом, или оставить как было, для тех редких случаев, когда вам нужна только система по умолчанию.
Если при выборе этого меню происходит ошибка File not found, значит, вы неверно задали путь. Порядок дисков задается в настройках BIOS, но даже после этого Grub не сможет загрузиться с USB на всех системах. Проверьте корректный путь к ядру, запустив grub в терминале суперпользователя (или нажав C в меню Grub) для входа в оболочку Grub. Затем запустите
find /boot/vmlinuz-2.6.22-14
Команда должна показать корректный путь к ядру, включая номер диска. Убедитесь, что он совпадает с командой root в вашем меню. LXF'
Часто задаваемые вопросы... Магические клавиши
- Есть проблемы? Иногда проще прервать процесс и запустить его снова.
- Почему компьютеры имеют кнопку Reset?
Потому что они поставляются с операционной системой от Microsoft.
Эта шутка так стара, что ее слышали еще динозавры. По-вашему, программы Linux никогда не падают? Ядро Linux очень стабильно, и крах приложений обычно слабо влияет на состояние системы. Но иногда дефектный процесс может навредить, если захватит все процессорные циклы или всю память (или все вместе) и в итоге потребует перезагрузки. Или случайно запаниковавшее ядро может заморозить процесс загрузки.
- Значит, нам все-таки надо нажимать на Reset?
А вот и нет. Ядро Linux немного умеет колдовать: если вы нажмете Alt + SysRq и командную клавишу, ядро всегда воспримет команду, даже будучи полностью заблокированным. Так как это функция ядра, она готова к работе сразу после его загрузки, и вы можете использовать ее во время запуска.
- Я не смог найти клавишу SysRq, что я делаю не так?
Клавиша SysRq также используется для Print Screen, на ней может быть одна из этих надписей или обе.
- Что это за командные клавиши?
Их несколько, для выполнения различных операций, но чаще всего используются E, I, S, U и B:, нажимаемые именно в таком порядке.
- E посылает всем процессам сигнал TERM.
- I посылает сигнал KILL. Не используйте ее на удаленных сессиях, так как она разорвет сетевое соединение.
- S синхронизирует все смонтированные файловые системы, т.е. немедленнозаписывает на диск все данные из кэша.
- U отмонтирует все смонтированные файловые системы и перемонтирует их в режиме только-для-чтения.
Последние две операции гарантируют, что содержимое ваших дисков корректно запишется и не будет повреждено. Это сделает безопасным нажатие еще одной командной клавиши:
- B: для перезагрузки, которая перезагружает систему немедленно.
Так как ваши диски синхронизированы, вы не увидите предупреждений при перезагрузке, и не надо будет запускать fsck.
- Это все прекрасно при наличии доступа к клавиатуре компьютера, а если он удаленный и лишен периферии?
В этом случае можно использовать магию команд вроде этой:
echo s >/proc/sysrq-trigger
Если вы способны просочиться в компьютер, то можно выполнить синхронизацию и выключение.
Как я могу запретить другим использовать эти клавиши? Просто набрав:
echo 0 >/proc/sys/kernel/sysrq echo 1 >/proc/sys/kernel/sysrq
вы выключите и включите их соответственно; сделать это можно только от имени суперпользователя. Bы также можете включить команды выборочно: это описано в документации.
- Какие другие клавиши и команды можно использовать?
Полный список и всякие подробности можно найти в документации ядра. Если у вас установлен исходный код ядра, вы можете найти ее в /usr/src/linux/Documentation/sysrq.txt; также посмотрите в сети на http://www.mjmwired.net/kernel/Documentation/sysrq.txt.
Краткая справка про... Любезность программ
Помните, как мама учила вас вежливости? Она хотела, чтобы вы были дружелюбнее к другим детям и не отнимали у них все игрушки. То же самое применимо к программам, запускаемым на вашем компьютере. У вас конечное число циклов работы процессора, выделяемых на все ваши приложения; если одна программа заберет львиную их долю себе, пострадают другие программы. Linux поставляется с командой, заставляющей программы вести себя любезнее, и она называется nice. Bы можете запустить ее так nice любаяпрограмма или
nice -n 5 любаяпрограмма
Число после -n – это приращение «любезности» программы. По умолчанию программы запускаются с «любезностью» 0 (чем выше число, тем «любезнее» запускаемая программа); программы уступают программам с меньшей «любезностью», но будут иметь приоритет над программами с большей любезностью. Цифра в команде nice добавляет значение к существующему: так, дважды запустив nice -n 5, получим любезность, равную 10.
Наивысшая любезность равна 19, и она специально предназначена для использования процессора, только когда он никому не нужен. Программы, запущенные с таким параметром, могут работать очень медленно, но на реакции системы это никак не скажется. Обычный пользователь может только увеличивать значение любезности, но при наличии доступа root можно также вводить отрицательные значения. Сломать систему очень легко, поэтому «строить» программы, делая их любезнее, разрешается только суперпользователям.
Хотя nice помогает в загрузке процессора, она ничего не может поделать с программами, требующими частого доступа к диску и блокирующими процессор ожиданием ввода/вывода. Решением данной проблемы является ionice, которая делает со вводом/выводом то же, что nice с процессором.