gladilov.org.ru gladilov.org.ua

8 заметок с тегом

Debian

Аптайм больше года

Недавно посмотрел аптайм своего сервака и узнал, что он тихо и незаметно пересёк отметку в год работы без перезагрузок.

Чуть позже снял скрин с WEB-сервиса отслеживания аптайма: Показать

23 сентября   Debian   мну   праздник   сисадминство   события

Проверка раздела в образе диска

Часто сталкиваюсь с ситуацией, когда при попытке запуска в  QEMU виртуалки с образа диска (в основном IMG) возникает ошибка Kernel panic — not syncing: Attempted to kill init!: Показать

Пример ошибки:

sd 0:0:0:0: [sda] Attached SCSI disk
smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre <nico@fluxnic.net>
eth0: SMC91C11xFD (rev 1) at d089a000 IRQ 25 [nowait]
eth0: Ethernet addr: 52:54:00:12:34:56
mousedev: PS/2 mouse device common for all mice
TCP cubic registered
NET: Registered protocol family 17
input: AT Raw Set 2 keyboard as /devices/fpga:06/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/fpga:07/serio1/input/input1
EXT2-fs (sda2): error: couldn't mount because of unsupported optional features (244)
EXT4-fs (sda2): couldn't mount as ext3 due to feature incompatibilities
EXT4-fs (sda2): recovery complete
EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null)
VFS: Mounted root (ext4 filesystem) on device 8:2.
devtmpfs: mounted
Freeing init memory: 120K
Kernel panic - not syncing: Attempted to kill init!
[<c0032bec>] (unwind_backtrace+0x0/0xf0) from [<c03064dc>] (panic+0x58/0x170)
[<c03064dc>] (panic+0x58/0x170) from [<c0044054>] (do_exit+0x5d0/0x68c)
[<c0044054>] (do_exit+0x5d0/0x68c) from [<c004435c>] (do_group_exit+0x40/0xb0)
[<c004435c>] (do_group_exit+0x40/0xb0) from [<c004ed48>] (get_signal_to_deliver+0x1a8/0x378)
[<c004ed48>] (get_signal_to_deliver+0x1a8/0x378) from [<c002f124>] (do_signal+0x90/0x518)
[<c002f124>] (do_signal+0x90/0x518) from [<c002fa64>] (do_notify_resume+0x48/0x54)
[<c002fa64>] (do_notify_resume+0x48/0x54) from [<c002cc38>] (work_pending+0x24/0x28)

Вероятно, эта ошибка возникает при отсутствии флага проверки файловой системы (возможно, в корне ФС лежит пустой файл с именем /forcefsck). Борюсь с этим так. Командой fdisk получаю сектор начала ФС (допустим — 217156), умножаю его на размер сектора (обычно 512 байт) и получаю смещение (в данном примере — 111183872 байт). С этим смещением монтирую на спецдевайс /dev/loop0 IMG-файл. Провожу проверку с лечением возможных повреждений ФС, затем убираю монтирование спецдевайса.

sudo fdisk -l <имя образа>.img
sudo losetup -o <смещение * 512> /dev/loop0 <имя образа>.img
sudo fsck -fv /dev/loop0
sudo losetup -d /dev/loop0

Источники:
http://web.archive.org/web/20161224011451/http://blog.3mdeb.com/2015/12/30/emulate-rapberry-pi-2-in-qemu/
https://raspberrypi.stackexchange.com/questions/40854/kernel-panic-not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block179-6

Исправление ошибки dpkg о не найденном ldconfig

У меня есть старая железка с  DebWrt 2.0 на борту, вот такая:
 D-Link DIR-320/A2E

При выполнении команд apt-get получил предупреждения о том, что ldconfig и start-stop-daemon не найдены по пути поиска или не являются исполняемыми файлами (у меня русская локаль, поэтому системные сообщения выводятся на русском): Показать

# apt-get install debian-keyring
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Следующие пакеты устанавливались автоматически и больше не требуются:
  wwwconfig-common libjs-mootools javascript-common
Для их удаления используйте 'apt-get autoremove'.
НОВЫЕ пакеты, которые будут установлены:
  debian-keyring
обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 4 п                                                                                                                                                              акетов не обновлено.
Необходимо скачать 31,1 MБ архивов.
После данной операции, объём занятого дискового пространства возрастёт на 35,8 M                                                                                                                                                              B.
ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать!
  debian-keyring
Установить эти пакеты без проверки [y/N]? y
Получено:1 http://archive.debian.org/debian/ squeeze/main debian-keyring all 201                                                                                                                                                              0.12.29 [31,1 MB]
Получено 31,1 MБ за 41с (745 kБ/c)
dpkg: предупреждение: «ldconfig» отсутствует в каталогах, перечисленных в PATH,                                                                                                                                                               или не является исполняемым.
dpkg: предупреждение: «start-stop-daemon» отсутствует в каталогах, перечисленных                                                                                                                                                               в PATH, или не является исполняемым.
dpkg: предупреждение: «update-rc.d» отсутствует в каталогах, перечисленных в PAT                                                                                                                                                              H, или не является исполняемым.
dpkg: В каталогах, перечисленных в PATH, отсутствуют или не являются
исполняемыми 3 необходимых программы.
NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)
#

Для исправления этого, по совету отсюда и отсюда, я добавил в файл /root/.bashrc такую строку:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


Задача решена

UPD: Для самых слабых умом, которые (как и я) гуглят ошибку, а не читают системные месседжи до конца: достаточно было бы добавить к переменной PATH просто путь /sbin, так как оба бинарника лежат там. Ну и сообщение в конце вывода какбэ намекает: 

NB: В PATH суперпользователя обычно должны присутствовать /usr/local/sbin,
/usr/sbin и /sbin.

Добавление swap-файла в системе Debian

В связи с частыми вылетами демона TTRSS из-за недостатка памяти решил откусить 2 гига от корневой ФС для файла подкачки. Не уверен, что поможет, но попробую...

Создал пустой файл /swapfile размером 2 Гб:

dd if=/dev/zero of=/swapfile bs=1M count=2048

Установил ему права:

chmod 600 /swapfile

Отформатировал этот файл как своп:

mkswap /swapfile

Добавил файл подкачки в систему:

swapon /swapfile

В файле /etc/fstab добавил строку:

/swapfile     swap     swap     defaults     0     0

для того, чтобы при перезагрузке файл опять был добавлен в систему как своп.

Источники:
https://wiki.debian.org/Swap
https://www.tecmint.com/create-a-linux-swap-file/
http://blog.sedicomm.com/2017/07/26/kak-sozdat-linux-swap-fajl/

Срыв покровов

Рассказ об особенностях монтирования файловых систем.

Вчера моя дражайшая половина супруга задала мне интересный вопрос — что будет, если в одну точку монтирования привинтить две разных файловых системы?

Сегодня, найдя свободное время, я попробовал это выяснить опытным путём в  ВиртуалБоксовой машине с установленным  Дебианом, о чём отчитываюсь: Показать

– Создал директории /mnt/A и /mnt/B и файлы A.img и B.img (размером по 10 Мб), отформатировав их в разные файловые системы (ext2 и minix): Показать

soul@debian:~$ sudo -s
root@debian:/home/soul# fallocate -l 10M A.img
root@debian:/home/soul# fallocate -l 10M B.img
root@debian:/home/soul# ls /mnt
root@debian:/home/soul# mkdir /mnt/A
root@debian:/home/soul# mkdir /mnt/B
root@debian:/home/soul# mkfs.ext2 A.img
mke2fs 1.42.12 (29-Aug-2014)
Discarding device blocks: done
Creating filesystem with 10240 1k blocks and 2560 inodes
Filesystem UUID: 866d1e35-dad7-466a-990a-411601395777
Superblock backups stored on blocks:
        8193

Allocating group tables: done
Writing inode tables: done
Writing superblocks and filesystem accounting information: done

root@debian:/home/soul# mkfs.minix B.img
3424 inodes
10240 blocks
Firstdatazone=112 (112)
Zonesize=1024
Maxsize=268966912

root@debian:/home/soul#

– Смонтировал их в разные директории (A.img в /mnt/A, B.img в /mnt/B): Показать

root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/B
root@debian:/home/soul#

