Openwrt проверить диск на ошибки

As mentioned previously, I’m a believer in monitoring things closely and another tool that is useful. Some form of filesystem checker which reports changes is useful even if it is only to remind me of changes I’ve made.

Like my mini_logcheck script this also has to be very lightweight and based on standard busybox tools.

How it works

What we do is maintain a database of the filesystem the last time we looked at it. This includes inodes, MD5 checksums, permissions, sizes etc., then on each run we do a diff against the last time, and email that if stuff has changed.

Installation & Configuration

Download mini_fscheck for OpenWrt and ensure you also have the following packages installed:

  • cron — needed to run mini_fscheck
  • mini_sendmail — needed to send emails

Put mini_fscheck somewhere suitable (eg. /usr/sbin though /etc would arguably be OK considering it contains email configuration). You will need to edit the file to set the email configuration appropriately for your needs.

You may also want to modify the find command to include/exclude things that you want to monitor.

If you are using my mini_logcheck then don’t forget to add a rule rule in for running this for crond:

crond[[0-9]+]: USER root pid [0-9]+ cmd /usr/sbin/mini_fscheck$

This will be logged each time the cron runs the script so if you don’t have this you will get an email every time.

Then add a cron entry (create a a new file if needed) in /etc/crontabs/root to run the script:

# m h dom mon dow command
  42 */2 * * * /usr/sbin/mini_fscheck

How often you run the filesystem check is up to you — more often will catch problems earlier but this is fairly CPU and IO intensive and if the rules are not perfect it risks filling your mailbox with messages.

Restart cron to read the new crontab and start things off:

# /etc/init.d/cron restart

Then each time the script runs it should email you any new log lines which are not excluded by the patterns on the find lines.

The first run should email you about generating the databases, and after that you should get diffs of the files that change.

Posted On 2019-07-31

Системная информация
arch — отобразить архитектуру компьютера

uname -m — отобразить тип текущей аппаратной платформы

uname -r — отобразить используемую версию ядра

dmidecode -q — показать аппаратные системные компоненты — (SMBIOS / DMI)

hdparm -i /dev/hda — вывести характеристики жесткого диска

hdparm -tT /dev/sda — протестировать производительность чтения данных с жесткого диска

cat /proc/cpuinfo — отобразить информацию о процессоре

cat /proc/interrupts — показать прерывания

cat /proc/meminfo — проверить использование памяти

cat /proc/swaps — показать файл(ы) подкачки

cat /proc/version — вывести версию ядра

cat /proc/net/dev — показать сетевые интерфейсы и статистику по ним

cat /proc/mounts — отобразить смонтированные файловые системы

lspci -tv — показать в виде дерева PCI устройства

lsusb -tv — показать в виде дерева USB устройства

date — вывести системную дату

cal 2013 — вывести таблицу-календарь 2013-го года

date 041217002007.00 — установить системные дату и время ММДДЧЧммГГГГ.СС (МесяцДеньЧасМинутыГод.Секунды)

clock -w — сохранить системное время в BIOS

Остановка системы
shutdown -h now — Остановить систему

init 0

telinit 0

shutdown -h hours:minutes & — запланировать остановку системы на указанное время

shutdown -c — отменить запланированную по расписанию остановку системы

shutdown -r now — перегрузить систему

reboot — перегрузить систему

logout — выйти из системы

Файлы и директории
cd /home — перейти в директорию ‘/home’

cd .. — перейти в директорию уровнем выше

cd ../.. — перейти в директорию двумя уровнями выше

cd — перейти в домашнюю директорию

cd ~user — перейти в домашнюю директорию пользователя user

cd — — перейти в директорию, в которой находились до перехода в текущую директорию

pwd — показать текущюю директорию

ls — отобразить содержимое текущей директории

ls -F — отобразить содержимое текущей директории с добавлением к именам символов, храктеризующих тип

ls -l — показать детализированое представление файлов и директорий в текущей директории

ls -a — показать скрытые файлы и директории в текущей директории

ls *[0-9]* — показать файлы и директории содержащие в имени цифры

tree — показать дерево файлов и директорий, начиная от корня (/)

lstree

mkdir dir1 — создать директорию с именем ‘dir1’

mkdir dir1 dir2 — создать две директории одновременно

mkdir -p /tmp/dir1/dir2 — создать дерево директорий

rm -f file1 — удалить файл с именем ‘file1’

rmdir dir1 — удалить директорию с именем ‘dir1’

rm -rf dir1 — удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое

rm -rf dir1 dir2 — удалить две директории и рекурсивно их содержимое

mv dir1 new_dir — переименовать или переместить файл или директорию

cp file1 file2 — сопировать файл file1 в файл file2

cp dir/* . — копировать все файлы директории dir в текущую директорию

cp -a /tmp/dir1 . — копировать директорию dir1 со всем содержимым в текущую директорию

cp -a dir1 dir2 — копировать директорию dir1 в директорию dir2

ln -s file1 lnk1 — создать символическую ссылку на файл или директорию

ln file1 lnk1 — создать «жёсткую» (физическую) ссылку на файл или директорию

touch -t 0712250000 fileditest — модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Поиск файлов
find / -name file1 — найти файлы и директории с именем file1. Поиск начать с корня (/)

find / -user user1 — найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)

find /home/user1 -name «*.bin» — Найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’

find /usr/bin -type f -atime +100 — найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней

find /usr/bin -type f -mtime -10 — найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней

find / -name *.rpm -exec chmod 755 ‘{}’ ; — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним

find / -xdev -name «*.rpm» — найти все фалы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.

locate «*.ps» — найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’

whereis halt — показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’

which halt — отображает полный путь к файлу ‘halt’

Монтирование файловых систем

mount /dev/hda2 /mnt/hda2 — монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

umount /dev/hda2 — размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

fuser -km /mnt/hda2 — принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем

umount -n /mnt/hda2 — выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

mount /dev/fd0 /mnt/floppy — монтировать флоппи-диск

mount /dev/cdrom /mnt/cdrom — монтировать CD или DVD

mount /dev/hdc /mnt/cdrecorder — монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

mount -o loop file.iso /mnt/cdrom — смонтировать ISO-образ

mount -t vfat /dev/hda5 /mnt/hda5 — монтировать файловую систему Windows FAT32

mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — монтировать сетевую файловую систему Windows (SMB/CIFS)

mount -o bind /home/user/prg /var/ftp/user — «монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работе ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Дисковое пространство
df -h — отображает информацию о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)

ls -lSr |more — выдаёт список файлов и директорий рекурсивно с сортировкой по возрастанию размера и позволяет осуществлять постраничный просмотр

du -sh dir1 — подсчитывает и выводит размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)

du -sk * | sort -rn — отображает размер и имена файлов и директорий, с соритровкой по размеру

rpm -q -a —qf ‘{SIZE}t%{NAME}n’ | sort -k1,1n — показывает размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)

dpkg-query -W -f=’${Installed-Size;10}t${Package}n’ | sort -k1,1n — показывает размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Пользователи и группы
groupadd group_name — создать новую группу с именем group_name

groupdel group_name — удалить группу group_name

groupmod -n new_group_name old_group_name — переименовать группу old_group_name в new_group_name

useradd -c «Nome Cognome» -g admin -d /home/user1 -s /bin/bash user1 — создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome

useradd user1 — создать пользователя user1

userdel -r user1 — удалить пользователя user1 и его домашний каталог

usermod -c «User FTP» -g system -d /ftp/user1 -s /bin/nologin user1 — изменить атрибуты пользователя

passwd — сменить пароль

passwd user1 — сменить пароль пользователя user1 (только root)

chage -E 2005-12-31 user1 — установить дату окончания действия учётной записи пользователя user1

pwck — проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow

grpck — проверяет корректность системных файлов учётных записей. Проверяется файл/etc/group

newgrp [-] group_name — изменяет первичную группу текущего пользователя. Если указать «-«, ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Выставление/изменение полномочий на файлы

ls -lh — просмотр полномочий на файлы и директории в текущей директории

ls /tmp | pr -T5 -W$COLUMNS — вывести содержимое директории /tmp и разделить вывод на пять колонок

chmod ugo+rwx directory1 — добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1

chmod go-rwx directory1 — отобрать у группы и всех остальных все полномочия на директорию directory1.

chown user1 file1 — назначить владельцем файла file1 пользователя user1

chown -R user1 directory1 — назначить рекурсивно владельцем директории directory1 пользователя user1

chgrp group1 file1 — сменить группу-владельца файла file1 на group1

chown user1:group1 file1 — сменить владельца и группу владельца файла file1

find / -perm -u+s — найти, начиная от корня, все файлы с выставленным SUID

chmod u+s /bin/binary_file — назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла.

chmod u-s /bin/binary_file — снять SUID-бит с файла /bin/binary_file.

chmod g+s /home/public — назначить SGID-бит директории /home/public.

chmod g-s /home/public — снять SGID-бит с директории /home/public.

chmod o+t /home/public — назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам

chmod o-t /home/public — снять STIKY-бит с директории /home/public

Специальные атрибуты файлов
chattr +a file1 — позволить открывать файл на запись только в режиме добавления

chattr +c file1 — позволяет ядру автоматически сжимать/разжимать содержимое файла.

chattr +d file1 — указавет утилите dump игнорировать данный файл во время выполнения backup’а

chattr +i file1 — делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него.

chattr +s file1 — позволяет сделать удаление файла безопасным, т.е. выставленный атрибут s говорит о том, что при удалении файла, место, занимаемое файлом на диске заполняется нулями, что предотвращяет возможность восстановления данных.

chattr +S file1 — указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync

chattr +u file1 — данный атрибут указывает, что при удалении файла содержимое его будет сохранено и при необходимости пользователь сможет его восстановить

lsattr — показать атрибуты файлов

Архивирование и сжатие файлов
bunzip2 file1.bz2 — разжимает файл ‘file1.gz’

gunzip file1.gz

gzip file1 — сжимает файл ‘file1’

bzip2 file1

gzip -9 file1 — сжать файл file1 с максимальным сжатием

rar a file1.rar test_file — создать rar-архив ‘file1.rar’ и включить в него файл test_file

rar a file1.rar file1 file2 dir1 — создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1

rar x file1.rar — распаковать rar-архив

unrar x file1.rar

tar -cvf archive.tar file1 — создать tar-архив archive.tar, содержащий файл file1

tar -cvf archive.tar file1 file2 dir1 — создать tar-архив archive.tar, содержащий файл file1, file2 и dir1

tar -tf archive.tar — показать содержимое архива

tar -xvf archive.tar — распаковать архив

tar -xvf archive.tar -C /tmp — распаковать архив в /tmp

tar -cvfj archive.tar.bz2 dir1 — создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)

tar -xvfj archive.tar.bz2 — разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)

tar -cvfz archive.tar.gz dir1 — создать архив и сжать его с помощью gzip

tar -xvfz archive.tar.gz — разжать архив и распаковать его

zip file1.zip file1 — создать сжатый zip-архив

zip -r file1.zip file1 file2 dir1 — создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий

unzip file1.zip — разжать и распаковать zip-архив

Просмотр содержимого файлов
cat file1 — вывести содержимое файла file1 на стандартное устройсво вывода

tac file1 — вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)

more file1 — постраничный вывод содержимого файла file1 на стандартное устройство вывода

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

head -2 file1 — вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

tail -2 file1 — вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

tail -f /var/log/messages — выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста.

Манипуляции с текстом
cat file_originale | [operation: sed, grep, awk, grep и т.п.] > result.txt — общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый

cat file_originale | [operazione: sed, grep, awk, grepи т.п.] >> result.txt — общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в существующий файл. Если файл не существует, он будет создан

grep Aug /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»

grep ^Aug /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»

grep [0-9] /var/log/messages — из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры

grep Aug -R /var/log/* — отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug», во всех файлах, находящихся в директории /var/log и ниже

sed ‘s/stringa1/stringa2/g’ example.txt — в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода.

sed ‘/^$/d’ example.txt — удалить пустые строки из файла example.txt

sed ‘/ *#/d; /^$/d’ example.txt — удалить пустые строки и комментарии из файла example.txt

echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ — преобразовать символы из нижнего регистра в верхний

sed -e ‘1d’ result.txt — удалить первую строку из файла example.txt

sed -n ‘/string1/p’ — отобразить только строки содержашие «string1»

sed -e ‘s/ *$//’ example.txt — удалить пустые символы в в конце каждой строки

sed -e ‘s/string1//g’ example.txt — удалить строку «string1» из текста не изменяя всего остального

sed -n ‘1,8p;5q’ example.txt — взять из файла с первой по восьмую строки и из них вывести первые пять

sed -n ‘5p;5q’ example.txt — вывести пятую строку

sed -e ‘s/0*/0/g’ example.txt — заменить последовательность из любого количества нулей одним нулём

