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 просит Вас ввести команду. Последовательность команд примерно следующая.
- o — создаем новую таблицу разделов, удалив всё что было
- n — создаем первый раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 128мб — +128M
- n — создаем второй раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор смещен на 1Гб — +1G
- n — создаем третий раздел. тип primary — p, номер раздела — по умолчанию, первый сектор — по умолчанию, последний сектор — по умолчанию
- w — сохраняем изменения
Создание файловых систем на USB-флешке/диске
Сначала завершим создание раздела подкачки:
Теперь создадим файловые системы ext4 на втором и третьем разделе на флешке:
sudo
-i mkfs.ext2
/dev/sdf2
sudo
-i mkfs.ext4
/dev/sdf3
Ждем завершение процедуры форматирования и подключаем USB-носитель к роутеру.
Подготовка OpenWRT к работе с USB-носителями
Для монтирования USB-флешек и USB-жестких дисков в OpenWRT необходимо выполнить три условия
- Поддержка USB устройств ядром
- Поддержка файловых систем ядром
- Установлен пакет 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 |
|
Для начала включим автомонтирование swap-раздела на USB-HDD/USB-флешке.
Для этого в блоке global присвоим опции auto_swap значение 1.
А так же в блоке swap опции enabled значение 1.
1 2 3 4 5 6 |
|
Далее настроим монтирование остальных разделов.
Второй раздел — в точку монтирования /overlay, для расширения памяти устройства для установки пакетов и прочих манипуляций.
Третий раздел — в точку монтирования /mnt/usb (вместо usb может быть что угодно, называйте как хотите), для хранения ваших файлов.
Для этого в файл fstab вносим следующие правки
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Сохраняем файл, но пока перезагружаться рано. Надо подготовить 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.
Для повышения надежности, после ее установки лучше выполнить команды. 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 |
||
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
andswapoff
. 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