Читаем
http://fine.kalinovka.net/?q=node/3
http://www.mojoholder.narod.ru
http://www.fedoranews.org/jorge/howto/howto01.shtml
Помогут эти статьи:
Описание параметров и значений О выставлении параметров
Указать где-нибудь при загрузке (например, в /etc/rc.d/rc.local):
echo 20 > /proc/sys/vm/swappiness
Изменять параметр swappiness также можно через интерфейс /etc/sysctl
Ключ называется vm.swappiness
На машинах, выполняющих, например, кодирование видео, можно порекомендовать значение 0, поскольку во-первых, это более отвечает поведению ядра 2.4, а во-вторых позоляет избежать так называемой пробуксовки, когда постоянно активен процесс своппинга. Единственное исключение - машины с менее чем 128М памяти.
Есть еще ключ vm.vfs_cache_pressure, который рекомендуется повысить хотя бы до 1000
Тем, кому интересно, могут прочитать обсуждение на lkml: http://kerneltrap.org/node/view/3000
А также обсуждения патча Con Kolivas'а по регулированию этого параметра "на лету" http://kerneltrap.org/node/view/1044.
За дополнение спасибо annoynimous.
Лечить достаточно просто.
/var/lib/rpm
и удаляем файлики __db.001, __db.002 и __db.003.rpm --rebuilddb
Ядра по-умолчанию можно увидеть во всей красе в пакете из дистрибутива.
Также можно поискать в /boot
файл конфигурации (нечто вроде config-2.6.9-1.681_FC3.mppe), или (если есть) в файле /proc/config.gz
.
Ну вообще данные надписи сами по себе являются руководством к действию. Или ядро не нашло корневой раздел там, где он был указан, или нет поддержки его файловой системы, например.
1-й случай. Смотрим как собрали поддержку корневой файловой системы. Если она собрана модулем, то у вас должен быть создан initrd (и лежать в папке /boot) и прописан в вашем загрузчике. Данный файл должен создаваться на новое ядро ЗАНОВО!
В загрузчике запись об initrd выглядит примерно так для lilo:
/etc/lilo.conf:
initrd = /boot/initrd-2.6.3-prep5.img
и так для grub:
initrd /boot/initrd-2.6.3-prep5.img
Дело в том, что в этом файле находятся модули ядра и при загрузке ядро в состоянии обратиться к ним в отличие от модулей, что лежат в /lib и не могут быть подключены, т.к. ядро не видит раздел (потому что нет соответствующего модуля - замкнутый круг).
2-й случай. Тут все несколько сложнее. Дело в параметрах загрузчика. Если вы собираете поддержку корневой файловой системы не модулем, то не нужно передавать ядру параметр root=/ или root=LABEL=/ (кстати, root можно прописать отдельно, а не как параметр, например, так: root = /dev/hda2 ) - все эти вещи нужны системе, чтобы нормально запуститься после установки.
Для grub стоит проверить правильность записи о рутовом разделе, т.е. наличие строчки вроде такой:
root (hd0,1)
Если вы собираете поддержку корневой файловой системы модулем, а эти строчки прописаны, значит скорее всего не прописан initrd (или он старый и в нем нет или не грузится данный модуль).
Общий совет: Если вы не собираетесь таскать систему с винта на винт, проще собрать поддержку корневой файловой системы в ядре и обойтись без указывания корневого раздела (root =) и создания и использования initrd.
Зайдите на http://mcmcc.bat.ru/fedora/#12.1
Примерчик работы того же - http://www.linux.org.ru/view-message.jsp?msgid=318591
man bootparam
Передать параметр acpi=force. Для систем с Hyper Threading или многопроцессорных лучше передать параметр acpismp=force. Например, для lilo:
image=/boot/vmlinuz-2.4.22-1.2135.2
label=Stable
read-only
append="hdc=ide-scsi acpi=force"
Для grub
title Fedora Core (2.6.8-1.598)
root (hd0,1)
kernel /vmlinuz-2.6.8-1.598.2 ro acpi=force
root@linux# modinfo module_name
user@linux$ man insmod
user@linux$ man modprobe
user@linux$ man modules.conf
ну и
depmod -A
Кроме информации о авторе, лицензии и проч., если модуль может принимать некие параметры, они будут описаны строками вида
parm: debug int, description "3c59x debug level (0-6)"
parm: ...
parm: ...
Обновляем следующие пакеты (версии взяты для примера):
Если вы планируете собирать программы:
Вообще, обычно умные люди делают сначала `rpm -qa | grep glibc`, дабы посмотреть, какие пакеты из glibc у них установлены, а потом уже их обновляют.
После этого, можно смело перегружаться.
Примечание - бывает, что сначала требуется обновить rpm, к rpm вполне возможно потребуется обновление db4 и cpio и точно придется обновлять popt. Например, при обновлении последних glibc под RedHat.
Скорее всего можно, если ядро дистрибутива не ниже 2.4.22
Рекомендуется прочитать статью о том, как поставить ASP Linux на SATA и проверить список поддерживаемого оборудования
Можно вот так:
user@linux# for i in *.rpm; do rpm -qpl $i | grep /filename >/dev/null 2>&1 && echo $i; done
или (говорят, быстрее)
user@linux# find -name '*.rpm' | xargs rpm -qpil | sed -ne '/^Name/h;/filename/{H;x;p;}' | uniq
Есть два вида rpm: src.rpm (или srpm) и бинарный rpm (типа i386.rpm, i686.rpm и т.п.).
В первом содержатся исходники и перед тем, как установить такой пакет, программу нужно собрать - т.е. получить бинарный rpm. Об этом написано здесь.
Второй является собранной программой, установить его можно такой командой:
root@localhost# rpm -ihv
<verb>
Возможно, что программа не установится, сказав, что не хватает зависимостей.
Зависимости - это пакеты, требующиеся для работы данного пакета. Если мы считаем,
что некоторые функции, реализуемые данными зависимости, нам не нужны (например,
для пакета kdepim есть зависимость pilot-link, но мы не будем пытаться использовать
связь с КПК), тогда для установки программы мы можем добавить ключ --nodeps.
В случае, если пакет обновляется на более свежую версию, тогда команда выглядит
так:
<verb>
root@localhost# rpm -Uhv
Далее читайте man rpm
Простой пример:
user@localhost$ man -k 'disk space'
Воспрользоваться программой fdformat. Пользователи KDE могут использовать программу KFloppy.
Если в системе используется supermount, могут возникнуть проблемы, поэтому есть еще ряд способов:
root@localhost# mkfs -t msdos /dev/fd0
или
root@localhost# mkfs -t msdos /dev/fd0 1440
user@localhost$ mformat a:
Загрузочная дискета создается с помощью утилиты mkbootdisk (rawrite.exe под ОС от MS).
user@localhost$ mkbootdisk -device /dev/fd0 2.4.21
Соответствующее HOW-TO можно прочитать
здесь
http://linuxportal.ru/entry.php/838_0_3_0_C/ - Здесь статья о создании Linux на дискете.
http://injector.sourceforge.net/ - Linux на одной дискетте.
http://www.bootdisk.com/bootdisk.htm - Здесь лежат образы загрузочных дискет для операционных систем MS.
http://www.linuxlots.com/~fawcett/yard/ - Perl-скрипт, создающий спасательную дискету.
man date
Простой пример
root@linux# date --set 4/13/2004
root@linux# date --set 14:46:27
Чтобы не подводить время вручную, лучше всего сразу настроить синхронизацию времени по интернету.
Вообще-то `man lsof`, `man fuser` :)
Например, команда
user@linux# lsof|grep /home
покажет все открытые файлы в каталоге /home. А команда
root@linux# fuser -km /home
Завершит выполнение всех процессов, работающих с файловой сисмемой /home. Будьте внимательны, если /home является не отдельной файловой системой, а частью корневой, то результат может превзойти ваши ожидания :)
По смыслу очень похоже на "Access violation at adress[0000:0000]" и т. д. в другой довольно популярной ОС. Причина - приложение сделало попытку выйти за пределы сегмента.
Если есть исходные коды программы, можно попробовать пересобрать ее, включив отладочную информацию, может повезет узнать больше.
Если есть только бинарник, можно поставить gdb, запустить `gdb program` и в приглашении сказать run
. Если выполнение программы останавливается - пишите next
. Ну и читайте, что пишет.
Будут, но вы должны точно знать, что вы делаете.
Самое большое препятствие при запуске - системный уровень. Однако встречаются такие вещи редко. Например, кардинальное изменение, внесенное в glibc, с которым собраны все программы, сильно измененное ядро.
Самое маленькое, но часто встречающееся препятствие - это нехватка библиотек, а точнее библиотек нужной версии.
Проще всего поставить программу и проверить, будет ли она работать. Если она попросит какие-либо библиотеки, нужно их доставить, причем желательно из своего дистрибутива (в крайнем случае, собрать посвежее те, что нужны).
Если у вас rpm-based дистрибутив, то вы должны быть готовыми к тому, что зависимости не будут выполняться. Дело в том, что почти все дистрибутивы используют свою систему наименования пакетов и, например, пакет a52dec в redhat называется liba52dec в mandrake. Бояться этого не нужно. Максимум, у вас будет ругаться apt (если вы его используете).
В общем случае хватает, чтобы версии требуемых библиотек были приблизительно такими же, как у вас в системе. Например, программы из alt linux легко работают в asp linux или fedora core несмотря на разные версии базовой системной библиотеки glibc.
Пошаговая инструкция здесь http://www.opennet.ru/base/sys/usb_flash_boot.txt.html
Там же можно узнать об оптимизации вашего linux для работы с USB-flash.
В этом ответе вы можете прочитать, где взять готовый для работы с usb-flash дистрибутив linux.
Ваша материнская плата должна поддерживать загрузку с flash-карты.
Обычно грузимся с первого диска. Выбираем помощь. Смотрим, как загрузиться в спасательный режим (rescue mode). Для redhat, например, нужно в строке boot: набрать linux rescue
. После загрузки читаем что пишется. ВНИМАТЕЛЬНО. Может быть у вас такой хороший дистрибутив, что нашел ваш корневой раздел и примонтировал его куда-нибудь (например, в /mnt/sysimage).
Подсказка: Если этого не произошло, заходим в /mnt и монтируем свой корневой раздел в любую пустую папку (я думаю, вы знаете, где у вас корневой раздел). Например, mount /dev/hda2 /mnt/sysimage.
После чего выполняем chroot /mnt/sysimage. (Еще раз - если корневой раздел примонтирован сюда).
Теперь вспомним, какой у нас загрузчик - grub или lilo (у любителей экзотики может стоять Anacronis OS Selector).
Для lilo:
Если у нас и раньше стоял MS Windows (и вы его просто переставили), тогда просто выполняем lilo и перегружаемся. Если раньше MS Windows не стоял, запускаем mc, открываем файл /etc/lilo.conf, добавляем нечто вроде
other=/dev/hda1
optional
label=Windows
/dev/hda1 - это раздел с MS Windows. Указываете свой (см. соответствующий вопрос).
Сохраняем файл. А дальше, естественно, выполняем lilo
.
Для grub:
Если у нас раньше стоял MS Windows (и вы его просто переставили), тогда выполняем grub, а затем в его консоли пишем:
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
где hd0 - ваш диск. Первой строчкой мы указываем раздел, где размещается /boot, второй устанавливаем загрузчик в MBR, а третьей - выходим из консоли загрузчика.
Если они не стояли, добавляем в файл /etc/grub.conf (или /boot/grub/grub.conf) такие строчки:
title Windows
rootnoverify (hd0,4)
chainloader +1
В данном примере MS Windows находится на 5-м разделе, /dev/hda5
А дальше точно так же выполняем grub и в появившейся консоли загрузчика пишем:
grub> root (hd0,0) (Specify where your /boot partition resides)
grub> setup (hd0) (Install GRUB in the MBR)
grub> quit (Exit the GRUB shell)
Много нервов у всех отнял этот вопрос. Ответы в большинстве своем невнятные. Пришлось ставить себе Windows (jackill), да еще и на NTFS и проверять что происходит.
В результате чтения документации и экспериментов удалось узнать то, что Grub прекрасно грузит Windows, установленный на NTFS, потому что он не обращается к разделу, а передает управлению загрузчику Windows.
Секрет в другом - Windows 98/ME/2000 (насчет XP не в курсе) и DOS не умеют грузиться со второго раздела или с жесткого диска, не являющегося первым.
Чтобы они смогли загрузиться, нужно их обмануть. Это возможно, если они при загрузке используют BIOS для определения винтов. Скорее всего это и ваша система.
Теперь следите: у меня два жестких диска, стоящие мастерами - в терминах Linux это hda и hdc.
В терминах grub это нулевой и первый диск. Не второй, обратите внимание! Нумерация идет подряд.
На hda у меня стоит Linux и загрузочный раздел /boot
первый - т.е. hda1 или, в терминах grub, hd0,0. Соответственно hdc отдан под Windows 2000.
Пишем в grub следующее:
title Windows
rootnoverify (hd1,0)
map (hd0) (hd1)
map (hd1) (hd0)
makeactive
chainloader +1
Что мы сделали? Мы поменяли в BIOS диски местами - передали, что hd0 у нас теперь hd1, а hd1 - hd0. Теперь будет грузиться. Может не сработать с некоторыми scsi-дисками, для которых ОС использует специальный драйвер.
Написано об этом здесь.
Если у вас windows стоит на файловой системе fat32, то делаем так:
root@localhost# mount -f vfat /dev/hda1 /mnt/c
dd if=/dev/hda1 of=/mnt/c/bootsect.bin count=1 bs=512
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
c:\bootsect.bin="Linux"
Если у вас MS Windows установлен на файловой системе ntfs, то придется загрузочный сектор записать на жесткий диск и считать специальными утилитами в случае если это ext2, ext3 или reiserfs 3, считать специальными утилитами, или же сделать проще - записать его на дискету.
Вам на ваш любимый сайт
Существует решение от McMCC. Читать и качать отсюда
Компьютер понадобится не самый слабый.
Делается это через DansGuardian. Вот здесь можно взять на эту тему pdf. Описание сделано для Mandrake и потому порядком разбавлено описанием их графических утилит. Но настроить по нему можно, потому что на каждый шаг есть описание того, что нужно делать.
Чтобы сохранились все разрешения и т.п. нужно пользоваться tar'ом. Например, сожмем папку (а у кого и раздел) /usr
и положим архив на другой раздел, смонтированный в /mnt/backup
:
root@localhost# tar cvpjf /mnt/backup/usr.tar.bz2 /usr
Тут существует два пути.
/proc
, /sys
и /tmp
, например:
root@localhost# tar cvpjf /mnt/backup/all.tar.bz2 / --exclude /proc --exclude /sys --exclude /tmp --exclude /var/tmp --exclude /usr/tmp --exclude /mnt
root@localhost# dd if=/dev/hda of=/dev/hdb bs=10M
и мы перенесем образ на другой винт или
root@localhost# dd if=/dev/hda of=/mnt/backup/myhda.img bs=10M
и тогда образ попадет в файл. Кстати, можно сэкономить место и сделать так:
root@localhost# dd if=/dev/disk | gzip - | dd of=/mnt/backup/myhda.gz
Есть винт такой же, как и тот, с которого копировали, делаем просто
root@localhost# dd if=/mnt/backup/myhda.img of=/dev/disk bs=10M
Если винт больше, то неоднократно советовалось создать на нем раздел примерно одного размера, что и старый винт, после чего восстановить образ на этот раздел. Насколько действенен этот метод, неизвестно.
Вместо tar в вышеприведенном способе многие рекомендуют использовать cpio.
Ну если вы жесткий диск только купили, пришли домой и решили - пора, то вот отличная статья на http://opennet.ru.
Ну а если вы в целях создания бэкапа, или жесткий диск везти нужно, то читайте предыдущий вопрос.
Дайте команду echo 0 > /proc/sys/dev/cdrom/lock
и потом смело открывайте привод. Должно получиться.
В состоянии "зомби" процесс не имеет образа в RAM, но информация о нем сохраняется в таблице процессов. Он не поедает ресурсы, но теоретически могут кончится PID'ы.
Напрямую зомби не убить, нужно уничтожить родительский процесс, тогда зомби умрет вместе с ним.
Увидеть родителя можно в столбце PPID после команды
ps -axl
Подробнее: http://cad.narod.ru/methods/os_unix/unibas/process.html
user@linux~:$ mail -a filename.to.attache
user@linux~:$ mutt email@address -a filename.to.attache -s "Subject of email" < file.containing.message.body.txt
user@linux~:$ gzip -c filename.to.attache | uuencode filename.to.attache.gz | mail -s "Subject of email" email@address
Здесь filename.to.attache
- файл-вложение, file.containing.message.body.txt
- файл с телом сообщения.
Если в ядре включена поддержка SCSI и USB (в частности, USB Mass Storage), то в общем случае хватит команды:
root@localhost# mount /dev/sda1 /mnt/your_location -t vfat
vfat - название файловой fat32, которая используется в большинстве устройств, your_location - ваша папка.
Чтобы узнать как не монтировать из-под рута, читайте следующий вопрос.
А если что-то пошло не так, вам поможет эта статья - http://linuxportal.ru/entry.php/17_0_3_0_C
Добавить в fstab строчку вида
/dev/sda1 /mnt/flash auto users,noauto,rw,iocharset=koi8-r 0 0
или привести свою к этому виду. В iocharset укажите свою локаль.
Можно сделать совсем красиво, установив себе usbmount
В файл /etc/modprobe.conf
добавьте строчку:
options usbcore old_scheme_first=y
Многие цифровые фотоаппараты представляются системе как USB Flash
Попробуйте разобраться, какой протокол обмена он использует. Возможно, этот протокол поддерживается gphoto2. Gphoto2 - это набор текстовых утилит, но есть программы с графическим интерфейсом, которые с ним работают - Digikam и gtkam.
К примеру фотокамеры Canon используют протокол PTP (Picture Transfer Protocol), можно выбрать либо конкретную модель Canon, либо, при отсутствии нужной модели, просто указать USB PTP Class Camera.
Добавьте в /etc/syslog.conf
строчку:
*.* @имя.вашей.машины
http://www.opennet.ru/base/sys/smart_ups_nut.txt.html