cat -n file1 — пронумеровать строки при выводе содержимого файла

cat example.txt | awk ‘NR%2==1’ — при выводе содержимого файла, не выводить чётные строки файла

echo a b c | awk ‘{print $1}’ — вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

echo a b c | awk ‘{print $1,$3}’ — вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

paste file1 file2 — объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m

paste -d ‘+’ file1 file2 — объединить содержимое file1 и file2 в виде таблицы с разделителем «+»

sort file1 file2 — отсортировать содержимое двух файлов

sort file1 file2 | uniq — отсортировать содержимое двух файлов, не отображая повторов

sort file1 file2 | uniq -u — отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)

sort file1 file2 | uniq -d — отсортировать содержимое двух файлов, отображая только повторяющиеся строки

comm -1 file1 file2 — сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’

comm -2 file1 file2 — сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’

comm -3 file1 file2 — сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

Преобразование наборов символов и файловых форматов
dos2unix filedos.txt fileunix.txt — конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)

unix2dos fileunix.txt filedos.txt — конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)

recode ..HTML < page.txt > page.html — конвертировать содержимое тестового файла page.txt в html-файл page.html

recode -l | more — вывести список доступных форматов

Анализ файловых систем
badblocks -v /dev/hda1 — проверить раздел hda1 на наличие bad-блоков

fsck /dev/hda1 — проверить/восстановить целостность linux-файловой системы раздела hda1

fsck.ext2 /dev/hda1 — проверить/восстановить целостность файловой системы ext2 раздела hda1

e2fsck /dev/hda1

e2fsck -j /dev/hda1 — проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же

fsck.ext3 /dev/hda1 — проверить/восстановить целостность файловой системы ext3 раздела hda1

fsck.vfat /dev/hda1 — проверить/восстановить целостность файловой системы fat раздела hda11

fsck.msdos /dev/hda1

dosfsck /dev/hda1

Форматирование файловых систем
mkfs /dev/hda1 — создать linux-файловую систему на разделе hda1

mke2fs /dev/hda1 — создать файловую систему ext2 на разделе hda1

mke2fs -j /dev/hda1 — создать журналирующую файловую систему ext3 на разделе hda1

mkfs -t vfat 32 -F /dev/hda1 — создать файловую систему FAT32 на разделе hda1

fdformat -n /dev/fd0 — форматирование флоппи-диска без проверки

mkswap /dev/hda3 — создание swap-пространства на разделе hda3

swap-пространство

mkswap /dev/hda3 — создание swap-пространства на разделе hda3

swapon /dev/hda3 — активировать swap-пространство, расположенное на разделе hda3

swapon /dev/hda2 /dev/hdb3 — активировать swap-пространства, расположенные на разделах hda2 и hdb3

Создание резервных копий (backup)
dump -0aj -f /tmp/home0.bak /home — создать полную резервную копию директории /home в файл /tmp/home0.bak

dump -1aj -f /tmp/home0.bak /home — создать инкрементальную резервную копию директории /home в файл /tmp/home0.bak

restore -if /tmp/home0.bak — восстановить из резервной копии /tmp/home0.bak

rsync -rogpav —delete /home /tmp — синхронизировать /tmp с /home

rsync -rogpav -e ssh —delete /home ip_address:/tmp — синхронизировать через SSH-туннель

rsync -az -e ssh —delete ip_addr:/home/public /home/local — синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием

rsync -az -e ssh —delete /home/local ip_addr:/home/public — синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием

dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ — сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель

tar -Puf backup.tar /home/user — создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий

( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ — копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/

( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ — копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home

tar cf — . | (cd /tmp/backup ; tar xf — ) — копирование одной директории в другую с сохранением полномочий и линков

find /home/user1 -name ‘*.txt’ | xargs cp -av —target-directory=/home/backup/ —parents — поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию

find /var/log -name ‘*.log’ | tar cv —files-from=- | bzip2 > log.tar.bz2 — поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них

dd if=/dev/hda of=/dev/fd0 bs=512 count=1 — создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск

dd if=/dev/fd0 of=/dev/hda bs=512 count=1 — восстановить MBR с флоппи-диска на /dev/hda

Сеть (LAN и WiFi)
ifconfig eth0 — показать конфигурацию сетевого интерфейса eth0

ifup eth0 — активировать (поднять) интерфейс eth0

ifdown eth0 — деактивировать (опустить) интерфейс eth0

ifconfig eth0 192.168.1.1 netmask 255.255.255.0 — выставить интерфейсу eth0 ip-адрес и маску подсети

ifconfig eth0 promisc — перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)

ifconfig eth0 -promisc — отключить promiscuous-режим на интерфейсе eth0

dhclient eth0 — активировать интерфейс eth0 в dhcp-режиме.

route -n — вывести локальную таблицу маршрутизации

netstat -rn

route add -net 0/0 gw IP_Gateway — задать ip-адрес шлюза по умолчанию (default gateway)

route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 — добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1

route del 0/0 gw IP_gateway — удалить ip-адрес шлюза по умолчанию (default gateway)

echo «1» > /proc/sys/net/ipv4/ip_forward — разрешить пересылку пакетов (forwarding)

hostname — отобразить имя компьютера

host www.linuxguide.it — разрешить имя www.linuxguide.it хоста в ip-адрес и наоборот

host 62.149.140.85

ip link show — отобразить состояние всех интерфейсов

mii-tool eth0 — отобразить статус и тип соединения для интерфейса eth0

ethtool eth0 — отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения

netstat -tupn — отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения

netstat -tupln — отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты

tcpdump tcp port 80 — отобразить весь трафик на TCP-порт 80 (обычно — HTTP)

iwlist scan — просканировать эфир на предмет, доступности беспроводных точек доступа

iwconfig eth1 — показать конфигурацию беспроводного сетевого интерфейса eth1

Microsoft Windows networks(SAMBA)
nbtscan ip_addr — разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba.

nmblookup -A ip_addr

smbclient -L ip_addr/hostname — отобразить ресурсы, предоставленные в общий доступ на windows-машине

smbget -Rr smb://ip_addr/share — подобно wget может получить файлы с windows-машин через smb-протокол

mount -t smbfs -o username=user,password=pass //winclient/share /mnt/share — смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему

echo — Вывод текста или значений переменных
uname -a — Показать версию ядра Linux;
cat /proc/cpuinfo — Показать информацию о железе
cat /proc/meminfo — Показать расширенную информацию о занимаемой оперативной памяти
ls /dev — Показать все устройства в системе
id — Показывает сводную информацию по текущему пользователю (логин, UID, GID)
cat — Просмотр содержимого файла
strings — Поиск текстовых строк в файле
cut — Удаление определённых секций из каждой строки файла
grep — Поиск подстрок в файлах

ps — Список запущенных процессов
killall имя прцесса — Убить процесс по названию
free — Информации об использовании памяти
fdisk -l Информация о всех подключенных дисках;
blkid — Выводит UUID информацию всех доступных накопителей в системе;
df Показывает свободное и занятое место в разделах;
mkfs.ext4 /dev/sda1 — Форматирует диск sda1 в FS ext4
mount /dev/sda1 /mnt — Монтирует раздел /dev/sda1 к точке монтирования /mnt;
mount — Показывает полную информацию о примонтированных устройствах;
umount /mnt — Отмонтирует раздел от точки монтирования /mnt;
clear — Очистить окно терминала;
reboot — Перезагрузить устройство;
exit — Завершить сеанс;
sleep 10 — Пауза 10 сек
passwd — Меняет пароль текущего пользователя;
date — Показывает текущую дату и время;
pwd — Показывает текущий путь;
ls — Показывает список файлов и каталогов в текущей папке;
mkdir /test — Создание папки с именем test;
rmdir /test — Удаление папки с именем test;
rm -i stats.gif — Удаление файла с именем stats.gif;
touch /tmp/myfile.txt — Создать фаил
chmod 777 /tmp/myfile.txt — Изменить права доступа к файлу
find — Поиск файлов или каталогов find / -name ‘*fil*’ -print
mv — Перемещение и переименовывание файлов
cd /tmp — Перейти в указанную папку;
wget htp://cyber-place.ru/images/misc/stats.gif — Скачать файл в текущую папку
chgrp — Смена группы
chown — Смена владельца файла или каталога
cp — Копирование файлов и каталогов (синтаксис : cp что куда )

stty -F /dev/ttyATH0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts — Изменить параметры UART порта

opkg update – обновляет список пакетов (загружая его из репозитория, указанных в конфигурационном файле);
opkg upgrade – обновляет все установленные пакеты;
opkg install <имя_пакета> – устанавливает пакет (в качестве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);
opkg remove <имя_пакета|регулярно� �_выражение> – удаляет один или несколько пакетов;
opkg list – выводит на экран полный список пакетов;
opkg list-installed – выводит на экран список установленных пакетов.

cat /home/primer- Показать содержимое файла /home/primer ;
vi /folder/filename — открыть файл в редакторе vi
i — включить режим редактирования
[Esc] — выйти из режима редактирования

u — undo (отмена)
CTRL + R — redo

:w [Enter] — сохранить внесенные изменения.

:q [Enter] — выйти без сохранения изменений
:wq [Enter] — сохранить внесенные изменения и выйти.

dd — удалет строку на которой находится курсор
x — удалет символ на котором находится курсов

[y] — копирует строку в буфер
[P] — вставляет скопированную строку после той, на которой в текущий момент находится курсор

echo $REMOTE_ADDR — Посмотреть Ваш IP

This article refers to Smartmontools. You can install it by

opkg update
opkg install smartmontools

To save flash space there is no drivedb included in the OpenWRT package of smartmontools. The automatic update of drive.db described here is missing as well. In case you can affort/waste ~215kB (12-April-2020) you can download the current database from GIT Drivedb.h.
Transfer it via SCP or WinSCP and place it at

mkdir /usr/share/smartmontools
mv drivedb.h /usr/share/smartmontools/drivedb.h

It allows you to monitor the health of an external storage device. This example assumes an SSD mounted at /dev/sda

smartctl -a /dev/sda
 
smartctl 7.0 2018-12-30 r4883 [armv5tel-linux-4.14.162] (localbuild)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Model Family:     Marvell based SanDisk SSDs
Device Model:     SanDisk SSD PLUS 240GB
Serial Number:    1944AA800xxx
LU WWN Device Id: 5 001b44 8b18d5803
Firmware Version: UF2204RL
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3, ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Mon Apr 13 09:28:31 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
...
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       215
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       27
165 Total_Write/Erase_Count 0x0032   100   100   000    Old_age   Always       -       34
166 Min_W/E_Cycle           0x0032   100   100   ---    Old_age   Always       -       1
167 Min_Bad_Block/Die       0x0032   100   100   ---    Old_age   Always       -       10
168 Maximum_Erase_Cycle     0x0032   100   100   ---    Old_age   Always       -       3
169 Total_Bad_Block         0x0032   100   100   ---    Old_age   Always       -       106
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 Avg_Write/Erase_Count   0x0032   100   100   000    Old_age   Always       -       1
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   063   042   000    Old_age   Always       -       37 (Min/Max 15/42)
199 SATA_CRC_Error          0x0032   100   100   ---    Old_age   Always       -       0
230 Perc_Write/Erase_Count  0x0032   100   100   000    Old_age   Always       -       9 20 9
232 Perc_Avail_Resrvd_Space 0x0033   100   100   005    Pre-fail  Always       -       100
233 Total_NAND_Writes_GiB   0x0032   100   100   ---    Old_age   Always       -       136
234 Perc_Write/Erase_Ct_BC  0x0032   100   100   000    Old_age   Always       -       274
241 Total_Writes_GiB        0x0030   100   100   000    Old_age   Offline      -       131
242 Total_Reads_GiB         0x0030   100   100   000    Old_age   Offline      -       190
244 Thermal_Throttle        0x0032   000   100   ---    Old_age   Always       -       0

This article refers to Smartmontools. You can install it by

opkg update
opkg install smartmontools

To save flash space there is no drivedb included in the OpenWRT package of smartmontools. The automatic update of drive.db described here is missing as well. In case you can affort/waste ~215kB (12-April-2020) you can download the current database from GIT Drivedb.h.
Transfer it via SCP or WinSCP and place it at

mkdir /usr/share/smartmontools
mv drivedb.h /usr/share/smartmontools/drivedb.h

It allows you to monitor the health of an external storage device. This example assumes an SSD mounted at /dev/sda

smartctl -a /dev/sda
 
smartctl 7.0 2018-12-30 r4883 [armv5tel-linux-4.14.162] (localbuild)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
 
=== START OF INFORMATION SECTION ===
Model Family:     Marvell based SanDisk SSDs
Device Model:     SanDisk SSD PLUS 240GB
Serial Number:    1944AA800xxx
LU WWN Device Id: 5 001b44 8b18d5803
Firmware Version: UF2204RL
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3, ACS-2 T13/2015-D revision 3
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Mon Apr 13 09:28:31 2020 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
...
SMART Attributes Data Structure revision number: 1
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       215
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       27
165 Total_Write/Erase_Count 0x0032   100   100   000    Old_age   Always       -       34
166 Min_W/E_Cycle           0x0032   100   100   ---    Old_age   Always       -       1
167 Min_Bad_Block/Die       0x0032   100   100   ---    Old_age   Always       -       10
168 Maximum_Erase_Cycle     0x0032   100   100   ---    Old_age   Always       -       3
169 Total_Bad_Block         0x0032   100   100   ---    Old_age   Always       -       106
170 Unknown_Attribute       0x0032   100   100   ---    Old_age   Always       -       0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 Avg_Write/Erase_Count   0x0032   100   100   000    Old_age   Always       -       1
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0032   100   100   ---    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   ---    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   063   042   000    Old_age   Always       -       37 (Min/Max 15/42)
199 SATA_CRC_Error          0x0032   100   100   ---    Old_age   Always       -       0
230 Perc_Write/Erase_Count  0x0032   100   100   000    Old_age   Always       -       9 20 9
232 Perc_Avail_Resrvd_Space 0x0033   100   100   005    Pre-fail  Always       -       100
233 Total_NAND_Writes_GiB   0x0032   100   100   ---    Old_age   Always       -       136
234 Perc_Write/Erase_Ct_BC  0x0032   100   100   000    Old_age   Always       -       274
241 Total_Writes_GiB        0x0030   100   100   000    Old_age   Offline      -       131
242 Total_Reads_GiB         0x0030   100   100   000    Old_age   Offline      -       190
244 Thermal_Throttle        0x0032   000   100   ---    Old_age   Always       -       0

Permalink

Cannot retrieve contributors at this time


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

#!/bin/sh
# Copyright 2010 Vertical Communications
# Copyright 2012 OpenWrt.org
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
fsck_e2fsck() {
set -o pipefail
e2fsck -p «$device« 2>&1 | logger -t «fstab: e2fsck ($device)«
local status=«$?«
set +o pipefail
case «$status« in
0|1) ;; #success
2) reboot;;
4) echo «e2fsck ($device): Warning! Uncorrected errors.«| logger -t fstab
return 1
;;
*) echo «e2fsck ($device): Error $status. Check not complete.«| logger -t fstab;;
esac
return 0
}
fsck_ext2() {
fsck_e2fsck «$@«
}
fsck_ext3() {
fsck_e2fsck «$@«
}
fsck_ext4() {
fsck_e2fsck «$@«
}
append libmount_known_fsck «ext2«
append libmount_known_fsck «ext3«
append libmount_known_fsck «ext4«


0

1

root@OpenWrt:~# smartctl --device=auto -a /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

/dev/sda: Unknown USB bridge [0x14cd:0x6116 (0x200)]
Smartctl: please specify device type with the -d option.

Use smartctl -h to get a usage summary

hdd — WD5000LPVT SATA-II

Так же если есть возможность узнать температуру другим способом, напишите :)

Super Top generic enclosure Cypress 0x14cd:0x6116 Super Top / USB 2.0 SATA BRIDGE -d usbcypress Linux

использование параметра -d usbcypress ведет к:

