 | | |
Linux специфика
Как, после сборки ядра Linux, инициализировать initrd (ядро падает при монтировании root раздела) Автор: as [есть мнение]
initrd - RAM-диск, инициализируемый загрузчиком, требуется для подключения модулей ядра, необходимых
на этапе до монтирования root-раздела, (например, до монтирования нужно подгрузить - ext2/ext3/scsi модули).
1) man initrd - все изумительно описано;
2) после сборки ядра создаем новый initrd:
mkinitrd /boot/initrd-2.4.21 2.4.21;
3) в /etc/lilo.conf:
initrd=/boot/initrd-2.4.21
В mkinitrd сам initrd можно назвать как угодно, но второй параметр обязательно версия ядра.
Как в Linux после kernel panic вместо ожидания действия оператора автоматически выполнять перезагрузку. [есть мнение]
Добавьте в /etc/rc.d/rc.local:
echo 1 > /proc/sys/kernel/panic
Т.е. перезагрузка будет выполнена через 1 сек. после panic, если 0 - то не перезагружать а ждать.
Почему Linux ядро не использует всю память и пишет "Warning only 960MB will be used". [обсудить]
Если добавление в lilo append="mem=1536M" не помогает:
Необходимо пересобрать 2.2.x ядро с опцией CONFIG_2GB=y
Processor type and features -> Maximum Physical Memory -> 2Gb
Если проблема проявляется в ядре 2.4.x - CONFIG_HIGHMEM, CONFIG_HIGHMEM4G или CONFIG_HIGHMEM64G
Ограничения трафика с помощью iproute2 Автор: Z0termaNN [есть мнение]
tc qdisc add dev eth1 root handle 1: htb default 2 r2q 1
tc class add dev eth1 parent 1: classid 1:1 htb rate 10mbit ceil 10mbit mtu 1500
tc class add dev eth1 parent 1:1 classid 1:77 htb rate 32kbit ceil 48kbit mtu 1500 prio 0
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 128kbit ceil 128kbit mtu 1500
tc filter add dev eth1 protocol ip parent 1:0 prio 1 u32 match ip dport 25 flowid 1:77
Переход на журналируемую файловую систему Reiserfs [есть мнение]
- Включаем поддержку Reiserfs в ядре.
- Устанавливаем reiserfsprogs-3.x.0j.tar.gz
- Cоздаем бут дискету (mkbootdisk --device /dev/fd0 2.4.13;
lilo -C /etc/lilo.flop)
- Грузимся с дискеты указав в Lilo приглашении "linux root=/dev/hd init=/bin/bash"
- mkreiserfs /dev/hda1
- mount -t reiserfs /dev/had1 /
Как под Linux установить параметры serial порта (прерывание, адрес порта) [обсудить]
/bin/setserial -b /dev/ttyS2 uart 16450 port 0x2E8 irq 5
Как через poweroff обеспечить выключение системного блока Автор: Alexander [обсудить]
Если при наборе /sbin/poweroff отключение питания не срабатывает, то:
/sbin/modprobe ospm_busmgr
/sbin/modprobe ospm_system
или в /etc/modules.conf:
alias ospm-busmgr ospm_busmgr
alias ospm-busmgr ospm_system
Как посмотреть параметры и возможные опции для модуля ядра Linux [обсудить]
Информация о авторе.
modinfo -a модуль
Описание модуля.
modinfo -d модуль
Список возможных параметров.
modinfo -p модуль
Как в Linux выставить принудительно 100Mb FullDuplex для Intel EtherExpress Pro100, а то auto-select с некоторыми свичами не работает. [обсудить]
/sbin/mii-tool -F 100baseTx-FD eth0
Для модуля:
В /etc/modules.conf:
options eepro100 options=0x200 full_duplex=1
alias eth0 eepro100
insmod eepro100.o debug=1 options=0x200
Для ядра в boot приглашении:
ether=0,0,0x200,eth0
PS. Для драйвера версии меньше 1.14 (mod_info -a eepro100) вместо 0x200 следует писать 0x30.
Как перейти в Linux на файловую систему ext3 [обсудить]
Выкачиваем и накладываем ext3 патчи (ftp://ftp.kernel.org/pub/linux/kernel/people/sct/ext3/) и
утилиты (ftp://download.sourceforge.net/pub/sourceforge/e2fsprogs/).
Преобразуем ext2 FS в ext3 (для отмонтированного раздела hda1):
tune2fs -j /dev/hda1
Обратное преобразование (из ext3 в ext2):
tune2fs -O ^has_journal /dev/hda1
fsck.ext2 -f /dev/hdaX
Для форматирование нового ext3 раздела:
mke2fs -j /dev/hda1
Как обновить версию журнала:
mount /dev/hdaX /mnt -o journal=update
Как посмотреть установки конфигурации для бинарного ядра Linux [обсудить]
Если ядро было собрано с опцией CONFIG_PROC_CONFIG=Y:
zcat /proc/config.gz
Как узнать подробную информацию о EX2FS, размер блоков, системные данные и т.д. [обсудить]
общие данные из суперблока - dumpe2fs -h /dev/раздел
информацию о каждом блоке - dumpe2fs /dev/раздел
Для FreeBSD нужно использовать dumpfs.
Оптимизация и тюнинг в Linux
Как увеличить максимальное число процессов для 2.2.x Linux ядра [обсудить]
vi /usr/src/linux/include/linux/tasks.h
#define NR_TASKS 512
#define MAX_TASKS_PER_USER (NR_TASKS/2)
Чем хороши LVM, ext3, reiserfs и xfs Автор: Денис Смирнов [обсудить]
LVM - позволяет гибко создавать, удалять и изменять размеры разделов без потери данных.
ext3 - расширение ext2 для журналирования. Поддерживает журналирование данных, а не только метаданных (при data=journal).
reiserfs - высокая скорость работы с каталогами с большим числом файлов, компактно хранит хвосты от файлов,
поддерживает увеличение размера раздела без остановки сервера.
xfs - быстрая работа с файлами большого размера, великолепная надёжность, поддержка ACL.
Включение Hyper-Threading scheduler в Linux, для CPU Xeon. [обсудить]
Linux поддерживает Hyper-Threading начиная с ядра 2.4.17.
Ядро должно быть собрано как SMP,
При загрузке, передаем параметр acpismp=force (в lilo: append=" acpismp=force")
проверка работы:
cat /proc/cpuinfo, если среди flags есть "ht", то Hyper-Threading активирован.
Как оптимизировать подсистемы распределения памяти в Linux. [обсудить]
/usr/src/linux/Documenation/sysctl/vm.txt
/usr/src/linux/Documenation/filesystems/proc.txt
Параметры для работы демона bdflush (vm.bdflush)
echo "100 2000 128 512 500 5000 60 0 0" > /proc/sys/vm/bdflush
Управление объемом ОЗУ (в %) выделенного для системных буфферов (лучше не трогать)
echo "70 10 60" > /proc/sys/vm/buffermem
Максимальный размер сегмента shared memory.
echo 167772160 > /proc/sys/kernel/shmmax # (def: 33554432)
Оптимизация TCP/IP стека в Linux для нагруженного сервера. [обсудить]
/usr/src/linux/Documenation/filesystems/proc.txt
/usr/src/linux/Documenation/networking/ip-sysctl.txt
Далее в скобках указаны значения по умолчанию для 2.2.x/2.4.x ядер.
Если ядро собрано с CONFIG_SYNCOOKIES для защиты от syn флуда (net.ipv4.tcpsyn_cookies)
echo 1 > /proc/sys/net/ipv4/tcp_syncookies #(0/0)
Увеличиваем размер backlog очереди (аналог sysctl net.ipv4.tcp_max_syn_backlog).
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog #(128/1024)
Число начальных SYN и SYNACK пересылок для TCP соединения (лучше не трогать).
echo 4 > /proc/sys/net/ipv4/tcp_synack_retries #(x/5)
echo 4 > /proc/sys/net/ipv4/tcp_syn_retries #(10/5)
Какие порты использовать в качестве локальных TCP и UDP портов (sysctl net.ipv4.ip_local_port_range).
echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range #(1024 4999/32768 61000)
Сколько секунд ожидать приема FIN до полного закрытия сокета.
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout #(180/60)
Как часто посылать сообщение о поддержании keep alive соединения.
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time #(7200/7200)
Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes #(9/9)
Запрещаем TCP window scaling (net.ipv4.tcp_window_scaling)
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling #(1/1)
Запрещаем selective acknowledgements, RFC2018 (net.ipv4.tcp_sack).
echo 0 > /proc/sys/net/ipv4/tcp_sack #(1/1)
Запрещаем TCP timestamps, RFC1323 (net.ipv4.tcp_timestamps)
echo 0 > /proc/sys/net/ipv4/tcp_timestamps #(1/1)
Увеличиваем размер буфера для приема и отправки данных через сокеты.
echo 1048576 > /proc/sys/net/core/rmem_max #(65535/autotune)
echo 1048576 > /proc/sys/net/core/rmem_default #(65535/autotune)
echo 1048576 > /proc/sys/net/core/wmem_max #(65535/autotune)
echo 1048576 > /proc/sys/net/core/wmem_default #(65535/autotune)
Если не требуется форвадинг пакетов (машина не рутер) выключаем.
(net.ipv4.ip_forward и net.ipv4.conf.all.forwarding)
echo 0 /proc/sys/net/ipv4/ip_forward #(0/0)
echo 0 /proc/sys/net/ipv4/conf/all/forwarding #(0/0)
Через какое время убивать соединеие закрытое на нашей стороне (net.ipv4.tcp_orphan_retries)
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries #(x/7)
Оптимизация дисковой подсистемы в Linux [обсудить]
man hdparm (например: /sbin/hdparm -c3 -d1 -X34 /dev/hda)
man elvtune
man tune2fs
echo 128000 > /proc/sys/fs/inode-max # def 16384
echo 64000 > /proc/sys/fs/file-max # def 4096 Число одновременно открытых файлов.
cd /proc/sys/fs/ (в 2.4.x работает автотюнинг)
/usr/src/linux/Documentation/sysctl/fs.txt
/usr/src/linux/Documentation/filesystems/proc.txt
Как под Linux создать ramdisk большого размера для использования в качестве временного хранилища. [обсудить]
Советую использовать tmpfs или ramfs
(разница в том, что данные tmpfs подвержены своппингу, ramfs создана для тестов, а ramdisk всегда хранится в ОЗУ)
/usr/src/linux/Documentation/filesystems/tmpfs.txt
mount -t tmpfs -osize=256M /dev/shm1 /mnt1
Для ramfs:
mount -t ramfs -omaxsize=256M none /mnt1
Если желание использовать ramdisk осталось, читаем
/usr/src/linux/Documentation/ramdisk.txt
mkdir /ramdisk
Для 256Мб ramdisk в lilo.conf добавляем:
append="ramdisk_size=256000"
Запускаем lilo и перезагружаем машину.
mke2fs /dev/ram0
mount -t -ext2 /dev/ram0 /ramdisk
Как увеличить количество shared memory для работы высоконагруженного PostgreSQL [обсудить]
В linux:
echo 134217728 >/proc/sys/kernel/shmall
echo 134217728 >/proc/sys/kernel/shmmax
В конфиге ядра FreeBSD:
options SYSVSHM
options SHMMAXPGS=4096
options SHMMAX="(SHMMAXPGS*PAGE_SIZE+1)"
options SHMMIN=2
options SHMMNI=256
options SHMSEG=256
options SYSVSEM
options SEMMAP=512
options SEMMNI=512
options SEMMNS=1024
options SEMMNU=512
options SEMMSL=256
options SEMOPM=256
options SEMUME=64
options SYSVMSG
options MSGMNB=8192
options MSGMNI=256
options MSGSEG=8192
options MSGSSZ=16
options MSGTQL=128
options NMBCLUSTERS=16786
options NBUF=2048
maxusers 512
Увеличение безопасности Linux
Как защитить Linux от некоторых DoS атак. [обсудить]
Настройки для увеличения безопасности:
/sbin/sysctl -w net.ipv4.conf.all.send_redirects=0
/sbin/sysctl -w net.ipv4.conf.all.accept_redirects=0
/sbin/sysctl -w net.ipv4.conf.all.accept_source_route=0
/sbin/sysctl -w net.ipv4.conf.all.mc_forwarding=0
/sbin/sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1
/sbin/sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1
/sbin/sysctl -w net.ipv4.conf.all.log_martians=1
/sbin/sysctl -w net.ipv4.conf.all.rp_filter=1
Как в linux преобразовать /etc/passwd в shadow [обсудить]
/usr/sbin/pwconv
Как в linux разрешить su только для членов группы wheel [обсудить]
Добавить в /etc/pam.d/su
auth required pam_wheel.so
Установка и работа с пакетами программ в Linux
Подсказка по использованию APT [есть мнение]
apt-get update - обновление локального кэша пакетов;
apt-cache search маска - поиск нужного пакета;
apt-cache show пакет - просмотр информации о пакете;
apt-get install пакет - установка пакета;
apt-get remove пакет - удаление пакета;
apt-get update; apt-get upgrade - полное обновление системы.
Как, после сборки ядра Linux, инициализировать initrd (ядро падает при монтировании root раздела) Автор: as [есть мнение]
initrd - RAM-диск, инициализируемый загрузчиком, требуется для подключения модулей ядра, необходимых
на этапе до монтирования root-раздела, (например, до монтирования нужно подгрузить - ext2/ext3/scsi модули).
1) man initrd - все изумительно описано;
2) после сборки ядра создаем новый initrd:
mkinitrd /boot/initrd-2.4.21 2.4.21;
3) в /etc/lilo.conf:
initrd=/boot/initrd-2.4.21
В mkinitrd сам initrd можно назвать как угодно, но второй параметр обязательно версия ядра.
Как в RedHat управлять из командной строки runlevel (init.d) скриптами [обсудить]
Перезапуск сервисов:
service имя start
service имя stop
service имя restart
Добавление или удаление сервисов:
chkconfig --list
chkconfig --add имя
chkconfig --del имя
chkconfig [--level уровень] имя <on|off|reset>
Подсказка по опциям RPM. [обсудить]
Установка пакетов: rpm -i <пакеты>
Деинсталляция пакета: rpm -e <пакеты>
Обновление или установка пакетов: rpm -U <пакеты>
Только обновление пакетов если они ранее установлены: rpm -F <пакеты>
Полезно: --force -установить несмотря ни на что, --nodeps - без проверки зависимости, -vh - приятный вывод, --test - проверка.
Информация о пакете: rpm -q <пакет>
Список всех пакетов в системе: rpm -q -a
Узнать какому пакету принадлежит файл: rpm -q -f <файл>
Полезно: -i - более полное описание пакета, -R - список зависимостей пакета, -l - список файлов в пакете,
-c - список конфигов в пакете, -d - список документации.
Установка из исходников: rpm --recompile <srpm> , собрать бинарный пакет: rpm --rebuild <srpm>.
Перестроить базу: rpm --rebuilddb
Как вручную распаковать rpm файл [обсудить]
rpm2cpio file.rpm | cpio -idmuv --no-absolute-filenames
Как узнать к какому пакету принадлежит файл [обсудить]
rpm -qf file
 |