= заметки о `linux` == `reposync --arch` несмотря на своё название данная опция не устанавливает `$basearch` для конфигов репозиториев. сделана она только для выставления ограничений того, что скачивать, что является сомнительной функциональностью. поэтому её лучше не использовать или не удивляться странным глюкам во время использования. как правильно устанавливать `$basearch` найти так и не удалось. если хочется скачать репозиторий для другой архитектуры, то в `.repo`-файле нужно указывать явную ссылку на пакеты для нужной архитектуры. [[br]] == в reposync не работает `--delete` репки внутри симлинка сделано, очевидно, для избежания зацикливания. [[CollapsibleStart(патч)]] {{{#!patch --- /usr/bin/reposync.orig 2015-06-05 12:54:23.994992794 +0000 +++ /usr/bin/reposync 2015-06-05 12:59:26.254992567 +0000 @@ -73,7 +73,7 @@ for name in names: fn = os.path.join(directory, name) try: - st = os.lstat(fn) + st = os.stat(fn) except os.error: continue if stat.S_ISDIR(st.st_mode): }}} [[CollapsibleEnd]] [[br]] == переделанный change_rules.sh под centos [attachment:change_tables.sh ссылка] [[br]] == размер консоли 80x25 centos7 внутри виртуальной машины vmware `vmwgfx.enable_fbdev=0` в `/etc/default/grub` и `grub2-mkconfig -o /boot/grub2/grub.cfg`. так же не лишним будет убрать `rhgb quiet`. [[br]] == создание `rescue initramfs` в `centos7` для загрузки на любом железе === вариант 1 {{{ #!bash dracut \ --no-hostonly \ -vf \ -a "rescue" \ /boot/initramfs-0-rescue-$(cat /etc/machine-id).img $(uname -r) }}} и не забыть положить свежий `vmlinuz-0-rescue-$(cat /etc/machine-id)`. === вариант 2 {{{ #!bash mv /boot/vmlinuz-0-rescue-$(cat /etc/machine-id){,.backup} mv /boot/initramfs-0-rescue-$(cat /etc/machine-id).img{,.backup} /etc/kernel/postinst.d/51-dracut-rescue-postinst.sh $(uname -r) /boot/vmlinuz-$(uname -r) }}} [[br]] == чтобы загрузка не запиналась на `fsck` в centos6 `/etc/sysconfig/autofsck`: {{{#!bash # autofsck config AUTOFSCK_OPT="-y" }}} `/etc/e2fsck.conf`: {{{#!bash # # disable mount and write time check on system boot # [options] broken_system_clock=1 [problems] # Superblock last mount time is in the future (PR_0_FUTURE_SB_LAST_MOUNT). 0x000031 = { preen_ok = true preen_nomessage = true } # Superblock last write time is in the future (PR_0_FUTURE_SB_LAST_WRITE). 0x000032 = { preen_ok = true preen_nomessage = true } }}} [[br]] == выбор ядра centos7 по-умолчанию в grub2 {{{#!bash awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg grub2-set-default 1 }}} [[br]] == работа с дисками без перегрузки в лилуксе * рескан новых дисков: {{{#!bash echo "- - -" > /sys/class/scsi_host/host0/scan echo "- - -" > /sys/class/scsi_host/host1/scan echo "- - -" > /sys/class/scsi_host/host2/scan }}} * раскан диска с изменившимися параметрами: {{{#!bash echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan }}} * удаление детачнутого диска: {{{#!bash echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete }}} [[br]] == распределение прерываний сетевушек по ядрам с помощью `irq affinity` {{{#!bash #!/usr/bin/env bash cpu=`/bin/grep processor /proc/cpuinfo | wc -l` c=0 for dir in rx tx; do for eth in 0 1; do for i in `seq 0 22`; do irq=`/bin/grep "eth${eth}-${dir}-${i}$" /proc/interrupts | awk -F : '{print $1}' | sed -e 's/ //g'` if [[ "x${irq}" == "x" ]]; then continue fi mask="$((1<<($c+0)))" echo mask: $mask, cpu: $c, irq: $irq printf "%x\n" $mask >/proc/irq/$irq/smp_affinity c=$((c+1)) if [[ $c -gt $cpu ]]; then c=0 fi done done done }}} [[br]] == debian `Waiting for DAD... Timed out` в выводе `ifup` добавить `dad-attempts 555` в /etc/network/interfaces для интерфейса, который ниуспевает. найдено было в `/lib/ifupdown/settle-dad.sh`. [[br]] == update `CPU` microcode w/o reboot * place recent microcodes to `/lib/firmware/amd-ucode` or `/lib/firmware/intel-ucode` * check current microcode `fgrep microcode /proc/cpuinfo` * update microcode `echo 1 | sudo tee /sys/devices/system/cpu/microcode/reload` * check updated microcode `fgrep microcode /proc/cpuinfo` [[br]] == linux/unix stdin progress `progress -M`, `pv` [[br]] == install minimum `debian` from `systemrescuecd` {{{#!bash export LANG='en_US.UTF-8' export LANGUAGE='en_US.UTF-8' export LC_ALL='en_US.UTF-8' unset LC_ALL lvremove -f vg_main vgremove vg_main pvremove /dev/sda2 sgdisk -Z /dev/sda sgdisk -g \ -n 1:0:+512M \ -t 1:ef02 \ -c 1:boot \ -n 2 \ -t 2:8e00 \ -c 2:main \ /dev/sda pvcreate -f /dev/sda2 vgcreate -f vg_main /dev/sda2 lvcreate -L 7G -n lv_swap vg_main lvcreate -l 100%FREE -n lv_root vg_main mke2fs -F -t ext3 -m 1 -L boot /dev/sda1 mke2fs -F -t ext4 -m 1 -L root /dev/vg_main/lv_root mount /dev/vg_main/lv_root /mnt mkdir -vp /mnt/boot mount /dev/sda1 /mnt/boot mkdir -vp /mnt/{dev,sys,proc} mount -o bind /dev /mnt/dev mount -o bind /sys /mnt/sys mount -o bind /proc /mnt/proc curl -o - http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.102.tar.gz | tar xzf - cd debootstrap-1.0.102 && ./debootstrap --arch amd64 stretch /mnt http://mirror.yandex.ru/debian }}} [[br]] == test `logger` `logger -p daemon.info -t smartd --id=123 qwe` [[br]] == Common hardware diagnosis tools {{{#!bash ras-mc-ctl --summary ipmitool sel elist edac-util -v dmesg -w /var/log/kern.log* /var/log/messages* cat /proc/cpuinfo | fgrep -i mhz lshw dmidecode }}} [[br]] == force enable monitor port (even monitor is disconnected at boot)[[br]]`/etc/udev/rules.d/10-graphics.rules`: {{{#!bash # force enable dvi-i port KERNEL=="card0-HDMI-A-1", SUBSYSTEM=="drm", RUN+="/bin/sh -c 'echo on >/sys$DEVPATH/status'" }}} `$DEVPATH` usually is `/sys/class/drm/card*` [[br]] == defgrag and clean VMWare image {{{#!bash sudo e4defrag /dev/mapper/vg_main-lv_root dd if=/dev/zero of=wipefile bs=1024x1024; rm wipefile }}} settings -> disk -> compact