root@OpenWrt:~# smartctl -d usbcypress -i /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Smartctl: Device Read Identity Failed (not an ATA/ATAPI device)

A mandatory SMART command failed: exiting. To continue, add one or more '-T permissive' options.

Но на здоровье диска проверяет, в чем проблема то?


root@OpenWrt:~# smartctl --device=scsi -H /dev/sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

SMART Health Status: OK

Использование параметра -T permissive приводит к:

root@OpenWrt:/etc/defconfig# smartctl --device=scsi -i -T permissive /dev/
sda
smartctl 5.40 2010-10-16 r3189 [mips-openwrt-linux-gnu] (local build)
Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net

Device: WDC WD50 00LPVX-55V0TT0   Version: 
scsiModePageOffset: response length too short, resp_len=4 offset=4 bd_len=0
>> Terminate command early due to bad response to IEC mode page

Описание часто используемых команд в OpenWrt linux:

echo — Вывод текста или значений переменных
uname -a — Показать версию ядра Linux;
cat /proc/cpuinfo — Показать информацию о железе
cat /proc/meminfo — Показать расширенную информацию о занимаемой оперативной памяти
ls /dev — Показать все устройства в системе
id — Показывает сводную информацию по текущему пользователю (логин, UID, GID)
cat — Просмотр содержимого файла
strings — Поиск текстовых строк в файле
cut — Удаление определённых секций из каждой строки файла
grep — Поиск подстрок в файлах

ps — Список запущенных процессов
killall имя прцесса — Убить процесс по названию
free — Информации об использовании памяти
fdisk -l Информация о всех подключенных дисках;
blkid — Выводит UUID информацию всех доступных накопителей в системе;
df Показывает свободное и занятое место в разделах;
mkfs.ext4 /dev/sda1 — Форматирует диск sda1 в FS ext4
mount /dev/sda1 /mnt — Монтирует раздел /dev/sda1 к точке монтирования /mnt;
mount — Показывает полную информацию о примонтированных устройствах;
umount /mnt — Отмонтирует раздел от точки монтирования /mnt;
clear — Очистить окно терминала;
reboot — Перезагрузить устройство;
exit — Завершить сеанс;
sleep 10 — Пауза 10 сек
passwd — Меняет пароль текущего пользователя;
date — Показывает текущую дату и время;
pwd — Показывает текущий путь;
ls — Показывает список файлов и каталогов в текущей папке;
mkdir /test — Создание папки с именем test;
rmdir /test — Удаление папки с именем test;
rm -i stats.gif — Удаление файла с именем stats.gif;
touch /tmp/myfile.txt — Создать фаил
chmod 777 /tmp/myfile.txt — Изменить права доступа к файлу
find — Поиск файлов или каталогов find / -name ‘*fil*’ -print
mv — Перемещение и переименовывание файлов
cd /tmp — Перейти в указанную папку;
wget htp://cyber-place.ru/images/misc/stats.gif — Скачать файл в текущую папку
chgrp — Смена группы
chown — Смена владельца файла или каталога
cp — Копирование файлов и каталогов (синтаксис : cp что куда )

stty -F /dev/ttyATH0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts — Изменить параметры UART порта

opkg update – обновляет список пакетов (загружая его из репозитория, указанных в конфигурационном файле);
opkg upgrade – обновляет все установленные пакеты;
opkg install <имя_пакета> – устанавливает пакет (в качестве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);
opkg remove <имя_пакета|регулярно� �_выражение> – удаляет один или несколько пакетов;
opkg list – выводит на экран полный список пакетов;
opkg list-installed – выводит на экран список установленных пакетов.

cat /home/primer- Показать содержимое файла /home/primer ;
vi /folder/filename — открыть файл в редакторе vi

i — включить режим редактирования
[Esc] — выйти из режима редактирования

u — undo (отмена)
CTRL + R — redo

:w [Enter] — сохранить внесенные изменения.

:q [Enter] — выйти без сохранения изменений
:wq [Enter] — сохранить внесенные изменения и выйти.

dd — удалет строку на которой находится курсор
x — удалет символ на котором находится курсов

[y] — копирует строку в буфер
[P] — вставляет скопированную строку после той, на которой в текущий момент находится курсор

echo $REMOTE_ADDR — Посмотреть Ваш IP

Когда, при загрузке, операционная система сообщает о наличии ошибок в файловой системе на одном из разделов, то заслуживает незамедлительно сделать в linux проверку диска на ошибки. Любой уважающий себя user не должен забывать, что периодическая проверка жестких дисков на битые сектора и проверка атриторен на ошибки является примером здравого смысла. Для проверки разделов жесткого диска советуем использовать утилиту FSCK (file system consistency check), поскольку утилита FSCK предустановленна на основной массе операционных систем семейства Linux.

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

Содержание статьи

  • 1 Проверка диска на колоченные секторы в linux с помощью badblocks
  • 2 Исправление ошибок файловой системы fsck
  • 3 Проверка диска на битые секторы в linux с поддержкою smartmontools

Проверка диска на колоченные секторы в linux с помощью badblocks

Badblocks — стандартная утилита Linuх для проверки (Тестирование Инвентаризация Допинг-контроль Проверка подлинности Служебная проверка Проверка орфографии Проверка на дорогах Камеральная налоговая проверка Выездная налоговая проверка Проверка) на колоченные секторы. Она устанавливается по-умолчанию практически в любой дистрибутив и с ее помощью можно проверить как твердый диск, так и внешний накопитель. Для начала давайте посмотрим, какие накопители подключены к ушей системе и какие на них имеются разделы. Для этого нам нужна еще одна стандартная утилита Linux — fdisk.

Собрать список битых секторов можно с помощью команды badblocks.
Делается это так:

sudo badblocks -v /dev/hda1 > ~/badblocks.list

Где /dev/hda1 — это разоблачил диска, что вы хотите проверить.

Желательно делать проверку в однопользовательском режиме, когда это не внешний диск. Тогда его просто стоит отмонтировать. После этого мы можем швырнуть утилиту fsck, явно указав ей список битых секторов для того, чтобы она их подметить как «битые» и попыталась восстановить с них данные. Делается это так:

sudo fsck -t ext4 -l ~/badblocks.list /dev/hda1

Где ext4 — это тип файловой системы нашего разоблачила диска, а /dev/hda1 — сам раздел диска.

Естественно, что выполнять команды нужно с правами суперпользователя.

sudo fdisk -l

Метеопараметром -l мы говорим утилите fdisk, что нам нужно показать список разделов и выйти. Теперь, когда мы знаем, какие разделы у нас есть, мы можем проверить их на битые секторы. Для этого мы станем использовать утилиту badblocks следующим образом:

sudo badblocks -v /dev/sda1 > badsectors.txt

Если же в итоге были найдены битые секторы, то нам надо дать указание операционной системе не вписывать в них информацию в будущем. Для этого нам понадобятся утилиты Linux для работы с файловыми системами:

e2fsck. Когда мы будем исправлять раздел с файловыми система Linux ( ext2,ext3,ext4).
fsck. Если мы станем исправлять файловую систему, отличную от ext.

Исправление ошибок файловой системы fsck

В моей а не твоей статье «Проверка файловой системы на ошибки с помощью fsck на Linux» я расскажу как возможно проверить файловую систему на вашей ОС в Linux. Некоторым системам необходим пароль root дабы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В данном случае стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с иного диска. Fsck расшифровывается как «файловая система Проверка целостности» (file system consistency check).

На основной массе систем, Fsck запускается во время загрузки, если определенные условия. Код выхода ворачивается, когда несколько файловых систем которая проверяется побитовое ИЛИ (OR) для каждой файловой системы, какая проверяется. В действительности, Fsck — это просто фронт-энд для различных проверочных утилит для файловых систем (fsck.fstype), какие доступны на Linux. Файловая система (множество элементов, находящихся в отношениях и связях друг с другом, которое образует определённую целостность, единство) для конкретных проверок ищет сначала в /sbin, а потом в /etc/fs и /etc/, и, наконец в директориях, перечисленных в переменной PATH (среда переменного кружения).

Запуск и исполнение FSCK на смонтированной файловой системе может привести к повреждению данных, поэтому применяйте данный материал на свой страх и риск.

Автор не несет ответственности за любой вред, который вы можете причинить. Fsck расшифровывается как «File System ChecK», то есть «испытание файловой системы» и используется для проверки и исправления файловых систем в Linux. В качестве верифицируемой ФС может быть задан раздел (например, /dev/sda1 или /dev/sda8), точка монтирования (/, /home, /usr), или же точна тома или UUID (например, UUID=8868abf6-88c5-4a83-98b8-bfc24057f7bd или LABEL=root).

Как обычно fsck пытается параллельно проверять файловые системы на нескольких разделах для уменьшения времени, нужного для проверки всех файловых систем. Arch Linux при загрузке автоматически будет бросать fsck для проверки систем, если выполняется одно из требований (например, 180 суток работы системы без проверки разделов или 30 монтирований оных). Обычно нет необходимости переопределять проем между проверками.

Для того, чтобы проверить диск в Linux на наличие опечаток файловой системы нам необходимо сначала выяснить имена файловых систем командой:

df -h

Дальше нам необходимо размонтировать файловую систему, которую мы будем проверять командой:

umount /dev/hda1

И сейчас запускаем утилиту проверки файловой системы и исправления ошибок на ней командой

fsck /dev/hda1

В том варианте, когда не представляется возможным размонтировать файловую систему, к примеру, когда нужно испробовать корневую файловую систему (/). Перезагрузиться в однопользовательском режиме (команда reboot, и при загрузке необходимо передать ядру параметр single). Перемонтировать корневую файловую систему в режиме «лишь чтение» командой.

mount -о remount rо -t ext3 /

