gladilov.org.ru gladilov.org.ua

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

Debian

Debian GNU/Linux исполнилось 30 лет

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

За время существования Debian было выпущено 18 релизов, обеспечена поддержка 26 аппаратных архитектур, сформирован репозиторий из более чем 60 тысяч пакетов. Общий суммарных размер всех предложенных в дистрибутиве исходных текстов составляет 1.3 млрд строк кода. Суммарный размер всех пакетов — 365 GB. В проект вовлечено более 1000 разработчиков, на технологиях Debian создано около 400 производных дистрибутивов, не считая многочисленных ответвлений от таких основанных на Debian дистрибутивов, как Ubuntu.

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

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

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

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

Часто сталкиваюсь с ситуацией, когда при попытке запуска в  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).

Наверх