LXF121:Ответы
(→7 Просто '''Sed'') |
(→* Клонирование CD) |
||
(не показана 1 промежуточная версия 1 участника) | |||
Строка 150: | Строка 150: | ||
'''''В''' Я пишу '''Bash'''-скрипт, который, среди прочего, устанавливает всякие программные пакеты. С помощью '''Zenity''' я придал ему привлекательную графическую оболочку и запускаю его на 64‑битном Debian 5.0.'' | '''''В''' Я пишу '''Bash'''-скрипт, который, среди прочего, устанавливает всякие программные пакеты. С помощью '''Zenity''' я придал ему привлекательную графическую оболочку и запускаю его на 64‑битном Debian 5.0.'' | ||
− | ''К сожалению, если один из пакетов, который мне нужно установить, находится на установочном DVD c Lenny, возникает проблема: в консоли под графической оболочкой появляется сообщение «Пожалуйста, вставьте DVD», но '''Zenity''' его не видит и не передает. А пользователю кажется, что программа зависла. | + | ''К сожалению, если один из пакетов, который мне нужно установить, находится на установочном DVD c Lenny, возникает проблема: в консоли под графической оболочкой появляется сообщение «Пожалуйста, вставьте DVD», но '''Zenity''' его не видит и не передает. А пользователю кажется, что программа зависла. Соответствующий фрагмент кода выглядит так:'' |
− | Соответствующий фрагмент кода выглядит так:'' | + | |
<source lang=bash> | <source lang=bash> | ||
Строка 310: | Строка 309: | ||
указанной клавиши. Правда, для повторного запуска скрипта нужно нажать всего две клавиши (стрелка вверх и '''Enter'''), так что времени это не сэкономит, но зато станет хорошим практическим упражнением, если Вы расположены чему-нибудь научиться. | указанной клавиши. Правда, для повторного запуска скрипта нужно нажать всего две клавиши (стрелка вверх и '''Enter'''), так что времени это не сэкономит, но зато станет хорошим практическим упражнением, если Вы расположены чему-нибудь научиться. | ||
− | == | + | ==Краткая справка про... ''Initrd''== |
+ | |||
+ | Заглянув в свой каталог '''/boot''' или в конфигурационный файл меню загрузчика, вы увидите ссылки на файлы '''initrd'''. Это образы электронного диска '''ramdisk''' (или образы '''ramfs''', новой реализации того же принципа). '''Ramdisk''', как ясно по названию, это диско-подобное накопительное | ||
+ | устройство, целиком расположенное в ОЗУ компьютера. А файл '''initrd''' — это '''ramdisk''', сохраненный в файл. Теперь, зная, ЧТО это, давайте разберемся, ЗАЧЕМ оно. | ||
+ | |||
+ | '''Initrd''', или начальный '''ramdisk''' (initial ramdisk) – это электронный диск, загружаемый ядром при старте. Он становится корневой файловой системой, и оттуда запускаются скрипты настройки системы перед передачей контроля настоящему корневому разделу на жестком диске. Главная задача | ||
+ | электронного диска – загрузка модулей ядра. Дистрибутивы созданы для работы на самом различном оборудовании, значит, собирается множество драйверов | ||
+ | устройств. Если модули вкомпилировать в образ ядра, оно станет гигантским, тормозным и съедающим прорву памяти, а 90 % его содержимого окажется мертвым | ||
+ | грузом. Поэтому в Linux созданы загружаемые модули ядра. Модули, нужные для монтирования корневой файловой системы, очевидно, не могут быть считаны из нее, и нужен способ заранее загрузить драйверы для контроллера жесткого диска и файловой системы, и, возможно, некоторые другие, например, ''LVM'' или ''dm-crypt''. Этим и занимается '''ramdisk'''. Скрипт ''linuxrc'' с него загружает модули, запускает все необходимые программы настройки (например, | ||
+ | для ''LVM'' или зашифрованной корневой файловой системы), а затем переходит на корень жесткого диска. | ||
+ | |||
+ | Образ '''initrd''' – это файловая система в файле '''cpio''', сжатом с помощью ''gzip'', так что его можно распаковать, смонтировать, изменить | ||
+ | и запаковать снова таким образом: | ||
+ | |||
+ | cd /mnt/tmp | ||
+ | zcat /path/to/initrd | cpio -id | ||
+ | #modify files here | ||
+ | find . -depth | cpio -o | gzip >/path/to/newinitrd | ||
+ | |||
+ | ==Часто задаваемые вопросы Удаленные рабочие столы== | ||
+ | |||
+ | * '''Хочу подключаться к моему домашнему компьютеру с работы и запускать графическую программу, например, почтовый клиент; возможно ли это?''' | ||
+ | : Да, возможно. Существует два основных способа этого достичь, с различными вариантами в каждом случае. | ||
+ | * '''Что это за различные варианты?''' | ||
+ | : Первый – X-проброс (X-forwarding), который лучше подходит, если на обоих компьютерах установлен Linux. Он работает по ''SSH''-соединению: вы запускаете программу в удаленной оболочке, и она показывается на вашем локальном рабочем столе. Например: ''ssh -X me@my.home.computer kmail'' Опция '''-X''' велит ''SSH'' использовать X-проброс. | ||
+ | * '''Это все, что нужно для запуска программ на моем локальном компьютере?''' | ||
+ | : Строго говоря, программа запускается на удаленном компьютере, но ее окошко показывается в локальной системе. Возможно, вам понадобиться отредактировать файл '''/etc/ssh/sshd_config''' и выставить значение '''‘yes’''' напротив опции '''‘X11Forwarding’'''. | ||
+ | * '''А вдруг мне понадобится весь рабочий стол — справится ли с этим X-проброс? ''' | ||
+ | : Да, справится. При этом запустится новый графический сеанс, который будет показан на вашем локальном компьютере. | ||
+ | * '''Но ведь это не одно и то же! Если я оставил программу работать дома и хочу увидеть ее окно с работы, у меня ничего не получится?''' | ||
+ | : Нет, для этого понадобится программа удаленного рабочего стола, так же, как если бы на вашем локальном компьютере стояла Windows. Стандартным выбором тут будет ''VNC'' (Virtual Network Computer). Это система «сервер–клиент», где ''VNC''-сервер запущен на вашем удаленном компьютере, а клиент – на локальном. На сайте http://www.realvnc.com есть пакеты для всех популярных ОС, так что вы можете попасть на вашу Linux-машину из системы Windows или Mac, и наоборот. | ||
+ | * '''Какие программы мне понадобятся?''' | ||
+ | : А какой у вас рабочий стол? Если KDE, то все, что нужно, уже есть, потому что в KDE встроено ПО для удаленного фрейм-буфера (''RFB'', remote frame buffer). ''RFB'' – это протокол, используемый ''VNC'' и совместимыми системами. С другими графическими средами вам понадобится установить из репозиториев вашего дистрибутива пакеты ''VNC'' или ''TightVNC''. | ||
+ | * '''А как насчет ширины канала? Можно ли подключаться через модем?''' | ||
+ | : Модему не потянуть вывод удаленного графического рабочего стола и поддержку его в реальном времени. Сгодится широкополосное подключение, но учтите, что независимо от входящей скорости вашего ADSL, исходящая вряд ли превышает 384 кбит/с, поэтому лучшим выбором будет ''TightVNC''. Помогут уменьшение размера и глубины цвета, отключение графических эффектов и прочие меры по уменьшению потока данных. |
Текущая версия на 12:46, 8 июля 2010
|
|
|
Содержание |
[править] Ответы
- Есть вопрос по Open Source? Пишите нам по адресу answers@linuxformat.ru!
[править] 1 Пустой дом
В После обновления Ubuntu до 8.04 с ядром linux-2.6.24‑23‑generic и Gnome 2.22.3 на моем Dell Inspiron 6400 появились мелкие проблемы. Файловый менеджер Gnome зависает при попытках отображения содержимого моей домашней директории. При просмотре других каталогов в системе все работает отлично.
Audacity не проигрывает записи. Я перепробовал уже все возможные настройки устройства вывода. Во время обновления до 8.04 система выдавала предупреждение о том, что менеджер пакетов поврежден — что-то насчет невозможности настройки hplip.
Джон Спрэгг [Jon Spragg]
О Сколько времени Вы отводите файловому менеджеру на отображение содержимого домашнего каталога? При включенной опции предпросмотра файлов, менеджер может задержаться на создании миниатюр для одного или более из них, особенно если они находятся на разделяемом сетевом ресурсе, а не на локальной машине. Для проверки можно либо совсем отключить предпросмотр в Параметрах файлового менеджера, установив для каждого типа файлов опцию Never [Никогда], либо как минимум убедиться, что эта опция включена только для локальных файлов с небольшим максимально разрешенным размером.
Если это сработает, можно создать временный каталог и переносить в него файлы и подкаталоги из Вашей домашней директории, пока зависания не прекратятся. Тогда Вы узнаете, какой файл или файлы были причиной проблемы, и примете необходимые меры.
Можете ли Вы проиграть файлы в других программах, или сохранить файл в Audacity, а затем воспроизвести его другим проигрывателем? Попробуйте это сделать, чтобы определить, таится ли источник проблемы именно в Audacity или же воспроизведение звука не работает глобально. Запустите программы, отказывающиеся воспроизвести звук, из консоли: это не заставит их проиграть файл, но зато Вы увидите сообщения об ошибках.
Ошибка менеджера пакетов, возможно, произошла из-за поврежденного пакета или пакета с неправильной подписью. Проблему, скорее всего, решит обновление списка пакетов в Synaptic и установка некоторых свежих версий пакетов.
[править] 2 Диск Eee... не жилец?!
В Недавно я поставил Ubuntu Netbook Remix 9.04 на свой Eee PC 900. Мне нравится гибкость Ubuntu и доступность обновлений, и я также очень полюбил интерфейс NBR, который на удивление классно работает после незначительных сделанных изменений, включая наложение заплатки на ядро. Но я начитался заметок в Интернете, выражающих беспокойство о том, как NBR (и альтернативные дистрибутивы) работают со встроенным твердотельным диском (SSD). При установке подобных дистрибутивов советуется принимать всяческие меры, как то:
- Не использовать журналируемую файловую систему на разделах SSD.
- Не помещать на SSD раздел подкачки.
- Сразу после установки редактировать fstab и указывать noatime в опциях монтирования SSD.
- Не вести журнал системных сообщений или ошибок на SSD.
Также много и других советов по части поведения некоторых программ, например, кэша Firefox. В вашем учебнике в номере LXF109 вроде ничего не говорилось о подобных проблемах с SSD при замене ОС на Eee. Не могли бы вы сказать, имеют ли под собой почву какие-нибудь из этих утверждений (или даже все)? Странно, что установка NBR по умолчанию создает на Eee 900 файловую систему ext3 и раздел подкачки и монтирует разделы с опцией relatime. Неужели Canonical не заботится о долговечности SSD? Или все эти страхи надуманы?
Марк Флорис [Marc Floris]
О Страхи основываются на том факте, что диски SSD – по существу, флэш-память, срок жизни у которой ограничен. Но используются они не так, как флэш-память на USB-брелках и в картах памяти. Проблемы флэш-памяти связаны с тем, что каждая ячейка выдерживает ограниченное количество циклов перезаписи; для устройств USB и карт памяти это от 100000 до миллиона, в зависимости от качества устройства. Вроде немало. Но отдельные участки диска перезаписываются очень часто: например, таблицы FAT и журналы файловых систем. Поврежденный журнал можно восстановить, но повреждение таблицы разделов на FAT практически означает гибель устройства, а именно эта файловая система используется на переносных USB-устройствах.
Жесткие диски SSD по ряду причин отличаются. Как правило, в них используются более качественные компоненты. На нетбуках не применяется файловая система FAT. А главное, в SSD используется «wear levelling» [управление износом] – то есть нагрузка равномерно распределяется по «диску» и операции записи не делаются на один и тот же сектор снова и снова.
Я использую журналируемые файловые системы (ext3 и xfs), а также раздел подкачки на моем Eee PC900 уже целый год. Работаю с ним ежедневно; вдобавок там стоит нестабильная сборка Gentoo, и пакеты обновляются почти каждый день. Прибавьте к этому активное использование почты и Интернета (кэш почтовика перезаписывается почти так же интенсивно, как и кэш браузера). Однако ошибки на диске у меня случались только с SD-картой памяти, единственным устройством, не применяющим «wear levelling» (она к тому же была от неизвестного изготовителя и сомнительного качества). А при необходимости спящего режима без раздела подкачки не обойтись.
Вспомните, что нетбуки Eee продаются с двухлетней гарантией, и компании Asus невыгодно включать в свои продукты технологии, способные дать сбой в пределах этого периода. Canonical также не является членом мафии вредителей аппаратного обеспечения (как и любая другая команда разработчиков дистрибутивов); хотя я бы и поставил под вопрос использование atime для монтирования файловой системы, но скорее по причинам производительности, чем надежности – я тоже использую noatime для жестких дисков. В остальном я вполне одобряю настройки, применяемые по умолчанию в NBR.
[править] 3 Удаленный сервер для резервных копий
В Я планирую настроить удаленный сервер резервного копирования для хранения данных с различных рабочих столов и серверов Windows, и ищу пакет для резервного копирования для Linux-серверов, а также клиентское ПО для управления резервным копированием с клиентской машины.
Джорж Лианос [George Lianos]
О Советуем глянуть на BackupPC (http://backuppc.sourceforge.net), эта программа предназначена для резервного копирования на базе сервера. Другими словами, на клиентской машине не требуется никакого специального ПО: все процессы резервного копирования запускаются и контролируются сервером. Что, в свою очередь, означает: Вы не будете зависеть от пользователей по части своевременности резервного копирования или заносить задачи в Cron на каждом компьютере.
У BackupPC есть web-интерфейс, через который доступны просмотр и восстановление копий полностью или в виде отдельных файлов и каталогов. Восстановление можно производить на то же место в файловой системе, где была сделана резервная копия, или загрузить необходимые для восстановления файлы как архив tar или zip. Web-интерфейс предоставляет опцию просмотра всех компьютеров, находящихся в ведении программы, с подробностями обо всех сделанных резервных копиях. В случае возникновения ошибок в результате выполнения копирования, можно даже получать уведомления по почте, но, как правило, работа BackupPC не требует вмешательства (лично у меня такая ситуация иногда возникает, когда я выключаю ноутбук во время резервного копирования).
BackupPC связывается с клиентами через Samba, SSH, NFS или rsync, так что их машины реформировать незачем – просто убедитесь, что у BackupPC есть права на чтение разделяемых ресурсов или на подключение по SSH. Не исключено, что резервные копии Вам требуются для нескольких аналогичных машин; тогда Вам будет приятно узнать, что BackupPC экономит время и место на диске, храня множественные копии одного файла в виде жестких ссылок. Если на десяти машинах содержится один и тот же файл, сервер сохранит лишь одну его копию.
Здесь нет места для подробных инструкций по настройке BackupPC, но у программы обширная документация, и через пару месяцев мы опишем настройку сервера резервного копирования в одном из наших учебников серии «Сети».
[править] 4 Помощь в документации
В В апрельском номере LXF117 вы дали очень экономное решение проблемы прав доступа для файла .dmrc. У меня приключилась такая же проблема, и ваши две строчки ликвидировали ее быстро и просто:
chown -R user: ~user chmod -R u+rw,go-w ~user
Я не программист, но мне тоже хотелось бы поучаствовать в улучшении удобства для пользователя и изменить сообщение об ошибке так, чтобы в него включалось это возможное решение. Как мне это сделать?
Джон Стайлз [John Stiles]
О Область, где пользователи всегда могут внести вклад в открытое ПО, даже не имея опыта в программировании – это повышение качества документации. Есть два пути предложить свою помощь и предоставить улучшения. Менее формальный способ – сделать сообщение в списке рассылки или на форуме (почти у каждого проекта есть свой форум) и описать свои предложения. Разработчики могут и не отреагировать, но в любом случае обсуждение других пользователей гарантировано.
Другая возможность – отослать сообщение об ошибке на баг-трекер; такие есть у большинства проектов. Несмотря на свое название, баг-трекеры не только отлавливают ошибки (баги): на них также можно высылать усовершенствования и просьбы о введении дополнительных функций. Все запросы отслеживаются, так что и Вам, и разработчикам будет сразу видно, когда были приняты меры по Вашему запросу или сообщению.
В случае, подобном данному, вполне уместен отчет об «ошибке» с соответствующей заменой текста сообщения, но постарайтесь быть кратким. Если необходим более подробный текст, лучше выложить его куда-нибудь в сеть, и пусть сообщение об ошибке отправляет пользователя к нему. Если Вы можете предоставить заплатку на исходные коды программы, будет еще лучше.
Для исправления ошибок в документации лучшим методом будет скачать свежий tar-архив с исходным кодом и с помощью grep отловить файл, содержащий сообщение, которое Вы хотите исправить. Создать заплатку очень просто. Скажем, нам нужно изменить файл errors.h в текущем каталоге. Делаем его копию под названием error.h.orig, а затем вносим необходимые изменения в errors.h. Заплатка готова:
diff -u errors.h.orig errors.h >errors.h.patch
Прочитав файл заплатки, Вы увидите, что это набор инструкций для команды patch: какие строки убрать из старого файла и какие добавить, чтобы он превратился в новый файл. Отошлите заплатку вместе с сообщением об ошибке, и разработчики воспроизведут Ваши изменения. Не отсылайте новый полученный файл целиком, потому что у разработчиков могут быть и свои изменения. Файл заплатки даст им возможность внести Ваши поправки в новую версию программы.
[править] 5 USB так USB
В Я пользуюсь компьютером с процессором AMD 1,6 ГГц, на нем установлен Ubuntu 8.10, а на другом разделе — Windows XP. Мой провайдер — BT, и я пользуюсь USB-модемом BT Voyager 105. Тут-то и начинаются проблемы, поскольку в BT сказали, что ничего про Ubuntu не знают и не могут помочь мне настроить подключение к сети. Я скачал какие-то заумные инструкции с форума Ubuntu, но они не помогли. Наверняка существует более простой, пошаговый способ настройки Интернета в Ubuntu.
Кстати, мой принтер Lexmark тоже не работал, и мне пришлось раскошелиться на HP 4100. В связи с этим не советуйте мне купить дополнительное ПО: я пенсионер и сейчас на мели!
Грэм Филлипс-Льюис [Graham Phillips-Lewis]
О Понятно, что Вам не хочется зря тратить деньги, но умеренное вложение в более достойный модем спасло бы Вас от множества проблем. Лучшее, что можно сказать про бесплатные модемы, раздаваемые провайдерами – то, что они соответствуют своей стоимости. Порядочный модем подключается к порту Ethernet, а не к USB, и ему не нужны ни специальный драйвер, ни дополнительное ПО на компьютере. Стандартный сетевой стек и web-браузер, которые есть у всех, прекрасно подойдут. Большинство внешних модемов также включают функции маршрутизатора и межсетевого экрана, защищая Вашу систему независимо от установленной ОС. Поскольку хороший модем сам регулирует сетевые протоколы, не перекладывая эту работу на процессор с помощью драйвера, то и сетевое соединение, и сам сам компьютер в общем становятся более отзывчивыми. Подобный модем стоит где-то в районе пары тысяч рублей.
Если Вы все-таки намерены оставить Voyager USB, придется смириться с тем, что он будет работать с меньшей отдачей и что для его настройки придется немного попотеть. Это касается и Windows, но там есть автоматическая установка драйверов. Чтобы проделать это в Ubuntu, надо будет скачать два файла. Так как в Linux Ваша сеть пока не работает, сделайте это изпод Windows или с другого компьютера. Зайдите по адресу http://eciadsl.flashtux.org/download. php и заберите пакет для Ubuntu – текущая версия eciadslusermode_0.12‑1_i386.deb. Затем на сайте http://archive.ubuntu.com/ubuntu/pool/universe/r/rppppoe возьмите свежий Deb-пакет для архитектуры i386. На данный момент это pppoe_3.8‑3_i386.deb. Номер версии в этих пакетах может быть другим, если следующие релизы выйдут уже после написания этого ответа. Скопируйте скачанные файлы на USB-брелок и перенесите на свой Ubuntu. Убедившись, что модем не подключен, двойным щелчком установите каждый из этих пакетов, сначала пакет с pppoe.
Теперь настройте модем на работу со своим провайдером (для пользователей Windows эта часть обычно выполняется автоматически). Наберите в терминале
sudo eciadsl-config-tk
чтобы запустить графическую программу настройки (если она не запустится, наберите eciadsl-config-text). В верхней части окна введите имя пользователя и пароль, выданные Вашим провайдером, и укажите значения 0 и 38 для VPI и VCI соответственно. Выберите нужный модем из списка, выставьте режим PPP на VCM_RFC2364, щелкните по кнопке Remove Dabusb (игнорируя любые возможные сообщения), а затем – по Create Config. В результате должно открыться диалоговое окно с сообщениями, заканчивающимися на OK. Теперь модем установлен и настроен; включите его и войдите в Интернет командой
eciadsl-start
Ее можно привязать к иконке на рабочем столе, щелкнув по нему правой кнопкой мыши и выбрав в меню пункт Create Launcher [Создать кнопку запуска]. Внесите eciadsl-start (или eciadsl-stop) в поля имени и команды. Также можно заставить стартовать соединение автоматически при запуске рабочего стола с помощью меню System > Preferences > Sessions [Система > Настройки > Сессии], щелкнув там на кнопку Add [Добавить] и вписав имя программы.
[править] 6 Не-переносимость
В Что творится с принципом переносимости в Linux-сообществе? Я знаю, что разные дистрибутивы обязаны работать на разных машинах с разными конфигурациями. Но ведь этот принцип должен применяться и к обновлениям одного дистрибутива! У меня двухпроцессорная 64‑битная машина Acer Aspire с графической картой GeForce 8200, прекрасно работающей в Fedora 9 (признаю, я-таки повозился с разрешением экрана, но это ерунда). А вот когда я пытаюсь обновиться до 64‑битной Fedora 10, X Window System не стартует, работает только консольный вход, и startx ничего не делает. Почему X-сервер в Fedora 9 работает, а в Fedora 10 — нет? Разве не должны одни и те же программы работать в той же ОС, хотя бы и обновленной?
Виллим Браун [Willim Brown]
О Ответ на Ваш вопрос – «да, должны», но, боюсь, Вам будет этого мало. Сомневаюсь, что startx совсем ничего не делает. Возможно, он не запускает X, но в любом случае выдает в терминал сообщения об ошибках. Более подробную информацию можно найти в файле журнала /var/log/Xorg.0.log. Ошибки помечены как “(EE)”, и выделить их из остальной информации в этом файле можно с помощью
grep EE /var/log/Xorg.0.log
В некотором смысле дистрибутивы находятся на милости разработчиков ПО. И Вас подвели изменения в X.org. Команда разработчиков X.org старается перейти от громоздкого и иногда загадочного xorg.conf к системе полного автоопределения, чтобы любая аппаратная комбинация сразу работала сама, но в Вашем случае так не получилось. Вот самое быстрое решение проблемы: если у Вас сохранилась установка Fedora 9 или резервные копии важных файлов, скопируйте /etc/X11/xorg.conf из установки Fedora 9 в Fedora 10. X.org предпочтет содержимое этого файла автонастройкам, и все должно заработать.
Если у Вас нет файла xorg.conf, его можно создать для Вашей аппаратной конфигурации, запустив из-под root следующие команды:
yum install system-config-display system-config-display
В результате должно появиться то самое окно настройки, которое Вы видели во время установки Fedora 9, и на основе Вашего выбора создастся /etc/X11/xorg.conf. Если и тогда ничего не выйдет – скажем, не обнаружатся подходящие настройки для Вашего оборудования – укажите нужные опции из командной строки, к примеру,
system-config-display -- setresolution=1024x768 -- set-depth=24 -- setdriver=nvidia
Запустите system-config-display -- help, чтобы увидеть все доступные опции.
[править] 7 Просто Sed
В Я пишу Bash-скрипт, который, среди прочего, устанавливает всякие программные пакеты. С помощью Zenity я придал ему привлекательную графическую оболочку и запускаю его на 64‑битном Debian 5.0.
К сожалению, если один из пакетов, который мне нужно установить, находится на установочном DVD c Lenny, возникает проблема: в консоли под графической оболочкой появляется сообщение «Пожалуйста, вставьте DVD», но Zenity его не видит и не передает. А пользователю кажется, что программа зависла. Соответствующий фрагмент кода выглядит так:
Select all ( echo “33” aptitude -y install gcc echo “66” aptitude -y install sysstat echo “99” ) | zenity -- auto-close -- progress -- text=”Fetching software...” -- title=”Installing Software “ -- width 300
Тут возникает ряд вопросов. Во-первых, можно ли заставить Zenity распознавать события и показывать сообщения типа «пожалуйста, вставьте установочный DVD»? Думаю, что нет, хотя могу ошибаться. Но это было бы идеальным решением, и тогда мой вопрос даже не нужно дочитывать до конца (только подскажите нужное заклинание!).
Как вариант, я мог бы написать код, говорящий: «Если установочный DVD занесен в /etc/apt/sources.list, закомментируй это» и «Если в источниках нет http://volatile.debian.org/debianvolatile — добавь его». К сожалению, для анализа текстовых комментариев файлов придется привлечь awk и sed, а оба они не вызывают у меня энтузиазма! Я совершенно беспомощен в работе с ними, хотя и штудировал их man-страницы и статьи про них в Google до рези в глазах.
Не посоветуете ли вы код для Bash, который проверял бы присутствие двух источников в файле sources.list, удалял строчки насчет DVD при их наличии, добавлял бы онлайн-источник, если он там отсутствует, и не добавлял бы его, если он уже записан в файле?!
HJR, с форумов
О Посылается ли сообщение «Пожалуйста, вставьте...» на стандартный вывод ошибок вместо стандартного вывода сообщений? Если да – его можно отловить, добавив параметр 2>&1 к Вашему вызову aptitude. Затем просмотрите вывод в поисках нужной строки, прежде чем передавать его Zenity.
Вы правы, предполагая, что для изменения текстовых файлов из командной строки нужны sed или awk – в данном случае sed – но эти утилиты достойны изучения. Поначалу они вводят в трепет, но когда Вы освоитесь, станут для Вас незаменимыми. Все источники CD/DVD в файле sources.list закомментирует такая команда:
sed -i ‘s/^deb cdrom/# deb cdrom/’ /etc/apt/sources.list
Разберемся: -i значит «заменить существующий файл измененным содержимым»; s значит «вместо всего, что совпадает с первой строкой, вставить вторую строку». Так мы заменяем все выражения deb cdrom в начале строки на # deb cdrom. Точно так же и Synaptic изменяет файл, чтобы источник при случае снова мог быть доступен.
Для добавления строки с источником просто запишите ее в файл с помощью echo, но файл sources лучше зря не трогать; сперва проверьте, надо ли вообще его менять, с помощью grep. До внесения правок сделайте резервную копию файла и восстановите его, когда все закончите.
cp /etc/apt/sources.list /etc/apt/sources.list.$$ sed -i ‘s/^deb cdrom/# deb cdrom/’ /etc/apt/sources.list grep -q “^deb http://volatile.debian.org/debianvolatile” /etc/apt/sources.list || echo “строка репозитория” >>/etc/apt/sources.list # делайте свои дела if diff -q /etc/apt/sources.list /etc/apt/sources.list.$$ then rm /etc/apt/sources.list else mv /etc/apt/sources.list.$$ /etc/apt/sources.list fi
Здесь $$ – номер текущего процесса, он обеспечит уникальность имени файла для резервной копии. Команда grep означает, что репозиторий добавится только в том случае, если его не хватает, а заключительная часть проверяет, были ли сделаны изменения в sources.list, и восстанавливает его первоначальный вариант, если файл был изменен.
[править] 8 Молчит, как партизан
В После обновления до Debian Lenny у меня появились странные проблемы со звуком: при воспроизведении аудио и видео он присутствует, а при проигрывании Flash-роликов в браузере — нет. Также наблюдаются проблемы со звуком в VirualBox и Wine. При этом в консоли появляется сообщение:
ALSA lib pcm_dmix.c:996:(snd_pcm_dmix_open) unable to open slave
Запуск alsaconf от имени root решает проблему, и звук появляется во всех приложениях, но исчезает микрофон, встроенный в web-камеру Logitech. Во время перезагрузки компьютер жалуется, что по адресу index=0 аудиокарты не обнаружено. После полной загрузки снова работает микрофон, но вообще нет звука.
Заменив в файле /etc/modprobe.d/sound значение index на 1 и перегрузившись, я возвращаюсь к исходной точке: нет звука в браузерах и VirtualBox, но есть микрофон. Нельзя ли настроить и его, и звук одновременно? На всякий случай, привожу содержимое /etc/modprobe.d/sound:
alias snd-card-0 snd-hda-intel options snd-hda-intel index=1
Михаил Михайлов
О Когда в системе более одного аудио-устройства, звуковая подсистема ALSA различает устройства по номерам: hw:0, hw:1 и т.д. Приложения обычно берут устройство по умолчанию, первое в этом списке, то есть hw:0. Чаще всего звуковое устройство в компьютере только одно (аудиокарта), и настройка приложений, т.е. указание, через какое устройство воспроизводить звук, не требуется.
В Вашем случае, встроенный в видеокамеру микрофон стал для системы дополнительным звуковым устройством. Если оно первое в списке, то приложения пытаются вывести звук через него, но это всего лишь web-камера, и ничего хорошего тут не выйдет.
Чтобы разрешить конфликт между микрофоном и звуковой картой, жестко задайте очередность их загрузки при старте ОС. Для этого в файл /etc/modprobe.d/sound, содержимое которого Вы привели, достаточно добавить строки:
alias snd-card-0 snd-hda-intel alias snd-card-1 snd-usb-audio options snd-hda-intel index=0 options snd-usb-audio index=1
Здесь мы явно указываем, какое устройство должно быть первым (здесь это snd-hda-intel), а какое – вторым (snd-usb-audio – web-камера, подключенная через USB).
[править] 9 Как в кино
В Пожалуйста, посоветуйте, как программно отключить цветность Х-сервера в Linux: хочу получить полностью черно-белое изображение с максимумом градаций серого, как в старом добром кино. Еще лучше было бы задать какой-нибудь тон, вроде сепии.
Это меня очень здорово выручило бы. Мне приходится подолгу сидеть за монитором, а цвет для моей работы, в общем, не нужен, и я заметил, что когда убираю его аппаратно, глаза устают меньше.
Александр Винокуров
О Исходя из личного опыта, я бы советовал сменить монитор, но это не есть решение Вашей задачи. Обойдемся без финансовых затрат. В секции Display файла конфигурации X-сервера (обычно /etc/X11/xorg.conf) имеется параметр Visual; он может принимать значения StaticGray и GrayScale. Укажите одно из них, и Ваша проблема будет решена.
Но учтите, черно-белый X доступен только при глубине цвета до 8 бит, и Вам придется заодно поменять и параметр DefaultColorDepth в секции Screen. Не помешает также установить на рабочем столе визуальную тему с минимумом цветов: градиенты и прочие новомодные украшения не особо красиво смотрятся даже при 256 оттенках серого.
[править] 10 Починка загрузчика
В Я недавно установила Ubuntu 9.04, но затем по ошибке инсталлировала на другой раздел Windows XP, забыв, что она затирает MBR, и теперь мне недоступна моя почта в Ubuntu.
Потом я подумала, что если поставить Ubuntu еще раз, то, возможно, у меня будет доступ к MBR, а то и доступ к первой установке Ubuntu через измененный MBR.
Могу ли я с помощью второй установки Ubuntu получить доступ к почтовым папкам в моем первом Ubuntu? Или посоветуйте мне, как возобновить к нему доступ.
Патриция [Patricia]
О В MBR хранится только начальный код загрузчика; файлы, нужные для показа загрузочного меню и загрузки по выбору, хранятся на загрузочном разделе Вашей первой установки Ubuntu. Восстановить Grub в MBR можно с помощью большинства LiveCD, и некоторые из них даже специально предназначены для этой задачи: например, SuperGrub Disc (http;//www.supergrubdisk.org) или System Rescue CD (http://www.sysresccd.org). Super Grub Disc может автоматически поправить MBR в случае, если на компьютере одна установка Linux и одна установка Windows. Даже если установлены два Linux, нужно только следовать пунктам меню и выбрать дистрибутив, в котором Вы хотите настроить загрузчик. Подробные инструкции см. на сайте http://www.supergrubdisk.org/wiki/Howto_Fix_Grub.
Восстановить Grub можно с помощью любого Live-CD и нескольких команд. Сначала определите, на каком диске находится каталог /boot. Grub начинает отсчет дисков и разделов с нуля, так что второй раздел на первом диске, то есть, в терминах Linux, /dev/sda2, будет называться (hd0,1). Определив диск, открываем терминал и вводим:
sudo grub root (hd0,1) setup (hd0) quit
Первая команда вводит нас в оболочку Grub с правами root. Следующая – определяет раздел, где находятся файлы загрузчика; затем мы записываем Grub в MBR командой setup и выходим из оболочки.
Если Вы не уверены в разделе, оболочка Grub содержит вспомогательную команду find. В большинстве дистрибутивов создается символьная ссылка /boot/vmlinuz, указывающая на ядро, поэтому после входа в оболочку Grub запустите
find /boot/vmlinuz
Выдастся по одному результату на каждую из Ваших установок Ubuntu, так что выбирайте нужную. Если Вам требуется доступ из новой установки в старую, проверьте совпадение ID пользователя и группы. Даже если Вы использовали одно и то же имя пользователя на обеих установках, файловая система хранит только числовой ID, поэтому если у Вашего пользователя был UID 1000 на первой установке и 1001 – на второй, то полного доступа на чтение/запись к файлам из другой установки у Вас не будет. Чтобы сделать их доступными для чтения из текущей установки, введите в консоли
chown -R username: /other/home/username
заменив username и точку монтирования на соответствующие значения.
[править] * Клонирование CD
В Пытаюсь собрать компьютер для клонирования CD на базе старенькой машины Sempron с четырьмя приводами IDE CD-RW и жестким диском SATA. Я установил Ubuntu 9.04 и попробовал GnomeBaker и K3b, но в них, похоже, нет поддержки множественного одновременного прожига. Нам нужно готовить около 200 дисков для различных проектов в школе, где я работаю — не посоветуете ли вы что-нибудь подходящее новичку?
Dwillmot20, с форумов
О Я бы создал ISO-образ с помощью Вашей любимой программы и применил скрипт оболочки: для повторяемой задачи это куда удобнее, чем все время жать на кнопки в графическом интерфейсе. Например, так:
#!/bin/sh DEVICES=”/dev/cdrom0 /dev/cdrom1 /dev/cdrom2 /dev/cdrom3” for DEV in DEVICES; do cdrecord -eject dev=$DEV “$1” & done
Скопируйте это в любой текстовый редактор (допустим, в Gedit), перечислите свои записывающие CD-приводы в строке DEVICES, сохраните скрипт в каком-либо каталоге, внесенном в PATH – скажем, в /usr/local/bin/multiburn.sh или ~/bin/multiburn.sh – и сделайте его исполняемым. При сохранении в домашнем каталоге bin это поможет сделать файловый менеджер: щелкните правой кнопкой по файлу и выберите Свойства. Или установите права в консоли:
sudo chmod +x /usr/local/bin/multiburn.sh
Создав ISO-образ с помощью K3b или любой симпатичной Вам программы, вложите чистые болванки во все приводы и запустите скрипт, задав ему путь к ISO-образу.
multiburn.sh /path/to/image.iso
Когда все четыре диска будут записаны и извлечены, замените их и запустите скрипт снова. Скрипт можно модифицировать, чтобы он запускался по нажатию указанной клавиши. Правда, для повторного запуска скрипта нужно нажать всего две клавиши (стрелка вверх и Enter), так что времени это не сэкономит, но зато станет хорошим практическим упражнением, если Вы расположены чему-нибудь научиться.
[править] Краткая справка про... Initrd
Заглянув в свой каталог /boot или в конфигурационный файл меню загрузчика, вы увидите ссылки на файлы initrd. Это образы электронного диска ramdisk (или образы ramfs, новой реализации того же принципа). Ramdisk, как ясно по названию, это диско-подобное накопительное устройство, целиком расположенное в ОЗУ компьютера. А файл initrd — это ramdisk, сохраненный в файл. Теперь, зная, ЧТО это, давайте разберемся, ЗАЧЕМ оно.
Initrd, или начальный ramdisk (initial ramdisk) – это электронный диск, загружаемый ядром при старте. Он становится корневой файловой системой, и оттуда запускаются скрипты настройки системы перед передачей контроля настоящему корневому разделу на жестком диске. Главная задача электронного диска – загрузка модулей ядра. Дистрибутивы созданы для работы на самом различном оборудовании, значит, собирается множество драйверов устройств. Если модули вкомпилировать в образ ядра, оно станет гигантским, тормозным и съедающим прорву памяти, а 90 % его содержимого окажется мертвым грузом. Поэтому в Linux созданы загружаемые модули ядра. Модули, нужные для монтирования корневой файловой системы, очевидно, не могут быть считаны из нее, и нужен способ заранее загрузить драйверы для контроллера жесткого диска и файловой системы, и, возможно, некоторые другие, например, LVM или dm-crypt. Этим и занимается ramdisk. Скрипт linuxrc с него загружает модули, запускает все необходимые программы настройки (например, для LVM или зашифрованной корневой файловой системы), а затем переходит на корень жесткого диска.
Образ initrd – это файловая система в файле cpio, сжатом с помощью gzip, так что его можно распаковать, смонтировать, изменить и запаковать снова таким образом:
cd /mnt/tmp zcat /path/to/initrd | cpio -id #modify files here find . -depth | cpio -o | gzip >/path/to/newinitrd
[править] Часто задаваемые вопросы Удаленные рабочие столы
- Хочу подключаться к моему домашнему компьютеру с работы и запускать графическую программу, например, почтовый клиент; возможно ли это?
- Да, возможно. Существует два основных способа этого достичь, с различными вариантами в каждом случае.
- Что это за различные варианты?
- Первый – X-проброс (X-forwarding), который лучше подходит, если на обоих компьютерах установлен Linux. Он работает по SSH-соединению: вы запускаете программу в удаленной оболочке, и она показывается на вашем локальном рабочем столе. Например: ssh -X me@my.home.computer kmail Опция -X велит SSH использовать X-проброс.
- Это все, что нужно для запуска программ на моем локальном компьютере?
- Строго говоря, программа запускается на удаленном компьютере, но ее окошко показывается в локальной системе. Возможно, вам понадобиться отредактировать файл /etc/ssh/sshd_config и выставить значение ‘yes’ напротив опции ‘X11Forwarding’.
- А вдруг мне понадобится весь рабочий стол — справится ли с этим X-проброс?
- Да, справится. При этом запустится новый графический сеанс, который будет показан на вашем локальном компьютере.
- Но ведь это не одно и то же! Если я оставил программу работать дома и хочу увидеть ее окно с работы, у меня ничего не получится?
- Нет, для этого понадобится программа удаленного рабочего стола, так же, как если бы на вашем локальном компьютере стояла Windows. Стандартным выбором тут будет VNC (Virtual Network Computer). Это система «сервер–клиент», где VNC-сервер запущен на вашем удаленном компьютере, а клиент – на локальном. На сайте http://www.realvnc.com есть пакеты для всех популярных ОС, так что вы можете попасть на вашу Linux-машину из системы Windows или Mac, и наоборот.
- Какие программы мне понадобятся?
- А какой у вас рабочий стол? Если KDE, то все, что нужно, уже есть, потому что в KDE встроено ПО для удаленного фрейм-буфера (RFB, remote frame buffer). RFB – это протокол, используемый VNC и совместимыми системами. С другими графическими средами вам понадобится установить из репозиториев вашего дистрибутива пакеты VNC или TightVNC.
- А как насчет ширины канала? Можно ли подключаться через модем?
- Модему не потянуть вывод удаленного графического рабочего стола и поддержку его в реальном времени. Сгодится широкополосное подключение, но учтите, что независимо от входящей скорости вашего ADSL, исходящая вряд ли превышает 384 кбит/с, поэтому лучшим выбором будет TightVNC. Помогут уменьшение размера и глубины цвета, отключение графических эффектов и прочие меры по уменьшению потока данных.