Здесь параметр -о команды mount указывает на присутствие дополнительных опций. Опция remount rо означает перемонтировать в режиме «только чтение». Метеопараметр -t указывает тип файловой системы – ext3, а последний параметр – указывает что это корневая файловая система (/).

И сейчас проверить файловую систему

fsck -y -f -c /dev/hda1

Проверка диска на битые секторы в linux с поддержкою smartmontools

Теперь давайте рассмотрим более современный и надежный способ проверить диск на колоченные секторы linux. Современные накопители ATA/SATA ,SCSI/SAS,SSD имеют встроенную систему самодисциплины S.M.A.R.T (Self-Monitoring, Analysis and Reporting Technology, Технология самоконтроля, анализа и отчетности), которая изготовляет мониторинг параметров накопителя и поможет определить ухудшение параметров работы накопителя на ранешних стадиях. Для работы со S.M.A.R.T в Linux есть утилита smartmontools. Давайте перейдем к работе с утилитой. Включим следующую команду с параметром -H,чтобы утилита показала нам информацию о состоянии накопителя:

sudo smartctl -H /dev/sda1

Как видим, проверка диска («круглое блюдо») — круг (низкий цилиндр) или предмет в виде круга) на битые секторы linux завершена и утилита говорит нам, что с накопителем все в распорядке! Дополнительно, можно указать следующие параметры -a или —all, чтобы получить еще больше информации о накопителе, или -x и —xall, дабы просмотреть информацию в том числе и об остальных параметрах накопителя.

Подготовка прошивки OpenWRT к подключению USB-диска

Поддержка USB прошивкой OpenWRT

Для поддержки USB-накопителей Вам необходимо либо собрать прошивку с включением следующих пакетов

  • kmod-usb-core
  • kmod-usb-ohci
  • kmod-usb-storage
  • kmod-usb2

либо доустановить их отдельно.

Установка производится через веб-интерфейс на странице Система-Программное обеспечение, либо классическим способом через терминал (telnet/SSH):

opkg update

opkg install kmod-usb-core

opkg install kmod-usb-ohci

opkg install kmod-usb-storage

opkg install kmod-usb2

Есть еще третий способ — запихать поддержку прямо в ядро прошивки, но это в большинстве случаев лишнее.

Поддержка файловых систем прошивкой OpenWRT

OpenWRT, в отличии от своего собрата DD-WRT в теории поддерживает все возможные файловые системы.
Для этого служат пакеты, например:

  • kmod-fs-ext4 — поддержка файловых систем ext2, ext3 и ext4
  • kmod-fs-vfat — поддержка файловой системы fat32

и еще парочка других, но менее востребованных.
Тут всё так же — либо через веб-интерфейс LuCI, либо через терминал,
либо намертво запихать в ядро. Не буду углубляться — разберетесь на
примере предыдущего пункта. всё так же.

Подготовка USB-флешки/диска

Если вы планируете использовать флешку как хранилище для файлов, то, в
принципе, Вам подойдет любая файловая система. Однако будьте осторожны,
в файловой системе Fat32 ограничение по максимальному
размеру файла составляет около 4гб. Этого не всегда достаточно. У
остальных перечисленных файловых систем это ограничение на несколько
порядков выше, что уже не создаст проблем.
Если Вы планируете использовать накопитель как место для установки
дополнительных пакетов (samba, например), то вы должны ограничиться
списком ext2, ext3, ext4. На остальные системы программы просто не установятся.
Как разметить?
Основываясь на личном опыте предлагаю Вам следующую схему. Наиболее оптимальный вариант:
Раздел 1 / тип swap / размер 128 мб — раздел подкачки.
Раздел 2 / тип ext4 / размер 1 гб — раздел для установки пакетов.
Раздел 3 / тип ext4 / размер — вся оставшаяся область на диске — раздел для прочих файлов.

Разметка USB-флешки/диска в Linux

В OpenWRT есть проблема с монтированием дисков в некоторых случаях,
когда они размечены не от имени пользователя root, по-этому используем sudo с флагом -i
Подключаем флешку/диск к компьютеру и приступаем к разметке и форматированию.
У меня флешка подключилась как /dev/sdf

Запустившись fdisk просит Вас ввести команду. Последовательность команд примерно следующая.

  1. o — создаем новую таблицу разделов, удалив всё что было
  2. n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 128мб — +128M
  3. n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G
  4. n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию
  5. w — сохраняем изменения

Создание файловых систем на USB-флешке/диске

Сначала завершим создание раздела подкачки:

Теперь создадим файловые системы ext4 на втором и третьем разделе на флешке:

sudo -i mkfs.ext2 /dev/sdf2

sudo -i mkfs.ext4 /dev/sdf3

Ждем завершение процедуры форматирования и подключаем USB-носитель к роутеру.

Подготовка OpenWRT к работе с USB-носителями

Для монтирования USB-флешек и USB-жестких дисков в OpenWRT необходимо выполнить три условия

  1. Поддержка USB устройств ядром
  2. Поддержка файловых систем ядром
  3. Установлен пакет block-mount

О первых двух пунктах было сказано в начале статьи. По поводу третьего — всё просто:

opkg update

opkg install block-mount

Монтирование USB-флешек/дисков в OpenWRT

Монтировать можно через WEB-интерфейс LuCI, однако это скучно, неинтересно и, на данный момент, не дает всех возможностей.
Дело в том, что с недавнего момента логика монтирования в overlay поменялась, а LuCI до сих пор поддерживает старый стандарт.
Я Вам поведаю о монтирование через терминал.
Итак, подключаемся к устройству через SSH или Telnet и приступаем.

Настройка fstab в OpenWRT

Настройки fstab в OpenWRT хранятся в файле /etc/config/fstab и, в отличии от десктопного Linux, придерживаются стандарта uci. Однако сложного в них ничего нет.
Чтобы не создавать файл с нуля — воспользуемся утилитой block detect

block detect >> /etc/config/fstab

Посмотрим, что у нас создалось по умолчанию:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

config 'global'

        option  anon_swap       '0'

        option  anon_mount      '0'

        option  auto_swap       '1'

        option  auto_mount      '1'

        option  delay_root      '5'

        option  check_fs        '0'

config 'swap'

        option  device  '/dev/sda1'

        option  enabled '0'

config 'mount'

        option  target  '/mnt/sda2'

        option  uuid    '25f9a5d2-8743-4fe0-b91c-c1088887b637'

        option  enabled '0'

config 'mount'

        option  target  '/mnt/sda3'

        option  uuid    '7725b029-51ea-44e6-898f-2987e9b9bbd8'

        option  enabled '0'

Для начала включим автомонтирование swap-раздела на USB-HDD/USB-флешке.
Для этого в блоке global присвоим опции auto_swap значение 1.
А так же в блоке swap опции enabled значение 1.

1

2

3

4

5

6

config 'global'

        option  auto_swap       '1'

config 'swap'

        option  device  '/dev/sda1'

        option  enabled '1'

Далее настроим монтирование остальных разделов.
Второй раздел — в точку монтирования /overlay, для расширения памяти устройства для установки пакетов и прочих манипуляций.
Третий раздел — в точку монтирования /mnt/usb (вместо usb может быть что угодно, называйте как хотите), для хранения ваших файлов.
Для этого в файл fstab вносим следующие правки

1

2

3

4

5

6

7

8

9

10

11

12

13

config 'global'

        option  auto_mount      '1'

        option  delay_root      '5'

config 'mount'

        option  target  '/overlay'

        option  uuid    '25f9a5d2-8743-4fe0-b91c-c1088887b637'

        option  enabled '1'

config 'mount'

        option  target  '/mnt/usb'

        option  uuid    '7725b029-51ea-44e6-898f-2987e9b9bbd8'

        option  enabled '1'

Сохраняем файл, но пока перезагружаться рано. Надо подготовить overlay-раздел на флешке.

Подготовка overlay-раздела на USB-диске

Итак, мы будем использовать второй раздел на нашем USB-диске/флешке.
Для этого монтируем раздел во временный каталог

mkdir /mnt/sda2

mount /dev/sda2 /mnt/sda2

Переносим содержимое каталога /overlay на подготавливаемый раздел

tar -C /overlay -cvf - . | tar -C /mnt/sda2 -xf -

И теперь можем смело перезагружаться.

Проверка результатов работы fstab

Если вы настроили всё верно, то команда df -h должна выдать примерно следующие результаты

df -h

Filesystem                Size      Used Available Use% Mounted on

rootfs                  975.9M      1.4M    907.3M   0% /

/dev/root                 5.5M      5.5M         0 100% /rom

tmpfs                    14.4M    244.0K     14.2M   2% /tmp

/dev/sda2               975.9M      1.4M    907.3M   0% /overlay

overlayfs:/overlay      975.9M      1.4M    907.3M   0% /

tmpfs                   512.0K         0    512.0K   0% /dev

/dev/sda3                 6.2G     14.4M      5.8G   0% /mnt/usb

Список пакетов, которые следует установить дополнительно

для помощи хакерам хотящим взломать ваш роутер

облегчения настройки маршрутизатора:)

пакет

утилиты

имя

назначение

имя

назначение

usbutils просмотр доступных устройств usb
usbreset сброс конкретного устройства usb
wireless-tools iwconfig настройка wifi
 iwlist получение дополнительной информации о состоянии wifi