– Отмонтировал B.img от /mnt/B и примонтировал к /mnt/A, создал каталог /mnt/A/test1: Показать

root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul# mount -o loop B.img /mnt/A
root@debian:/home/soul# mkdir /mnt/A/test1
root@debian:/home/soul# ls /mnt/A
test1
root@debian:/home/soul#

– Перемонтировал A.img и B.img и примонтировал их к разным директориям, посмотрел результат создания каталога: Показать

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# ls /mnt/B
test1
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul#

– Повторил эксперимент в другой последовательности: Показать

root@debian:/home/soul# mount -o loop B.img /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# ls /mnt/A
lost+found
root@debian:/home/soul# mkdir /mnt/A/test2
root@debian:/home/soul#

– Отмонтировал оба файла, примонтировал их опять к разным директориям и посмотрел результат второго этапа: Показать

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# mount -o loop A.img /mnt/A
root@debian:/home/soul# mount -o loop B.img /mnt/B
root@debian:/home/soul# ls /mnt/A
lost+found  test2
root@debian:/home/soul# ls /mnt/B
test1
root@debian:/home/soul#

– Отмонтировал всё, удалил ненужные файлы и каталоги: Показать

root@debian:/home/soul# umount /mnt/A
root@debian:/home/soul# umount /mnt/B
root@debian:/home/soul# rm A.img
root@debian:/home/soul# rm B.img
root@debian:/home/soul# rmdir /mnt/A
root@debian:/home/soul# rmdir /mnt/B
root@debian:/home/soul# ^D
exit
soul@debian:~$

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

P. S. Здесь речь идёт о стандартных решениях, всякие там LVM, ZFS, btrfs и unionfs не рассматриваются.

Информация о системе: Показать

soul@debian:~$ uname -a
Linux debian 3.16.0-6-amd64 #1 SMP Debian 3.16.56-1 (2018-04-28) x86_64 GNU/Linux
soul@debian:~$ cat /etc/issue.net
Debian GNU/Linux 8
soul@debian:~$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
soul@debian:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.10 (jessie)
Release:        8.10
Codename:       jessie
soul@debian:~$

Дебиану четвертак!

Проект Debian празднует своё двадцатипятилетие. Дистрибутив был впервые анонсирован Яном Мёрдоком (Ian Murdoch) 16 августа 1993 года в списке рассылки comp.os.linux.development. Первичной задачей проекта была разработка дистрибутива, развиваемого в соответствии с духом полной открытости, свойственной Linux и GNU, а также стремление к техническому совершенству и надёжности.

В моей жизни Дебиан был не первой ОСью, но стал первым дистрибутивом, с которым столкнулся по рабочей необходимости. И с тех пор ни разу не возникло желания попробовать поработать на другом дистрибутиве. Попробовать поставить что-то другое, разобраться в тонкостях установки и настройки, для широты кругозора так сказать — это пожалуйста.

Показать

Кто-то считает его жутким нагрождением костылей, кого-то оттолкнуло решение отказаться от традиционной системы инициализации и перейти на systemd, но моим рабочим дистром был и остаётся Дебиан. 25 лет — даже для человека серьезный срок, немного продуктов (особенно с открытой кодовой базой) может похвастать столь длинным сроком жизни, но у Дебиана есть безоговорочный авторитет среди пакетных дистров, с которым считаются все. Многие дома и по работе используют другие дистрибутивы , но уважение и почёт к Debian’у остается в силе... У него самая большая пакетная база, самое большое дробление пакетов, огромное сообщество, да и команда проекта не маленькая. Пакетный менеджер в Debian’е — самый гибкий ПМ из всех binary-based.

За время существования Debian было выпущено 15 релизов, обеспечена поддержка 30 аппаратных архитектур, сформирован репозиторий из более чем 40 тысяч пакетов. В проект вовлечено более 1000 разработчиков, на технологиях Debian построено около 150 производных дистрибутивов, не считая многочисленных ответвлений от таких основанных на Debian дистрибутивов, как Ubuntu.

С днюхой, Дебиан, долгих лет!!!

Проекту Debian исполнилось 24 года

