wiki:notes/linux

Version 32 (modified by root, at 2024-05-19T11:13:32Z) (diff)

--

заметки о linux

reposync --arch

несмотря на своё название данная опция не устанавливает $basearch для конфигов репозиториев. сделана она только для выставления ограничений того, что скачивать, что является сомнительной функциональностью. поэтому её лучше не использовать или не удивляться странным глюкам во время использования.

как правильно устанавливать $basearch найти так и не удалось. если хочется скачать репозиторий для другой архитектуры, то в .repo-файле нужно указывать явную ссылку на пакеты для нужной архитектуры.


в reposync не работает --delete репки внутри симлинка

сделано, очевидно, для избежания зацикливания.

патч

  • /usr/bin/reposync

    old new  
    7373    for name in names:
    7474        fn = os.path.join(directory, name)
    7575        try:
    76             st = os.lstat(fn)
     76            st = os.stat(fn)
    7777        except os.error:
    7878            continue
    7979        if stat.S_ISDIR(st.st_mode):


переделанный change_rules.sh под centos

ссылка


размер консоли 80x25 centos7 внутри виртуальной машины vmware

vmwgfx.enable_fbdev=0 в /etc/default/grub и grub2-mkconfig -o /boot/grub2/grub.cfg. так же не лишним будет убрать rhgb quiet.


создание rescue initramfs в centos7 для загрузки на любом железе

вариант 1

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

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)


чтобы загрузка не запиналась на fsck в centos6

/etc/sysconfig/autofsck:

# autofsck config
AUTOFSCK_OPT="-y"

/etc/e2fsck.conf:

#
# 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
 }


выбор ядра centos7 по-умолчанию в grub2

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default 1


работа с дисками без перегрузки в лилуксе

  • рескан новых дисков:
    echo "- - -" > /sys/class/scsi_host/host0/scan
    echo "- - -" > /sys/class/scsi_host/host1/scan
    echo "- - -" > /sys/class/scsi_host/host2/scan
    
  • раскан диска с изменившимися параметрами:
    echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan
    
  • удаление детачнутого диска:
    echo 1 > /sys/class/scsi_device/2\:0\:1\:0/device/delete
    


распределение прерываний сетевушек по ядрам с помощью irq affinity

#!/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


debian Waiting for DAD... Timed out в выводе ifup

добавить dad-attempts 555 в /etc/network/interfaces для интерфейса, который ниуспевает. найдено было в /lib/ifupdown/settle-dad.sh.


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


linux/unix stdin progress

progress -M, pv


install minimum debian from systemrescuecd

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


test logger

logger -p daemon.info -t smartd --id=123 qwe


Common hardware diagnosis tools

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


force enable monitor port

(even monitor is disconnected at boot)
/etc/udev/rules.d/10-graphics.rules:

# 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*


defgrag and clean VMWare image

sudo e4defrag /dev/mapper/vg_main-lv_root
dd if=/dev/zero of=wipefile bs=1024x1024; rm wipefile

settings -> disk -> compact

Attachments (1)

Download all attachments as: .zip