iwpriv настройка параметров wifi зависящих от драйвера
iwinfo получение информации о wifi из разных мест
kmod-nls-cp1251 поддержка кодовой страницы windows
kmod-nls-cp866 поддержка кодовой страницы dos
kmod-nls-koi8r поддержка кодовой страницы кои8р
kmod-nls-utf8 поддержка unicode
wput передача файлов с роутера
joe редактор с командами похожий на DOSовские
kmod-fs-msdos поддержка fat (диски DOS)
kmod-fs-ntfs поддержка NTFS (дисков windows NT/XP)
kmod-fs-vfat поддержка VFAT (дисков windows 98/ME)
dosfsck проверка разделов DOS на ошибки dosfsck
fsck.msdos
fsck.vfat  
mkdosfs форматирование раздела DOS mkdosfs  
mkfs.msdos  
mkfs.vfat  
dosfslabel просмотр или изменение метки раздела DOS
ntfs-3g драйвер ntfs с возможностью записи ntfs.probe пробное монтирование раздела NTFS
ntfs-3g монтирование ntfs раздела
ntfs-3g-utils команды манипуляции разделами ntfs lowntfs-3g драйвер ntfs без поддержки альтернативных потоков
ntfs-3g-secaudit вывод сведений о правах доступа и их проверка
ntfs-3g-usermap создает карту соответствий аккаунтов windows пользователям openwrt
ntfscat команда cat для файлов на разделе ntfs
ntfscluster показывает имена файлов размещенных на указанном фрагменте ntfs раздела
ntfscmp сравнение разделов ntfs 
ntfsfix проверка ntfs раздела 
ntfsinfo показывает атрибуты файлов на разделе ntfs полностью
ntfsls показ содержимого каталога 
ntfsprogs_ntfs-3g расширенные команды ntfs, для установки совместно с ntfs-3g-utils необходимо в каталоге /usr/bin удалить файлы: ntfscmp, ntfsinfo, ntfscluster, ntfscat, ntfsls, ntfsfix. mkfs.ntfs создание/форматирование ntfs раздела
ntfscat команда cat для файлов на разделе ntfs
ntfscluster показывает имена файлов размещенных на указанном фрагменте ntfs раздела
ntfscmp сравнение разделов ntfs 
ntfsfix проверка ntfs раздела 
ntfsinfo показывает атрибуты файлов на разделе ntfs полностью
ntfsls показ содержимого каталога 
mkntfs форматирование раздела ntfs
ntfsclone копирование раздела ntfs
ntfscp сравнение разделов ntfs
ntfslabel просмотр или изменение метки раздела ntfs
ntfsresize изменение размера раздела ntfs
ntfsundelete восстановление файлов на разделе ntfs
e2fsprogs программы работы с разделами linux e2fsck  проверка разделов linux 
mke2fs создание разделов ext2/ext3/ext4 
resize2fs изменение размера раздела linux без потери данных 
tune2fs Изменение размера резервируемого пространства или подключение/отключение журнала на разделах linux.

Для повышения надежности, после ее установки лучше выполнить команды.
tune2fs -O dir_index, filetype, flex_bg,  has_journal, resize_inode, mmp, uninit_bg

uci set fstab.@mount[0].fstype=ext4

uci commit fstab

sync

mkdir /tmp/OnBoardOverlay

mount -t jffs2 /dev/mtdblock3 /tmp/OnBoardOverlay

cp /etc/config/fstab /tmp/OnBoard/etc/config

sync

umount /tmp/OnBoard/Overlay

rmdir /tmp/OnBoardOverlay

/etc/init.d/fstab restart

cfdisk fdisk с псевдографическим интерфейсом
mc Norton Commander для linux 
htop псевдографический просмотр запущенных процессов 
diffutils команды сравнения файлов cmp  побайтное сравнение файлов
diff построчное сравнение файлов 
diff3 построчное сравнение трех файлов
sdif обработка результата работы команды diff 
unrar распаковка архивов rar 
unzip распаковка архивов zip  funzip распаковка из stdin в stdout
unzip распаковка, проверка и листинг архива
unzipsfx создание sfx архива из zip файла
zipgrep проверка содержимого архива на совпадение со строкой поиска 
zipinfo показ информации об архиве и упаковщике его создавшем
gzip работа с архивами gz/z gunzip распаковка файла
gzip упаковка файла
zcat распаковка файла с выводом его содержимого на экран
bzip2 упаковщик и распаковщик bz2
tar объединение нескольких файлов в один или восстановление из файла tar файлов
getopt расширение «батников»: разбор командной строки
gawk GNU awk gawk awk
grcat дамп базы данных групп
igawk awk с командой «@include»
pgawk команда «awk —profile»
pwcat слияние базы паролей
dialog диалоги для shell скриптов
rename переименование группы файлов
less расширенное  more  less  
ldd показывает требуемые для запуска динамические библиотеки
iconv преобразование кодировки текстового файла
psmisc манипулирование содержимом /proc    pstree просмотр дерева процессов 
prtstat вывод статистики процессов 
killall уничтожение процессов по имени 
fuser показ какой процесс открыл файл
memtester проверка ОЗУ 
md5deep вычисление контрольных сумм хэшов).  hashdeep  проверка файлов и каталогов на совпадение с хэшем
md5deep вычисление/сревнение md5 
sha1deep вычисление/сравнение sha-1
sha256deep вычисление/сравнение sha-256
tigerdeep вычисление/сравнение tiger 
whirlpooldeep вычисление/сравнение whirlpool
lsof показывает список открытых файлов (List Open Files)
screen создание виртуальных консолей, необходимо для выполнения резидентов.
Для показа как вызвать справку и номеров открытых окон, надо добавить следующие строки в файл /etc/screenrc

hardstatus off
hardstatus alwayslastline
hardstatus string ‘Ctr+a-? — help | %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<‘

bash стандартный командный интерпретатор linux
luci Web морда роутора. После установки необходимо выполнить две команды:
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable
luci-i18n-russian русификатор luci

Для их установки создал такой скрипт
#!/bin/ash
#*************************************************************
#* скрипт установки дополнительных программ и преобразования *
#* раздела /overlay с ext2 в ext4                            *
#* 30 декабря 2013 года, zepete.livejournal.com              *
#*************************************************************
if ! lsblk | grep -E "sd[[:lower:]][[:digit:]]+ +[[:digit:]]+:[[:digit:]]+
 +1 +[[:digit:]]+[.]{0,1}[[:digit:]]*[KMG] +0 +part /overlay" > /dev/null
then
 echo '***************************************************'
 echo '* ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR *'
 echo '*               No external overlay               *'
 echo '***************************************************'
 exit 1
fi
if ! opkg update > /dev/null
then
echo '***************************************************'
echo '* ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR *'
echo '* Error opkg update                               *'
echo '***************************************************'
exit 1
fi
overlay=$(df | awk '$6=="/overlay"{print $1}')
if [ -z $overlay ]
then
echo '***************************************************'
echo '* ERROR ERROR ERROR ERROR ERROR ERROR ERROR ERROR *'
echo '* Can not get name overlay partition              *'
echo '***************************************************'
exit 1
fi
opkg install tune2fs
tune2fs -j $overlay
tune2fs -O extents,dir_index,filetype,
flex_bg,mmp,uninit_bg $overlay
uci set fstab.@mount[0].fstype=ext4
uci set fstab.@mount[0].enabled_fsck=1
uci commit fstab
sync
mkdir /tmp/OnBoardOverlay
mount -t jffs2 /dev/mtdblock3 /tmp/OnBoardOverlay
cp /etc/config/fstab /tmp/OnBoardOverlay/etc/config
sync
umount /tmp/OnBoardOverlay
rmdir /tmp/OnBoardOverlay
opkg install usbutils usbreset wireless-tools iwinfo
opkg install kmod-nls-cp1251 kmod-nls-cp866 kmod-nls-koi8r kmod-nls-utf8
opkg install wput joe kmod-fs-msdos kmod-fs-ntfs kmod-fs-vfat
opkg install dosfsck mkdosfs dosfslabel ntfs-3g ntfsprogs
rm -f /usr/bin/ntfscmp  /usr/bin/ntfsinfo /usr/bin/ntfscluster
rm -f /usr/bin/ntfscat /usr/bin/ntfsls /usr/bin/ntfsfix
opkg install e2fsprogs ntfsprogs_ntfs-3g resize2fs
opkg install cfdisk mc htop diffutils unrar
opkg install unzip gzip bzip2 tar getopt gawk dialog rename less ldd iconv psmisc memtester
opkg install md5deep lsof screen bash luci luci-i18n-russian
echo 'hardstatus off'>>/etc/screenrc
echo 'hardstatus alwayslastline'>>/etc/screenrc
echo "hardstatus string 'Ctr+a-? - help | %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<'" >> /etc/screenrc
/etc/init.d/uhttpd enable
sync
reboot

Table of Contents

Please see the flash.layout.

Being able to add storage to an OpenWrt system can be a very valuable option, because of the usually limited amount of flash on embedded devices. Having ample storage for applications and other data can therefore greatly expand OpenWrt functionality. For example you can turn your device into a full NAS by adding a hard drive for storing media files. You can also add storage to increase the available storage for the root file system in an overlay configuration by employing extroot.

Before the system can find your device it has to be properly recognised, which is done by installing the correct drivers for the device. For most devices the connection will be through USB, so you first have to install USB support and then provide storage support over USB. Other devices are possible too, like SATA, IDE and flash memory cards, see sata.essentials, ide.essentials and cf.essentials, respectively. This article will assume that your storage device is already installed correctly with the correct drivers and ready for use.

After installing the drivers for a device it can be encrypted (optional) then has to be partitioned and formatted with a File system (e.g. ext4, FAT) before data can be addressed as files and mounted by the OS. The usual Linux tools can be used to achieve these tasks from within OpenWrt. Certain packages are necessary for specific file system support and other packages facilitate more advanced functionality. This article explains the specifics and caveats of working with storage devices in OpenWrt and provides examples.

Partitioning

