Темы
Настройка DNF
Удаление старых ядер
Устанавливаем дополнительное ПО
Настраиваем локализацию и русскую раскладку
Настройка переменных окружения
Изменение приветственного сообщение
Задаём параметры сетевой карты
Присваиваем сетям имена
Настраиваем имя хоста
Права на вновь создаваемые каталоги и файлы
Настройка редактора EMACS
SELinux
Настройка редактора Vim
Отключаем неиспользуемые сервисы
Включаем NumLock для консоли
Смена оболочки
Настраиваем SWAP
Настройка DNF
Для смены ответа по умолчанию при установке пакетов нужно в файле /etc/dnf/dnf.conf прописать или изменить опцию defaultyes
- Код: выделить все
defaultyes=True
и тогда подразумеваемый по умолчанию ответ будет "Yes", а не "No" как по умолчанию.
- Код: выделить все
Все правильно? [Д/н]:
Ограничиваем число, хранимых ядер в системе, двумя. Изменяем параметр installonly_limit
- Код: выделить все
installonly_limit=2
Удаление старых ядер ???
Первый вопрос об установленных ядрах, используйте следующую команду:
- Код: выделить все
rpm -q kernel
Установите пакетный инструментов с именем dnf-utils (представляет собой набор дополнительных инструментов для инструмента dnf).
- Код: выделить все
dnf install dnf-utils
Давайте начнем с этой командой, мы видим, что несколько пакетов, казалось бы установлены несколько раз:
- Код: выделить все
package-cleanup --cleandupes
Если в базе данных yum есть какие-либо проблемы, вы можете увидеть эту команду:
- Код: выделить все
package-cleanup --problems
Чтобы удалить установленные старые ядра из дистрибутива Fedora, используйте команду:
- Код: выделить все
package-cleanup --oldkernels --count=2
Для Fedora 27 используйте команду:
- Код: выделить все
package-cleanup --oldkernels 2
Для автоматического удаления ядер при обновлении необходимо изменить параметр installonly_limit в /etc/yum.conf или /etc/dnf/dnf.conf.
- Код: выделить все
installonly_limit=2
получить список потерянных пакетов, находящихся в настоящее время в системе:
- Код: выделить все
package-cleanup --leaves
Устанавливаем дополнительное ПО
Для удобства последующих настроек переменных окружения
DFC ставится из репозитория rpmsphere-d, который в свою очередь является частью rpmsphere. Страница репозитория находится тут. Скачаем конфигурационный файл при помощи wgrt:
- Код: выделить все
wget -O /etc/yum.repos.d/rpmsphere.repo https://rpmsphere.github.io/rpmsphere.repo
Или создайте конфигурационный файл для репозитория rpmsphere.repo вручную:
e /etc/dnf.repos.d/rpmsphere.repo
- Код: выделить все
[rpmsphere-basearch]
name=RPM Sphere - Basearch
baseurl=https://github.com/rpmsphere/$basearch/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=1
[rpmsphere-noarch]
name=RPM Sphere - Noarch
baseurl=https://github.com/rpmsphere/noarch/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=1
[rpmsphere-source]
name=RPM Sphere - Source
baseurl=https://github.com/rpmsphere/source/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=0
[rpmsphere-todo]
name=RPM Sphere - Todo
baseurl=https://github.com/rpmsphere/todo/raw/master/
skip_if_unavailable=True
repo_gpgcheck=0
gpgcheck=0
sslverify=False
enabled=0
На текущий момент не существует репозитория под 29 версию Fedora, поэтому вместо переменной $releasever ставим "28"
Теперь обновляем систему и устанавливаем программы которые участвуют в минимальной настройке системы.
- Код: выделить все
dnf update
dnf install most tmux emacs-nox inxi dfc git
Для оптимизации работы с батареей для ноутбуков можно поставить пакет TLP. TLP предоставляет вам преимущества расширенного управления питанием для Linux без необходимости разбираться во всех технических деталях. TLP поставляется с конфигурацией по умолчанию, которая уже оптимизирована для работы от батареи. Также необязательная установка пакета smartmontools включает данные SMART жесткого диска в tlp-stat (smartctl).
- Код: выделить все
dnf install tlp
Простой Java анализатор с разделителями и фиксированной шириной файлов. Обрабатывает CSV, Excel CSV, Tab, разделители каналов, и это лишь некоторые из них. Сопоставляет позиции столбцов в файле с понятными именами через XML.
- Код: выделить все
dnf install flatpack
Настраиваем локализацию и русскую раскладку
Локализация системы
Устанавливаем соответствующие языковые пакеты
- Код: выделить все
dnf search langpacks
dnf install langpacks-ru
Переопределяем "на ходу" переменную LANG соответствующим значением для выбранного языка
- Код: выделить все
export LANG="ru_RU.UTF-8"
Устанавливаем утилитой localectl желаемые параметры языка и раскладки клавиатуры
- Код: выделить все
localectl set-locale LANG="ru_RU.UTF-8"
localectl set-keymap us ru --no-convert
localectl set-x11-keymap us,ru pc105 grp:ctrl_shift_toggle --no-convert
просматриваем результат выполненных изменений
- Код: выделить все
localectl status
System Locale: LANG=ru_RU.UTF-8
VC Keymap: us
VC Toggle Keymap: ru
X11 Layout: us,ru
X11 Model: pc105
X11 Variant: grp:ctrl_shift_toggle
cat /etc/locale.conf
- Код: выделить все
LANG=ru_RU.UTF-8
#LC_COLLATE=C
Теперь после перезагрузки мы сможем в консоли переключать раскладку нажимая на Ctrl+Shift.
Ну, а пока перезагружаться не будем – загрузим вручную нужную раскладку командой:
- Код: выделить все
loadkeys /lib/kbd/keymaps/legacy/i386/qwerty/ru.map.gz
Настраиваем шрифт консоли
Устанавливаем набор консольных шрифтов terminus
- Код: выделить все
dnf install terminus-fonts-console
Теперь разберёмся с автоматической шрифтов для консоли
Способ 1(настройка vconsole)
e /etc/vconsole.conf
- Код: выделить все
#VER 1
KEYMAP=us
FONT=ter-u30b
KEYMAP_TOGGLE=ru
Для загрузки шрифта без перезапуска системы можно воспользоваться командой
- Код: выделить все
setfont -C /dev/tty1 ter-u30b
Шрифты расположены в /lib/kbd/consolefonts/
Способ 2(через параметры ядра)
Для смены установленных параметров можно воспользоваться потоковым редактором sed (параметры должны существовать)
- Код: выделить все
sed -i --follow-symlinks 's/vconsole.font=[^ ]*/vconsole.font=ter-u30b/g' /etc/sysconfig/grub
sed -i --follow-symlinks 's/vconsole.keymap=[^ ]*/vconsole.keymap=ru/g' /etc/sysconfig/grub
Или добавляем в строку GRUB_CMDLINE_LINUX параметры для vconsole
e /etc/default/grub
- Код: выделить все
GRUB_CMDLINE_LINUX="... vconsole.font=ter-u30b vconsole.keymap=ru ..."
Затем обновляем конфигурацию GRUB
- Код: выделить все
# For BIOS
grub2-mkconfig -o /etc/grub2.cfg
# For UEFI
grub2-mkconfig -o /etc/grub2-efi.cfg
grub2.cfg и grub2-efi.cfg являются символьными ссылками которые ссылаются на реальные конфигурационные файлы, которые соответствуют BIOS или UEFI платформе
Проверяем установлен ли пакет workaround-cyrillic-console и выносим его если таковой стоит
- Код: выделить все
dnf list installed | grep "workaround-cyrillic-console" && dnf remove workaround-cyrillic-console
Альтернативный шрифт
Настройка переменных окружения
e ~/.bashrc
- Код: выделить все
# .bashrc
# VER 4
function set_prompt_note() {
export DA=`date "+%A, %H:%M %Z, %d %B"`
export BAT=`acpi -V |cut -d " " -f 1,3-5 | head -n1`
export Yellow='\[\e[0;33m\]'
export Red='\[\e[0;31m\]'
export Green='\[\e[0;32m\]'
export Blue='\[\e[0;34m\]'
export End='\[\e[0m\]'
export KOD="\$(if [[ \$? == 0 ]]; then echo \"$Green\342\234\223\"; else echo \"$Yellow{ \$? }\"; fi)"
export PS1="\n$Yellow{ $DA } $Blue{ $BAT } $Green{ \u$Red@$Green\H } $Blue{ \w } $KOD\n$Red\\$ >$End "
unset End Green Blue Red Yellow
}
function set_prompt() {
export DA=`date "+%H:%M %Z, %d %B, %a"`
export Yellow='\[\e[1;33m\]'
export Red='\[\e[1;31m\]'
export Green='\[\e[1;32m\]'
export Blue='\[\e[1;34m\]'
export End='\[\e[0m\]'
export KOD="\$(if [[ \$? == 0 ]]; then echo \"$Green\342\234\223\"; else echo \"$Yellow{ \$? }\"; fi)"
export PS1="\n$Yellow{ $DA } $Green{ \u$Red@$Green\H } $Blue{ \w } $KOD\n$Red\\$ >$End "
unset End Green Blue Red Yellow
}
########################################
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export PAGER=`which most`" -s"
export EDITOR=`which emacs`
export VISUAL="$EDITOR"
# Если вам не нравится функция автопейджинга systemctl, то создайте переменнцю SYSTEMD_PAGER с пустым значением:
export SYSTEMD_PAGER=
########################################
function TMUX_CONNECTION() {
if [[ -z "$TMUX" ]] && [[ -n "$SSH_CONNECTION" ]]; then
# Attempt to discover a detached session and attach it, else create a new session
# -2 Force tmux to assume the terminal supports 256 colours.
# -d Отключить сеанс от других экземпляров
# -s Создать именованную сессию
# -t прицепиться к сессии
WHOAMI=$(whoami)
if tmux has-session -t $WHOAMI 2>/dev/null; then
tmux attach-session -t $WHOAMI
else
tmux new-session -s $WHOAMI -d
fi
fi
}
#TMUX_CONNECTION
alias tmx='tmux attach-session -t $(whoami) || tmux new-session -s $(whoami)'
########################################
# Распаковка любых архивов (если unp установлен)
extract() {
for archive in $*; do
if [ -f $archive ] ; then
case $archive in
*.tar.bz2) tar xvjf $archive ;;
*.tar.gz) tar xvzf $archive ;;
*.bz2) bunzip2 $archive ;;
*.rar) rar x $archive ;;
*.gz) gunzip $archive ;;
*.tar) tar xvf $archive ;;
*.tbz2) tar xvjf $archive ;;
*.tgz) tar xvzf $archive ;;
*.zip) unzip $archive ;;
*.Z) uncompress $archive ;;
*.7z) 7z x $archive ;;
*) echo "don't know how to extract '$archive'..." ;;
esac
else
echo "'$archive' is not a valid file!"
fi
done
}
################################
MoveTrash() {
mv "$@" ~/.Trash
}
mvdrv () {
cd ~
rm -f NVIDIA-Linux-x86_64-*
mv /home/serg/Загрузки/NVIDIA-Linux-x86_64-* .
chmod u+x NVIDIA-Linux-x86_64-* && chown root:root NVIDIA-Linux-x86_64-*
}
# User specific aliases and functions
#alias rm='MoveTrash'
export LS_OPTIONS='--color --group-directories-first'
alias l.='ls -d .* $LS_OPTIONS'
alias ll='ls -lh $LS_OPTIONS'
alias ls='ls -A $LS_OPTIONS'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias df='dfc -i -d -t -tmpfs,devtmpfs'
alias du='du -sh'
alias e="$EDITOR"
alias netstat='netstat -anp -A inet'
alias ping='ping -c3'
alias ping6='ping6 -c3'
alias egrep='egrep -v "^[[:space:]]$|^;|^#|^$|^([[:blank:]]*)[#,;,$]"'
alias grep='grep -i --color'
alias ip='ip -c'
################################
case "$TERM" in
'xterm') TERM=xterm;;
'tmux') TERM=tmux;;
'linux') TERM=linux;;
'screen') TERM=screen;;
'Eterm') TERM=Eterm;;
'konsole') TERM=konsole;;
esac
################################
export HISTTIMEFORMAT="%h %d %H:%M:%S "
export HISTSIZE=10000
export PROMPT_COMMAND='set_prompt; history -a'
export HISTCONTROL='ignoreboth:erasedups'
export HISTIGNORE="ls:ll:history:w:htop"
################################
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
################################
shopt -s autocd
# Show the current version of the operating system
ver ()
{
local dtype
# dtype=$(distribution)
dtype="redhat"
if [ $dtype == "redhat" ]; then
if [ -s /etc/redhat-release ]; then
cat /etc/redhat-release && uname -a
nvidia-installer -v |grep version
else
cat /etc/issue && uname -a
fi
elif [ $dtype == "suse" ]; then
cat /etc/SuSE-release
elif [ $dtype == "debian" ]; then
lsb_release -a
# sudo cat /etc/issue && sudo cat /etc/issue.net && sudo cat /etc/lsb_release && sudo cat /etc/os-release # Linux Mint option 2
elif [ $dtype == "gentoo" ]; then
cat /etc/gentoo-release
elif [ $dtype == "mandriva" ]; then
cat /etc/mandriva-release
elif [ $dtype == "slackware" ]; then
cat /etc/slackware-version
else
if [ -s /etc/issue ]; then
cat /etc/issue
else
echo "Error: Unknown distribution"
exit 1
fi
fi
}
Обращаем внимание на переменную $TERM. Крайне важное значение имеет при работе в консоли (TTY). При не верных настройках некоторые кнопки на клавиатуре ведут себя странно.
Настройка истории команд bash, поведение управляющих клавиш, ...
В случае bash, добавим строки в ~/.inputrc:
e ~/.inputrc
- Код: выделить все
# VER 1
# Индикатор режима в readlin
#set show-mode-in-prompt On
# arrow up
"\e[A": history-search-backward
# arrow down
"\e[B": history-search-forward
# Map control-d to kill the whole line
"\C-d":kill-whole-line
#
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# Подавляет вывод символа "^C" при нажатии Ctrl+C - отмена выполнения набранной команды
set echo-control-characters Off
Установка ширины TAB'а глобально для всех пользователей. добавляем в конец файла /etc/bashrc
e /etc/bashrc
- Код: выделить все
# Установка ширины TAB'а
tabs 4
для TCSH в .tcshrc
- Код: выделить все
set red="%{\033[1;31m%}"
set green="%{\033[0;32m%}"
set yellow="%{\033[1;33m%}"
set blue="%{\033[1;34m%}"
set magenta="%{\033[1;35m%}"
set cyan="%{\033[1;36m%}"
set white="%{\033[0;37m%}"
set end="%{\033[0m%}"
set prompt="${yellow}\{ %T \} ${green}\{ %n@%M \} ${blue}\{ %/ \} ${yellow}\{ %? \}\n${red}%#>${end} "
В случае tcsh добавим в ~/.tcshrc
- Код: выделить все
bindkey -k up history-search-backward
bindkey -k down history-search-forward
Для использования ssh-agent нужно добавить несколько строк в файл .bash_profile в домашнем каталоге пользователя. Для удобства управления сформировал соответствующую функцию
- Код: выделить все
...
function SSH-AGENT() {
eval $(ssh-agent)
ssh-add ~/.ssh/id_rsa
...
}
SSH-AGENT
P.S. при попытки вызвать данный набор команд из какого-нибудь скрипта получаем неработоспособного агента
- Код: выделить все
ssh-add -l
Could not open a connection to your authentication agent.
Изменение приветственного сообщение
e /etc/motd
- Код: выделить все
╔══════════════════════════════════════════════════════════════════════╗
║ Welcome on the Home Server ║
║ Fedora Workstation ║
║ sergey.free-adm.ru ║
╠══════════════════════════════════╦═══════════════════════════════════╣
║ Admin: ║ Skype: ║
║ E-mail: ║ ICQ/QIP: ║
║ Mobile: +7 ║ WIRE: ║
╚══════════════════════════════════╩═══════════════════════════════════╝
Задаём параметры сетевой карты
enp0s3 - имя карточки
- Код: выделить все
ethtool -s enp0s3 speed 1000 duplex full autoneg off
Параметры утилитой ethtool при запуске читаются из файла настроек сетевых параметров /etc/sysconfig/network-scripts/ifcfg-enp0s3
- Код: выделить все
ETHTOOL_OPTS="speed 1000 duplex full autoneg off"
Here is how to raise Rx ring buffer size 4 times from default value:
- Код: выделить все
ethtool -g enp0s3
ethtool -G enp0s3 rx 4096 tx 4096
Пример настройки чистого IPv6
cat /etc/sysconfig/network-scripts/ifcfg-enp0s3
- Код: выделить все
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=773ab41e-c39c-395f-b9a9-bbd972698686
DEVICE=enp0s3
ONBOOT=yes
AUTOCONNECT_PRIORITY=-999
IPV6ADDR=2020:3:22::1:2/64
IPV6_DEFAULTGW=2020:3:22::1:1
DNS1=2a03:2020:3:22::1:3
IPV6_DOMAIN=free-adm6.ru
Присваиваем сетям имена
cat /etc/networks
- Код: выделить все
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0
lan 195.0.1.0
VirtualBox 192.168.122.0
результат
- Код: выделить все
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gate.free-adm.r 0.0.0.0 UG 100 0 0 enp5s0
VirtualBox 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
lan 0.0.0.0 255.255.255.0 U 100 0 0 enp5s0
Настраиваем имя хоста
e /etc/hosts
- Код: выделить все
195.0.1.15 cent.free-adm.ru cent
hostname НЕОБХОДИМО задавать полное имя хоста, иначе при выводе
полного имени в переменной $PS1 (\H) будет постоянно выводится короткое имя
Или при помощи hostnamectl
static - “server1.cyberciti.biz” назначаемое системным администратором, такие как server1, server1.company.com
pretty - красивое имя адрес который будут видеть другие пользователи, например, «Принтер в холле».
transient - Переходное имя Динамическое (transient), назначаемое по DHCP или mDNS.
- Код: выделить все
# hostnamectl set-hostname Your-New-Host-Name-Here
hostnamectl set-hostname "Your New Host Name Here" --pretty
hostnamectl set-hostname Your-New-Host-Name-Here --static
hostnamectl set-hostname Your-New-Host-Name-Here --transient
Теперь вы снова можете просмотреть результат вывода команды:
- Код: выделить все
hostnamectl status
Для удаления имени сервера можно воспользоваться командой:
- Код: выделить все
hostnamectl set-hostname «»
hostnamectl set-hostname «» —static
hostnamectl set-hostname «» —pretty
Права на вновь создаваемые каталоги и файлы
Ужесточаем права на вновь создаваемые каталоги и файлы. Лишаем прав группу остальные пользователи. меняем 002 и 027 на 007 и 027 соответственно
e /etc/profile
- Код: выделить все
...
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 007
else
umask 027
fi
...
Настройка редактора EMACS
e .emacs
- Код: выделить все
;;; Если el-get не установлен, его нужно установить
(add-to-list 'load-path "~/.emacs.d/el-get/el-get")
;;; Эта часть взята из официальной документации el-get
(unless (require 'el-get nil 'noerror)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/dimitri/el-get/master/el-get-install.el")
(goto-char (point-max))
(eval-print-last-sexp)))
;;; Указываем, где будут храниться "рецепты" (набор параметров для каждого пакета в терминологии el-get)
(add-to-list 'el-get-recipe-path "~/.emacs.d/el-get-user/recipes")
(el-get 'sync) ;;; Получаем список пакетов, доступных для установки
;;; Список пакетов, которые будут установлены через el-get
(setq required-packages
(append
'(
anaconda-mode
aggressive-indent-mode
company-mode
company-web
el-get
emacs-neotree
emmet-mode
flycheck
flycheck-pos-tip
git-gutter
helm
highlight-parentheses
indent-guide
js2-mode
json-mode
php-mode
keyfreq
less-css-mode
markdown-mode
monokai-theme
multiple-cursors
paredit
pip-requirements
popup
powerline
py-autopep8
pyvenv
rainbow-delimiters
smart-tab
smartparens
undo-tree
virtualenvwrapper
web-mode
yafolding
yasnippet
yasnippet-snippets
)
(mapcar 'el-get-as-symbol (mapcar 'el-get-source-name el-get-sources))))
;;; Установка пакетов через el-get
(el-get 'sync required-packages)
;;; Дальше идёт подгрузка из MELPA Stable тех компонентов, которых нет в рецептах el-get, либо установка
;;; оттуда нецелесообразна (python-mode лучше ставить именно из MELPA Stasble, поскольку рецепт
;;; для el-get требует наличия в ОС Bazaar - некогда использовавшейся в Canonical системы контроля версий)
(require 'package)
(require 'cl)
;;; А эти пакеты - из MELPA Stable
(defvar elpa-packages '(
py-isort
python-mode
web-beautify
))
(defun cfg:install-packages ()
(let ((pkgs (remove-if #'package-installed-p elpa-packages)))
(when pkgs
(message "%s" "Emacs refresh packages database...")
(package-refresh-contents)
(message "%s" " done.")
(dolist (p elpa-packages)
(package-install p)))))
(add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/") t)
(add-to-list 'package-archives '("melpa-stable" . "http://stable.melpa.org/packages/") t)
;;; Раскомментируйте строку ниже, если хотите, чтобы так же стал доступен основной репозиторий MELPA
;;; Пакеты там более свежие, но и шансов нарваться на глюки больше, чем в Stable
;;; (add-to-list 'package-archives '("melpa" . "http://melpa.org/packages/") t)
;;; Обновляем список пакетов, доступных для установки через packages
(package-initialize)
;;; Запускаем процесс установки
(cfg:install-packages)
;;**************************************************************************
;; System-type definition
(defun system-is-linux()
(string-equal system-type "gnu/linux"))
(defun system-is-windows()
(string-equal system-type "windows-nt"))
;; ############################
;; My name and e-mail adress
(setq user-full-name "%user-name%")
(setq user-mail-adress "%user-mail%")
;; Dired
(require 'dired)
(setq dired-recursive-deletes 'top) ;; чтобы можно было непустые директории удалять
;; Imenu
(require 'imenu)
(setq imenu-auto-rescan t) ;; автоматически обновлять список функций в буфере
(setq imenu-use-popup-menu nil) ;; диалоги Imenu только в минибуфере
(global-set-key (kbd "<f6>") 'imenu) ;; вызов Imenu на F6
;; ############################
;; Coding-system settings
(set-language-environment 'UTF-8)
(if (system-is-linux) ;; для GNU/Linux кодировка utf-8, для MS Windows - windows-1251
(progn
(setq default-buffer-file-coding-system 'utf-8)
(setq-default coding-system-for-read 'utf-8)
(setq file-name-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8-unix)
(set-terminal-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
)
(progn
(prefer-coding-system 'windows-1251)
(set-terminal-coding-system 'windows-1251)
(set-keyboard-coding-system 'windows-1251-unix)
(set-selection-coding-system 'windows-1251)
(setq file-name-coding-system 'windows-1251)
(setq-default coding-system-for-read 'windows-1251)
(setq default-buffer-file-coding-system 'windows-1251)
)
)
;; MIXED UNIX AND DOS LINE ENDINGS
(defun set-bfr-to-8-unx ()
(interactive)
(set-buffer-file-coding-system
'utf-8-unix)
)
(global-set-key (kbd "C-c u")
'set-bfr-to-8-unx
)
;;Выделять результаты поиска:
(setq search-highlight t)
(setq query-replace-highlight t)
;; ############################
;; Хотим иметь возможность удалить выделенный текст при вводе поверх? Пожалуйста:
(delete-selection-mode t)
;; ############################
(normal-erase-is-backspace-mode 1)
(setq make-backup-files nil) ;; Don't want any backup files
(setq auto-save-list-file-name nil) ;; Don't want any .saves files
(setq auto-save-default nil) ;; Don't want any auto saving
;; Show-paren-mode settings
(show-paren-mode t) ;; включить выделение выражений между {},[],()
(setq show-paren-style 'expression) ;; выделить цветом выражения между {},[],()
;; ##################################
(set-default 'truncate-lines t) ;; НЕ переносить длинные строки
(menu-bar-mode -1) ;; Отключить верхнее меню
(fset 'yes-or-no-p 'y-or-n-p) ;; Сокращение ответа до y/n вместо yes или no
;; ##################################
;; (add-to-list 'load-path "~/.emacs.d/")
;; #####################
;; Linum plugin
(require 'linum) ;; вызвать Linum
(line-number-mode t) ;; показать номер строки в mode-line
(global-linum-mode t) ;; показывать номера строк во всех буферах
(column-number-mode t) ;; показать номер столбца в mode-line
(setq linum-format "%d ") ;; задаем формат нумерации строк
;; ############################
;; Fringe settings
;;(fringe-mode '(8 . 0)) ;; ограничитель текста только слева
(setq-default indicate-empty-lines t) ;; отсутствие строки выделить глифами рядом с полосой
;; с номером строки
(setq-default indicate-buffer-boundaries 'left) ;; индикация только слева
;; Display file size/time in mode-line
(setq display-time-24hr-format t) ;; 24-часовой временной формат в mode-line
(display-time-mode t) ;; показывать часы в mode-line
(size-indication-mode t) ;; размер файла в %-ах
;; ############################
;; Подсветка кода:
(require 'font-lock)
(global-font-lock-mode t) ;; включено с версии Emacs-22. На всякий...
(setq font-lock-maximum-decoration t)
;; ############################
;; Indent settings
(setq-default indent-tabs-mode t) ;; включить возможность ставить отступы TAB'ом
(setq-default tab-width 4) ;; ширина табуляции - 4 пробельных символа
(setq-default standart-indent 4) ;; стандартная ширина отступа - 4 пробельных символа
(setq-default lisp-body-indent 4) ;; сдвигать Lisp-выражения на 4 пробельных символа
;;(global-set-key (kbd "RET") 'newline-and-indent) ;; при нажатии Enter перевести каретку и сделать отступ
(global-set-key (kbd "TAB") 'self-insert-command);
(setq lisp-indent-function 'common-lisp-indent-function)
;; ############################
;;Плавный скроллинг:
(setq scroll-step 1) ;; вверх-вниз по 1 строке
;; Общий с ОС буфер обмена:
(setq x-select-enable-clipboard t)
;; End of file newlines
(setq require-final-newline t) ;; добавить новую пустую строку в конец файла при сохранении
(setq next-line-add-newlines nil) ;; не добавлять новую строку в конец при смещении
;;############################
;; PuTTY fix. Ugly. Bad. But it works. (Good)
(define-key global-map "\M-[1~" 'beginning-of-line)
(define-key global-map [select] 'end-of-line)
;;######## visudo-sudoers ###########################
(when (member "_=/usr/sbin/visudo" process-environment)
(add-hook 'find-file-hook 'visudo-sudoers-p))
(defun visudo-sudoers-p ()
(setq backup-enable-predicate 'visudo-no-tmp~)
(add-hook 'after-save-hook 'kill-sudoers.tmp~))
(defun kill-sudoers.tmp~ ()
(when (file-exists-p "/etc/sudoers.tmp~")
(delete-file "/etc/sudoers.tmp~")))
(defun visudo-no-tmp~ (maybe-sudoers.tmp)
(if (string= maybe-sudoers.tmp "/etc/sudoers.tmp")
(with-current-buffer (get-buffer-create "sudoers.tmp")
(setq backup-inhibited t)
(auto-save-mode -1)
nil)
t))
;;################################################
(custom-set-variables
;; custom-set-variables was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(package-selected-packages (quote (web-beautify python-mode py-isort))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
)
;;===============================
;; backspace key
(normal-erase-is-backspace-mode 0)
;;===============================
;; duplicate-line
(defun duplicate-line()
(interactive)
(move-beginning-of-line 1)
(kill-line)
(yank)
(open-line 1)
(next-line 1)
(yank)
)
(global-set-key (kbd "C-d") 'duplicate-line)
;; F O R S U D O
;;===============================
(when (member "_=/usr/sbin/visudo" process-environment)
(add-hook 'find-file-hook 'visudo-sudoers-p))
(defun visudo-sudoers-p ()
(setq backup-enable-predicate 'visudo-no-tmp~)
(add-hook 'after-save-hook 'kill-sudoers.tmp~))
(defun kill-sudoers.tmp~ ()
(when (file-exists-p "/etc/sudoers.tmp~")
(delete-file "/etc/sudoers.tmp~")))
(defun visudo-no-tmp~ (maybe-sudoers.tmp)
(if (string= maybe-sudoers.tmp "/etc/sudoers.tmp")
(with-current-buffer (get-buffer-create "sudoers.tmp")
(setq backup-inhibited t)
(auto-save-mode -1)
nil)
t))
SELinux
Отключение
- Код: выделить все
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
В новых версиях системы Fedora данный способ вызывает предупреждающее сообщения типа
- Код: выделить все
SELinux: Runtime disable is deprecated, use selinux=0 on the kernel cmdline.
Если в логах наблюдаются подобные сообщения то нужно добавить параметр selinux=0 к списку параметров ядра
/etc/kernel/cmdline
- Код: выделить все
root=ZFS=tank ro boot=zfs rpool=tank bootfs=tank rhgb quiet selinux=0
/etc/default/grub
GRUB_CMDLINE_LINUX="resume=/dev/mapper/fedora-swap rd.lvm.lv=fedora/root rd.lvm.lv=fedora/swap rhgb quiet selinux=0"
Ошибки
mcelog: ERROR: AMD Processor family 21: mcelog does not support this processor. Please use the edac_mce_amd module instead.
CPU is unsupported
Всем пользователям AMD :
- Код: выделить все
systemctl disable mcelog
dnf -y erase mcelog
Настройка редактора Vim
Устанавливаем Vim.
- Код: выделить все
dnf install vim
Скачиваем менеджер плагинов vim-plug с githubusercontent
- Код: выделить все
curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Формируем конфигурационный файл .vimrc в домашнем каталоге пользователя.
Символ " является комментарием для конфигурационного файла vim
cat .vimrc
- Код: выделить все
" Включаем нумерацию строк
set number
"Замена Tab на пробелы (не наш метод)
"set expandtab
" Устанавливаем ширину табуляции
set tabstop=4
set shiftwidth=4
set smarttab
set smartindent
" подсветка при поиске
set hlsearch
" подсветка инкрементального поиска
set incsearch
" Подсветка кода
syntax on
" режим вставки при старте
au BufRead,BufNewFile * start
" ================================================
" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.vim/plugged')
" On-demand loading
Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
" Plug Color Cheme gruvbox
Plug 'morhetz/gruvbox'
" Плагин для статусной строки редактора
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
" Initialize plugin system
call plug#end()
"========================================
" Подключаем световую схему gruvbox
colorscheme gruvbox
set background=dark " установить тёмный режим
" Назначение клавиш
" Вызов панели навигации CTRL+n
map <C-n> :NERDTreeToggle<CR>
" Перечитать конфигурацию Vim CTRL+l
map <C-l> :source ~/.vimrc<CR>
" Установка / обновление плагинов CTRL+p
map <C-p> :PlugInstall<CR>
После наполнения файла конфигурацией и перезапуска редактора Vim воспользуемся комбинацией CTRL+p для установки всех описанных плагинов.
Результат конфигурирования
Отключаем неиспользуемые сервисы
Отключаем Bluetooth если его нет на компьютере
- Код: выделить все
systemctl disable --now bluetooth.service
Выключаем сервисы ISCSI если не используется данный протокол
- Код: выделить все
systemctl disable --now iscsi.service iscsid.socket iscsiuio.socket
Выключаем звуковую подсистему. На сервере она не нужна, тем более на удалённом
- Код: выделить все
systemctl disable --now sound.target
Включаем NumLock для консоли
нужно создать подкаталог getty@.service.d (если его нет) внутри /etc/systemd/system/ и файл, предположим, activate-numlock.conf
- Код: выделить все
mkdir /etc/systemd/system/getty@.service.d/
touch /etc/systemd/system/getty@.service.d/activate-numlock.conf
и приведём его к виду
- Код: выделить все
[Service]
ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'
Смена оболочки
Для изменения командной оболочки на постоянной основе служит команда chsh (от слов change shell).
Сначала нужно посмотреть доступные в системе оболочки
- Код: выделить все
chsh -l
Это аналог вывода содержимого файла etc/shells
Чтобы изменить оболочку текущего пользователя нужно выполнить команду:
- Код: выделить все
chsh -s путь_новой_оболочки
В качестве параметра путь_новой_оболочки необходимо указать путь до исполняемого файла оболочки, который вы можете найти в файле /etc/shells (см. выше).
Например, изменим оболочку на sh. Для этого выполняем команду (при выполнении команды нужно будет ввести пароль):
- Код: выделить все
chsh -s /bin/sh
После этого нужно выйти и снова войти в систему.
Чтобы изменить оболочку, используемую по умолчанию, для другого пользователя, то команде chsh необходимо указать имя этого пользователя:
- Код: выделить все
chsh -s /bin/sh user
Настраиваем SWAP
- Код: выделить все
sysctl vm.vfs_cache_pressure=50
sysctl vm.swappiness=20