Проект Debian празднует своё двадцатичетырёхлетие. Дистрибутив был впервые анонсирован студентом Университета Пердью Яном Мёрдоком (Ian Murdock) 16 августа 1993 года в списке рассылки comp.os.linux.development. Этот день и считается днем рождения операционной системы Debian.

Показать

Первичной задачей проекта была разработка дистрибутива, развиваемого в соответствии с духом полной открытости, свойственной Linux и GNU, а также стремление к техническому совершенству и надёжности.

За время существования Debian было выпущено 14 релизов, обеспечена официальная поддержка 30 аппаратных архитектур, сформирован репозиторий из более чем 50 тысяч пакетов. В проект вовлечено более 1000 разработчиков, в сервисе alioth.debian.org зарегистрировано около 30 тысяч аккаунтов. На технологиях Debian построено более 300 производных дистрибутивов, из которых около 120 активно развиваются.

С днём рождения, лучший и надёжнейший дистрибутив! Дистрибутивище!!!

P.S. Дебиан уже 24 года торт!

P.P.S. Жизненный путь дебиана и его семья:
https://upload.wikimedia.org/wikipedia/commons/6/69/DebianFamilyTree1210.svg?uselang=ru

Памятка для настройки DebWrt

 Давным-давно появилась у меня железка D-Link DIR-300/A2,  вот такая. Так как на ней есть разъём USB, то я поставил туда прошивку DebWrt, продукт противоестественного скрещивания Debian и OpenWrt

С тех пор на винте лежит текстовый файл, описывающий основные команды настройки этой ОС. Публикую здесь как памятку для себя (с моими комментариями), ну а если сей опус кому-либо когда-либо как-либо чем-то пригодится — я буду только рад!

Показать

cd /etc/network
rm interfaces // это симлинк на interfaces.firstboot
cp interfaces.firstboot interfaces
vi interfaces // настраиваем сетевые интерфейсы как нам нужно
// следующие команды необходимы для настройки доступа в интернет без перезагрузки устройства
// (после доступ будет реализован путём выдачи IP по DHCP от шлюза во внешнюю сеть)
ip a a $IP/$MASK dev $IF && echo '8.8.8.8' > /etc/resolv.conf && ip r a via $GW
// для обновления репозитория со squeeze до wheezy
cp /etc/apt/sources.list /etc/apt/sources.list.old
echo 'deb http://ftp.debian.org/debian wheezy main' > /etc/apt/sources.list
gpg --keyserver pgpkeys.mit.edu --recv-key F120156012B83718 && gpg -a --export F120156012B83718 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 010908312D230C5F && gpg -a --export 010908312D230C5F | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key CBF8D6FD518E17E1 && gpg -a --export CBF8D6FD518E17E1 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 7638D0442B90D010 && gpg -a --export 7638D0442B90D010 | apt-key add -
gpg --keyserver pgpkeys.mit.edu --recv-key 8B48AD6246925553 && gpg -a --export 8B48AD6246925553 | apt-key add -
// опционально
gpg --keyserver pgpkeys.mit.edu --recv-key 6FB2A1C265FFB764 && gpg -a --export 6FB2A1C265FFB764 | apt-key add -
aptitude update
aptitude upgrade
adduser $USER
echo '$USER ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers
// обновление системы, можно и aptitude upgrade/aptitude dist-upgrade впендюрить, если время позволяет
aptitude update
// установка нужных пакетов
aptitude install mc sudo locales bash-completion ntpdate openssh-server screen wpasupplicant
// установка опциональных пакетов
aptitude install most nload htop ccze telnet wavemon tcpdump fping nmap ipcalc console-cyrillic
// установка совсем уж опциональных пакетов
aptitude install apache2 php5 mysql-server mysql-client
// настройка локали, шрифтов, таймзоны
dpkg-reconfigure locales
dpkg-reconfigure console-cyrillic // если поставлен
dpkg-reconfigure tzdata

Далее следует настройка переменных и алиасов в ~/.bashrc и ~/.profile (а равно и в /root/.bashrc и /root/.profile).

Если кого заинтересовала эта прошивка — вот  ссылка на мою инструкцию по перепрошивке девайса (DIR-320/A*, версия прошивки — 10.03).

Наверх