Partitioning means to write a partition table to the device, which defines which parts of the available space on the device belongs to which partition, each of which can have its own file system. Most commonly used partition tables are the Master Boot Record (MBR) and the GUID Partition Table (GPT). The latter is more modern and supports larger disks and more partitions. A device can also be used without a partition table, in which case there is only one file system on the device.

You can partition your device before connecting it to your OpenWrt powered device (e.g. on a PC), which may provide a wider range of options, like GPT support. You can then also format any partitions before attaching your device. However, there are packages in the OpenWrt repositories with which you can partition your devices:

  • fdisk is the standard tool to partition drives in Linux. for help with partitioning see TLDP)

  • cfdisk is a curses-based program for partitioning drives. Similar to fdisk, but provides a convenient menu based interface.

  • sfdisk is an alternative to list the size of a partition, list the partitions on a device, check the partitions on a device and repartition a device.

All these utilities support MBR based partition tables only. Currently there are no tools in the default OPKG repository to create and partition GPT based devices. The Linux tools parted and gdisk have not yet been included. Note that while it cannot create GPT tables, there is full support for GPT disks in the OpenWrt kernel, so prepartitioned drives with GPT will work. Also note that if you want to erase a GPT partition table and clear the device to start over with a MBR partition table you have to delete the backup copies of the table that GPT defines, usually also at the end of the device. Since there is no true GPT tool for this in the repository yet, you can erase the tables with the dd tool. This is a parted makefile for OpenWrt that someone provides. After adding dependencies for libblkid and libuuid the package builds fine. Maybe someone should send a patch to the devel-mailinglist.

Upon having your device partitioned, its partitions should be available as ‘Device files’ under /dev/. For example /dev/sda as the device, with /dev/sda1, /dev/sda2, … , the partitions. Or, in case it is not partitioned with a partition table and it has a single file system, it may be directly accessible under e.g. /dev/sda. Subsequent devices you add will be /dev/sdb, /dev/sdc and so on. These ‘device files’ can now be formatted (see below).

:!: Windows can only detect *one* partition on removable drives.

Formatting Filesystems

Available file systems and their packages can be listed with opkg update; opkg list "kmod-fs*". These are kernel packages that provide necessary kernel support for reading and writing these file systems. The following table lists these file system kernel packages.

Name Description
kmod-fs-autofs4 Kernel module for AutoFS4 support
kmod-fs-btrfs Kernel module for Btrfs support
kmod-fs-cifs Kernel module for CIFS support
kmod-fs-exportfs Kernel module for exportfs. Needed for some other modules.
kmod-fs-ext4 Kernel module for ext2, ext3 and ext4 filesystem support1)
kmod-fs-f2fs Kernel module for F2FS (FLASH-friendly file system)
kmod-fs-hfs Kernel module for HFS filesystem support
kmod-fs-hfsplus Kernel module for HFS+ filesystem support
kmod-fs-isofs Kernel module for ISO9660 filesystem support
kmod-fs-minix Kernel module for MINIX file system support
kmod-fs-msdos Kernel module for MSDOS filesystem support
kmod-fs-nfs Kernel module for NFS support
kmod-fs-nfs-common Common NFS filesystem modules
kmod-fs-nfsd Kernel module for NFS kernel server support
kmod-fs-ntfs Kernel module for NTFS read only filesystem support
kmod-fs-reiserfs Kernel module for ReiserFS support
kmod-fs-udf Kernel module for UDF filesystem support
kmod-fs-vfat Kernel module for VFAT filesystem support
kmod-fs-xfs Kernel module for XFS support

The choice of file system is dependent on several factors: performance, compatibility with other systems, functionality such as compression and journaling, security, etc. The remarks below are important to keep in mind when choosing your file system.

OpenWrt-Forum: Benchmarks with different filesystems

We recommend the file systems ext2, ext3, or ext4 (all supported by kmod-fs-ext4) [sometimes kmod-fs-ext4 handle only with ext4!]
As of r26645 the modules for ext2 and ext3 (kmod-fs-ext2 and kmod-fs-ext3) are no longer available. You can use the module for ext4 kmod-fs-ext4 to mount ext2/ext3 as well, but then you have to mount your ext2 or ext3 partition like ext4 partition: mount -t ext4 /dev/sda1 /mnt/share -o rw,sync
If you are planning on sharing your USB storage with Samba, and/or using it to share large multimedia content over UPnP, e.g. with ushare, you should use ext3 or ext4 rather than ext2. Default Ext2 partitions will be limited to files of no more than 4 Gb, but this restriction is eliminated with the newer filesystems. To retain good performance with the newer filesystems, particularly on flash USB storage, you should also consider disabling journaling with the «-O ^has_journal» when using mkfs.ext4 to format the filesystem. Also for ext4, the «extent» formatting option (e.g. «-O ^has_journal,extent«) will make filesystem access to large files more performant.
With Ext2Fsd you obtain read/write access to ext2 ext3 and ext4 filesystems in Microsoft Windows. Native Linux file systems like ext2 or ext3 are the first choice when working with Linux. Don’t bother with NTFS, VFAT and the like. They all have some quirks we could do without.
We do NOT recommend using NTFS. While it is possible, it has serious performance issues under Linux.
If, for whatever reasons, you insist to utilize NTFS as file system, you may find Writable NTFS helpful.

Available NLS files

For some filesystems, like for VFAT, you need to additionally install language packages (codepages / charsets) to handle the filenames. If your mount fails, look in dmesg — a message like

FAT: codepage cp437 not found

means that you need NLS codepage 437, and a message like

FAT: IO charset iso8859-1 not found

means that you need NLS ISO 8859-1.

***''kmod-nls-base''** Kernel module for NLS (Native Language Support)

Available NLS files and their packages can be listed with opkg update; opkg list "kmod-nls*".

Name Description
kmod-nls-cp1250 Kernel module for NLS Codepage 1250 (Eastern Europe)
kmod-nls-cp1251 Kernel module for NLS Codepage 1251 (Russian)
kmod-nls-cp437 Kernel module for NLS Codepage 437 (United States, Canada)
kmod-nls-cp775 Kernel module for NLS Codepage 775 (Baltic Rim)
kmod-nls-cp850 Kernel module for NLS Codepage 850 (Europe)
kmod-nls-cp852 Kernel module for NLS Codepage 852 (Europe)
kmod-nls-cp866 Kernel module for NLS Codepage 866 (Cyrillic)
kmod-nls-iso8859-1 Kernel module for NLS ISO 8859-1 (Latin 1)
kmod-nls-iso8859-13 Kernel module for NLS ISO 8859-13 (Latin 7; Baltic)
kmod-nls-iso8859-15 Kernel module for NLS ISO 8859-15 (Latin 9)
kmod-nls-iso8859-2 Kernel module for NLS ISO 8859-2 (Latin 2)
kmod-nls-koi8r Kernel module for NLS KOI8-R (Russian)
kmod-nls-utf8 Kernel module for NLS UTF-8

Formatting and File System Checking from within OpenWrt

The package e2fsprogs contains the essential ext2/3/4 filesystem utilities e2fsck, mke2fs, debugfs, dumpe2fs and tune2fs, and also most of the other core ext2/3/4 filesystem utilities available. For help with formatting see TLDP. Also see this page and the official page for more information on e2fsprogs.

Example

As an example, for a device situated at /dev/sda, to format its second partition /dev/sda2 with the ext4 file system you can run

  mkfs.ext4 /dev/sda2

:!: Note: When doing this, there will be no warning before execution and a new empty ext4 file system will be written to /dev/sda2 immediately, using a quick format. Any data on the partition cannot be easily retrieved or is lost. Make sure that you enter the correct device file and partition as an argument for the formatting tool.

File System Checking

Automatic Mount on Boot

:!: see block_mount

It is convenient to be able to mount your file systems on boot. The package block-mount will take care of this and also enable automatic mount when device is plugged in through use of ubox. As is typical in Linux, this is handled with Fstab Configuration. OpenWrt provides UCI configuration of Fstab. The configuration file is /etc/config/fstab.

For a technical background in which Fstab works, see block_mount. Note the information box below mentioning the new block-mount packages which works in conjunction with ubox.

Example settings in fstab for mounting to /mnt/share with automatic detection of the file system:


config 'mount'
option 'device' '/dev/sda1'
option 'options' 'rw,sync'
option 'enabled_fsck' '0'
option 'enabled' '1'
option 'target' '/mnt/share'

:!: Note: Although considered safer the option «sync» may severely affect write performance especially on slow access media (e.g. hard disks). You may want to consider to use «async» instead.

And to make the fstab settings effective in current session run:

/etc/init.d/fstab start

To make the fstab settings effective after every reboot run:

/etc/init.d/fstab enable

:!: Note: If you are having trouble with fstab, see fstab troubleshooting.

UCI CLI commands:

/etc/init.d/fstab stop
uci add fstab mount
uci set fstab.@mount[-1].device=/dev/sda1
uci set fstab.@mount[-1].options=rw,sync
uci set fstab.@mount[-1].enabled_fsck=0
uci set fstab.@mount[-1].enabled=1
uci set fstab.@mount[-1].target=/mnt/share
uci commit fstab
/etc/init.d/fstab start

Delete with UCI CLI commands:

/etc/init.d/fstab stop
uci delete fstab.@mount[0]
uci commit fstab
/etc/init.d/fstab start

Mounting

There is no additional configuration needed for mounting your file system when the device is properly configured. Mounting works as is typical in Linux. Read the manual page for mount. Pay special attention to the options.

You can only mount a partition to an existing directory. You can create it with mkdir, for example:

mkdir -p /mnt/shares

To manually mount a partition, assuming that the second partition /dev/sda2 on the device /dev/sda is formatted with an ext4 file system, use:

mount -t ext4 /dev/sda2 /mnt/shares 

The device can now be accessed at /mnt/shares. Note that the -t ext4 option is not strictly necessary as the file system is usually automatically detected.

To check if mounting was successful use df:

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                   28.8M      4.5M     24.3M  16% /
/dev/root                 2.0M      2.0M         0 100% /rom
tmpfs                    61.8M    400.0K     61.4M   1% /tmp
/dev/mtdblock5           28.8M      4.5M     24.3M  16% /overlay
overlayfs:/overlay       28.8M      4.5M     24.3M  16% /
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda2                18.7G     67.6M     13.9G   0% /mnt/shares

The device is listed here with its mount point in the last line. You can also run mount without arguments to list all mount points.

To unmount:

umount /mnt/shares

To mount a swap partition, assuming that the first partition on the /dev/sda device is linux swap space:

swapon /dev/sda1

In case /dev/sda1 is not swap space yet, you can run

mkswap /dev/sda1

You can check swap functionality and status with the free command. You can also check its status using top or htop (installable package).

To unmount a swap partition:

swapoff /dev/sda1

Usually the devices that you use are block devices. In OpenWrt, extra utilities for block devices such as automatic mounting are provided with a collection of tools for block devices, see also below.

Advanced Topics

  • Use extroot. This will allow you to use your device as a root, by using it in an overlay configuration over the original root.

  • Once you successfully mounted your partition, you may want to install packages onto it. Please see Installation.Destination for that.

Automatic spin down an attached hard disk

If you have attached an external hard disk (e.g. through the USB port) and you don’t use the disk all the time, you may want to spin down the disk after some time. One possible reason for this is to reduce the noise. A second reason is that some fanless external racks can get very hot and this is not healthy for the disk.

Unfortunately there is no solution that works always for everybody. The first option to try is provided by the package »hd-idle», which will spin down any disk accessible via the SCSI layer. Install it and test if it can spindown the hard disk (let us assume that your disk is /dev/sda):

opkg install hd-idle
hd-idle -t sda

If you can hear the disk spins down, then you can configure the package, the configuration is in /etc/config/hd-idle.

If hd-idle doesn’t work, then the next option to try is hdparm:

opkg install hdparm
hdparm -y /dev/sda

If you hear the disk spins down, then create a script /etc/spindown with the following contents:

#!/bin/sh

oldstate=''
n="$2"
while :; do
	sleep 60
	newstate=$(grep "" /proc/diskstats) 
	if [ "$newstate" = "$oldstate" ]; then
		n=$(($n - 1))
		[ "$n" != 0 ] || hdparm -y /dev/""
	else
		n="$2"
		oldstate=$newstate
	fi
done &

Then add to /etc/rc.local the following command (assuming your disk is /dev/sda and you want to spin it down after 20 minutes of inactivity):

/etc/spindown sda 20

A much easier way is this: if the above command hdparm -y /dev/sda works, insert the following command to /etc/rc.local:

hdparm -S 240 /dev/sda

The setting 240 equals 20 mins, the time coding can be checked on the »hdparm man page».

The third option to try is the package sdparm:

opkg install sdparm
sdparm -f -C stop /dev/sda

If you hear the disk spins down, use the script /etc/spindown as in the case of hdparm, however replace the line

[ "$n" != 0 ] || hdparm -y /dev/""

with the line

[ "$n" != 0 ] || sdparm -f -C stop /dev/""

Virtual Disk

Now let’s do a virtual disk. You need an additional package.

 
opkg update
opkg install kmod-fs-ext3 kmod-loop e2fsprogs
insmod ext3
insmod loop

Then, create, and format the disk:

dd if=/dev/zero of=/mnt/hdd/owrt_loop bs=1M count=128
mke2fs -j -F -b 1024 /mnt/hdd/owrt_loop

To be able to use, plug-in for OpenWrt:

mkdir /mnt/loopdisk
mount -o loop /mnt/hdd/owrt_loop /mnt/loopdisk

Now our system is not only the OpenWrt xMB, but x+128 MB

If you want to install packages into this virtual disk, see:
opkg installation destinations

Troubleshooting

I have problems with FAT or NTFS file systems

There are numerous things that go wrong with file systems not made for Linux. ext2, ext3 or ext4 file systems are therefore preferred.

Regarding vfat mounts write access

Mount vfat fs with these options if you have problems writing to it

umask=000,dmask=000,fmask=000,uid=65534,gid=65534

kmod-fs-ext4 won’t mount ext2 or ext3 partition

Symptoms: You are trying to mount ext2 or ext3 partition and you have installed only kmod-fs-ext4. Neither mount command nor fstab works. The kmod-fs-ext4 issue definitely applies to Backfire, but is not an issue for Attitude Adjustment (tested on Attitude Adjustment RC1).

Solution a): you have to make sure that you are trying to mount the ext2 or ext3 partition like it was ext4 partition. Example /etc/config/fstab config and mount command follows:

config mount
option target /mnt
option device /dev/sda1 # sda1 is ext3 partition
option fstype ext4 # but is mounted as ext4, since we have installed kmod-fs-ext4 only
option options rw,sync
option enabled 1
option enabled_fsck 1

mount -t ext4 /dev/sda1 /mnt -o rw,sync

Solution b): install kmod-fs-ext3 or kmod-fs-ext2 filesystem.

opkg update
opkg install kmod-fs-ext3

:!: This only applies to Backfire

Solution c): just set ext4 on usb/drive etc.

:!: This problem occured for me in ATTITUDE ADJUSTMENT (12.09, r36088) when I had problem with mount ext3 with kmod-fs-ext4 (in addition I had also problem with install kmod-fs-ext3).

Other Useful Packages

  • swap-utils This package contains a collection of tools for managing swap space: mkswap, swapon and swapoff. FIXME This package exists, but swapon and swapoff seem to be just built into Busybox. Can someone explain this here?

  • blkid Command-line utility to locate/print block device attributes.

  • dd A bit-stream duplicator to write directly to block devices.

Filesystems not in OpenWrt

Notes

:!: Note: If you are having trouble using storage on a Huawei 3G dongle, you should read the following ticket:Mass storage missing from 3G dongle

Описание часто используемых команд в OpenWrt linux:

echo — Вывод текста или значений переменных
uname -a — Показать версию ядра Linux;
cat /proc/cpuinfo — Показать информацию о железе
cat /proc/meminfo — Показать расширенную информацию о занимаемой оперативной памяти
ls /dev — Показать все устройства в системе
id — Показывает сводную информацию по текущему пользователю (логин, UID, GID)
cat — Просмотр содержимого файла
strings — Поиск текстовых строк в файле
cut — Удаление определённых секций из каждой строки файла
grep — Поиск подстрок в файлах

ps — Список запущенных процессов
killall имя прцесса — Убить процесс по названию
free — Информации об использовании памяти
fdisk -l Информация о всех подключенных дисках;
blkid — Выводит UUID информацию всех доступных накопителей в системе;
df Показывает свободное и занятое место в разделах;
mkfs.ext4 /dev/sda1 — Форматирует диск sda1 в FS ext4
mount /dev/sda1 /mnt — Монтирует раздел /dev/sda1 к точке монтирования /mnt;
mount — Показывает полную информацию о примонтированных устройствах;
umount /mnt — Отмонтирует раздел от точки монтирования /mnt;
clear — Очистить окно терминала;
reboot — Перезагрузить устройство;
exit — Завершить сеанс;
sleep 10 — Пауза 10 сек
passwd — Меняет пароль текущего пользователя;
date — Показывает текущую дату и время;
pwd — Показывает текущий путь;
ls — Показывает список файлов и каталогов в текущей папке;
mkdir /test — Создание папки с именем test;
rmdir /test — Удаление папки с именем test;
rm -i stats.gif — Удаление файла с именем stats.gif;
touch /tmp/myfile.txt — Создать фаил
chmod 777 /tmp/myfile.txt — Изменить права доступа к файлу
find — Поиск файлов или каталогов find / -name ‘*fil*’ -print
mv — Перемещение и переименовывание файлов
cd /tmp — Перейти в указанную папку;
wget htp://cyber-place.ru/images/misc/stats.gif — Скачать файл в текущую папку
chgrp — Смена группы
chown — Смена владельца файла или каталога
cp — Копирование файлов и каталогов (синтаксис : cp что куда )

stty -F /dev/ttyATH0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts — Изменить параметры UART порта

opkg update – обновляет список пакетов (загружая его из репозитория, указанных в конфигурационном файле);
opkg upgrade – обновляет все установленные пакеты;
opkg install <имя_пакета> – устанавливает пакет (в качестве параметра может принимать имя пакета, а также путь или HTTP URL, указывающий на файл пакета);
opkg remove <имя_пакета|регулярно� �_выражение> – удаляет один или несколько пакетов;
opkg list – выводит на экран полный список пакетов;
opkg list-installed – выводит на экран список установленных пакетов.

cat /home/primer- Показать содержимое файла /home/primer ;
vi /folder/filename — открыть файл в редакторе vi

i — включить режим редактирования
[Esc] — выйти из режима редактирования

u — undo (отмена)
CTRL + R — redo

:w [Enter] — сохранить внесенные изменения.

:q [Enter] — выйти без сохранения изменений
:wq [Enter] — сохранить внесенные изменения и выйти.

dd — удалет строку на которой находится курсор
x — удалет символ на котором находится курсов

[y] — копирует строку в буфер
[P] — вставляет скопированную строку после той, на которой в текущий момент находится курсор

echo $REMOTE_ADDR — Посмотреть Ваш IP

Понравилась статья? Поделить с друзьями:
  • Ora 20999 описание ошибки
  • Ora 20500 ошибка
  • Opera gx прервано ошибка загрузки
  • Ora 20103 ошибка
  • Ora 20001 ошибка oracle