Иркутский LUG Сайт иркутской группы пользователей ОС Linux Основное меню Перейти к основному содержимому Перейти к дополнительному содержимому Иркутский LUG Linux Решения Консольные команды Linux ZFS на Debian/Wheezy Опубликовано 06.08.2012 автором Mirivlad | 0 комм. и 0 реакций Содержание BTRFS vs ZFS ZFS на Wheezy Корневая ФС на ZFS Правильное выравнивание Установка ZFS Это перевод заметки от Russell Coker опубликованной в его блоге. Буду благодарен за замечания. Так как в некоторых местах не въехал в суть того о чем он пишет. Сама статья рассказывает о том как он помучался чтобы получить работающую ZFS для своего сервера на Debian/Wheezy С уважением — mirivlad. При росте объема систем хранения данных увеличивается время требуемое для проверки традиционной файловой системы с помощью fsck при нарушении в их работе. Так же скорость роста объема хранилищ данных обгоняет смежные системы ввода-вывода, что влечет за собой увеличение времени перестройки RAID массива, например мой первый диск был размером 70M и его скорость передачи данных была 500K/с что означает, что весь его объем мог быть прочитан за 140 секунд! В прошлый раз я тестировал свежий 1TB SATA диск и получил скорость передачи данных от 112MB/s до 52MB/s что означает что чтение всего объема этого диска заняло 3 часа и 10 минут, и эта проблема углубляется при увеличении объема дисков. Отсюда следует что избыточность более желательна при современных объемах данных. К содержанию ↑ BTRFS vs ZFS Обе файловых системы BTRFS и ZFS проверяют контрольные суммы данных и сразу засекают момент когда данные повреждаются, они не нуждаются в программе fsck, и комбинирование проверки контрольных сумм с RAID позволяют уменьшить риск потери данных при ребилде рейд-массива. ZFS поддерживает RAID-Z, который по сути является RAID-5 с проверкой контрольных сумм всех блоков и может отслеживать случаи повреждения данных, и RAID-Z2 который является эквивалентом RAID-6. RAID-Z очень важен если вы не хотите отдавать половину ваших дисков для контроля целостности данных или если вы хотите чтобы ваши данные пережили потерю одного и более дисков, так что пока BTRFS имеет эквивалентные ZFS возможности, но отсутствует поддержка RAID-Z. Так же BTRFS более новая файловая система и пока не готова для критически важных областей применения. Я устанавливаю систему для работы файлового сервера и сервера Xenкоторый не будет
слишком часто обновляться следующие несколько лет. Будет 4 диска с ZFS и RAID-Z которые предлагают значительные преимущества по наращиванию объема в сравнении с BTRFS и их использование позволит использовать RAID-Z2 для контроля целостности данных. Не хочется обновлять систему довольно часто, а это придется сделать, так как в скором времени выйдет релиз Debian/Wheezy , и придется обновляться до него со Squeeze на котором будут доступны только обновления безопасности. К содержанию ↑ ZFS на Wheezy Получить ZFS в основном не особо сложно, the ZFSonLinux.org сайт с достаточно толковыми инструкциями как это сделать. Код zfsonlinux не собирается изкоробки под Wheezy хотя отлично работает на Squeeze. Самым легким путем было получить пакет для Ubuntu с рабочим ZFS который я потом пересобрал для работы в Debian/Wheezy. Это было не особо трудно, однако жаль, что сайт zfsonlinux не поддерживает последние ядра. К содержанию ↑ Корневая ФС на ZFS Сложность использования ZFS для корневой ФС является то, что ZFS FAQ рекомендует использовать весь диск для улучшения производительности, что помогает выровнять проблему 4K секторов диска (что являтся проблемой для любого большого диска если вы хотите использовать его с ZFS) [2]. Это означает что вы должны использовать /boot на ZFS (что слишком экстремально для меня) или иметь отдельный загрузочный диск. Сейчас у меня есть сервер в котором 4*3TB диска в RAID-Z массиве и один небольшой диск для корневой файловой системы. Наличие пяти дисков один из которых скотчем прикручен к остальным в системе которая предназначена только для 4-х дисков — не идеал ,но когда у вас есть образ OS и проводятся бекапы критичных данных (но не требующих ежедневных бекапов) то отказ устройства с корневой ФС может быть исправлен на следующий день без всяких проблем. Но мне хочется этого избежать. Здесь немного хорошей документации по использованию Ubuntuс корнем на ZFS[3]. Я рассматривал возможность использования Ubuntu LTS для сервера, но я предпочитаю Debian и могу пересобрать пакеты из Ubuntu для Debian так что Debian для меня стал наилучшим выбором. Я собрал такой пакет для Wheezy, установил и собрал DKMS, и довольно просто — получил ZFS работающую без всяких проблем. Так что встала проблема получения корневой ФС работающей на ZFS . Пакеты Ubuntu не работают с initramfs в Debian по непонятным мне причинам и модули не загружаются. Это меня не остановилобы перед оручным исправлением проблемы, но тогда я в будущем мог столкнуться с проблемами в виде отвалившегося корня ФС при обновлении. Следующая неожиданность — это то как ZFS монтирует файловые системы. В отличии от блочных устройств монтируемых по списку указанному в /etc/fstab система ZFS делает все сама. Так что если вы хотите примонтировать раздел ZFS как корень ФС то вы должны сконфигурировать точку монтирования через команду “zfs set mountpoint”. Это конечно прибавляет головной боли, если вы загрузитесь с другой корневой ФС. Когда я столкнулся с этим, то понял что корень на ZFS это не самый лучший вариант. Так что для нового сервера я установил файловую систему Ext4 на устройство с RAID-1 для корня и /boot и использую ZFS для всего остального. К содержанию ↑ Правильное выравнивание После установки системы с 4 дисками RAID-1 (ну или зеркало, для тех педантов кто утверждает что в истинном RAID-1 может быть только 2 диска) для / и /boot я создал разделы для ZFS. Согласно выводу fdisk разделы /dev/sda2, /dev/sdb2 имеют начальную адресацию в несколько 2048 которые я предлагаю адресовать для выравнивания дисков с 4K секторами. К содержанию ↑ Установка ZFS1 deb http://www.coker.com.au wheezy zfs
Я создал APT репозитарий указанный выше (только для AMD64) для ZFS с пакетами основанными на пакетах для Ubuntu от Darik Horn (спасибо за хорошую работу Darik). Установил zfs-dkms, spl-dkms, и zfsutils и получил систему ZFS . Я мог бы попробовать использовать бинарники из пакетов от Darik но думаю лучше пересобрать пакеты Ubuntu для использования на Debian. Ссылки по теме: [1] http://zfsonlinux.org/ [2] http://zfsonlinux.org/faq.html [3] https://github.com/dajhorn/pkg-zfs/wiki/HOWTO-install-Ubuntu-to-a-Native-ZFS-RootFilesystem
Иркутский LUG Сайт иркутской группы пользователей ОС Linux Установка ZFS на Debian GNU/Linux Опубликовано 19.04.2012 автором Mirivlad | 4 комм. и 0 реакций
Быстропост о том как установить ZFS в качестве ядерного модуля, неFUSE, на Debian GNU/Linux. Документация про это уже есть, просто хочется донести информацию про это для более широкой аудитории. Во-первых, в Ливерморской национальной лаборатории работают над портированием исходников родной файловой системы Solaris ZFS в Linux ядро в виде ядерного модуля. До тех пор пока проект финансируется по контракту с министерством обороны в США, я уверен, он будет постоянно обновляется. Вы можете следить за прогрессом портирования на сайте http://zfsonlinux.org. Теперь, скачиваем исходники SPL и ZFS. Я запускал последний RC, который выглядит вполне стабильным: [code]$ mkdir ~/src/{spl,zfs} $ cd ~/src/spl $ wget http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc8.tar.gz $ cd ~/src/zfs $ wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0rc8.tar.gz[/code] На этом шаге вам нужно установить зависимости для SPL, затем скомпилировать и собрать файлы в пакет .deb: [code]$ sudo aptitude install build-essential gawk alien fakeroot linux-
headers-$(uname -r) $ cd ~/src/spl $ tar -xf spl-0.6.0-rc8.tar.gz $ cd spl-0.6.0-rc8 $ ./configure $ make deb[/code] Теперь делаем тоже самое для ZFS: [code]$ sudo aptitude install zlib1g-dev uuid-dev libblkid-dev libselinuxdev parted lsscsi $ cd ~/src/zfs $ tar -xf zfs-0.6.0-rc8.tar.gz $ cd zfs-0.6.0-rc8 $ ./configure $ make deb[/code] Итак, мы получили пакеты Debian для установки SPL и ZFS Debian. Запускаем установку: [code]$ sudo dpkg -i ~/src/{spl,zfs}/*.deb[/code] Если вы работаете с Ubuntu, а в большинстве случаев это так и есть, вы можете установить пакеты из Launchpad PPA https://launchpad.net/~zfs-native. Примечание: мануал будет установлен в /share/man/. Для меня это проблематично. вы можете изменить переменную $MANPATH для установки мануалов в /share/man/man8/, или сделать ссылку, что я и сделал: [code lang="bash"]# cd /usr/share/man/man8/ # ln -s /share/man/man8/zdb.8 zdb.8 # ln -s /share/man/man8/zfs.8 zfs.8 # ln -s /share/man/man8/zpool.8 zpool.8[/code] Теперь сделаем zpool, и можно поиграться: [code]$ sudo zpool create test raidz sdd sde sdf sdg sdh sdi[/code] Это всё достаточно стабильно чтобы сделать ZFS файловой системой для корневого раздела вашего Linux на вашей машине, чтобы вы могли поиграться с ней. Есть копирование при записи, поддержка сжатия, дедупликации, атомарность файлов, off-disk кеширование, шифрование, и т.д. К сожалению, я убежден что на данный момент модуль ядра ZFS станет стабильным задолго до того как Btrfs станет стабильным в основной ветке ядра. В любом случае для меня это не имеет значения. Оба продукта являются СПОи оба предлагают так давно необходимые
возможности для сегодняшних потребностей наших хранилищ данных. Здоровая конкуренция это хорошо, и замечательно что есть выбор. Пока что, я выбираю ZFS.
Сборка, конфигурирование и установка своего ядра в Ubuntu Требования Для сборки собственного ядра, вам потребуется несколько утилит и пакетов. Пакет ‘git-core’ предоставляет систему управления версиями ПО — git, который будет использоваться для клонирования основного git репозитария.Пакет ‘kernel-package’ предоставляет утилиту make-kpkg которая автоматом собирает ядро kernel и генерирует .deb файлы linux-image и linuxheader которые вы затем сможите установить. Вам требуется установить оба этих пакета. sudo apt-get install git-core kernel-package fakeroot build-essential ncurses-dev Заметьте, что на новых версиях ubuntu вам нужно будет заменить в вышеприведенной строке «ncurses-dev» на «libncurses5-dev». Сборка ядра и установка Смените директорию на ту куда будете клонировать исходники ядра.В примере, будем использовать $HOME cd $HOME Клонируем основное дерево исходников ядра. git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git Переходим в директорию linux-2.6 cd linux-2.6 Копируем конфиг вашего существующего ядра в дерево исходников. cp /boot/config-`uname -r` .config Актуализируйте ваш конфигурационный файл. Ответьте на вопросы которые вам задаст утилита. Если вам неинтересны новые опции, или вы не уверены что они делают, просто выбирайте то что стоит по умолчанию (Дефолтное значение выделено БОЛЬШОЙ буквой и при пустом значении будет выставляться именно оно). make oldconfig
В случае если ваш конфигурационный файл слишком старый, то вопросов будет просто море, и на каждый вопрос вам придется сидеть и нажимать Enter. Вы конечно можете зажать Enter но проще будет сделать так: yes '' | make oldconfig эта команда сэмулирует ввод пустого значения которое как раз и будет соответствовать выбору по умолчанию. (опционально) Если вы хотите внести какие-то изменения в ваш конфигурационный файл, выполните следующие изменения и сохраните их когда вас спросят об этом: make menuconfig Отмечу, что сборка ядра в Ubuntu делается с отладочной информацией что в результате делает модули ядра (*.ko файлы) намного больше чем они должны были быть (linux-image*.deb будет весить 200-300 Мб вместо положенных 20-30 Мб). Для отключения этого перейдите в раздел «Kernel hacking»; затем в «Kernel debugging», выставьте значение «Compile the kernel with debug info» в OFF. Этот баг известен и будет поправлен (он подтвержден, но на момент написания статьи — никто на него не подписан). См. bug 90283 Чистим директорию исходников. make-kpkg clean Создадим .deb файлы заголовков и образа ядра (linux-image и linux-header) CONCURRENCY_LEVEL в приведенной команде так же можно выставить вручную. указав сколько процессоров/ядер использовать при сборке ядра). CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot makekpkg --initrd --append-to-version=-custom kernel_image kernel_headers В результате выполнения этой команды вы получите пакеты похожие что-то вроде на linux-image-2.6.35-rc5-custom и linux-headers-2.6.24-rc5-custom, в этом случае версия будет 2.6.35-rc5-custom-10.00.Custom. вы можете изменить эту строку на что-то другое изменив значение опции --append-to-version. Так же вы можете изменить дефолтное значение версии 10.00.Custom на что-то другое используя опцию --revision option. Перейдем из директории на уровень выше (.deb файлы linux-image и linuxheader будут лежать тут) cd .. Теперь установим .deb файлы. В примере это файлы linux-image-2.6.35-rc5custom_2.6.35-rc5-custom-10.00.Custom_i386.deb и linux-headers-2.6.35-rc5custom_2.6.35-rc5-custom-10.00.Custom_i386.deb. Вы можете получить предупреждения о ‘/lib/firmware/2.6.24-rc5-custom/’ -это произойдет, если
драйвер который вы включили в конфигурации требует отдельной прошивки для своей работы. sudo dpkg -i linux-image-2.6.35-rc5-custom_2.6.35-rc5-custom10.00.Custom_i386.deb sudo dpkg -i linux-headers-2.6.35-rc5-custom_2.6.35rc5-custom10.00.Custom_i386.deb Теперь можете перезагрузиться в своё новое ядро. не забыв его выбрать в меню загрузки. sudo reboot Использование конфигурации ядра для Ubuntu Приведенная выше инструкция позволяет легко собрать своё собственное ядро. Однако, если вы хотите собрать ядро которое будет совпадать по конфигурации с официальным ядром от UbuntuВам придется несколько изменить свои действия. Если вы просто хотите попробовать сами ядро от Ubuntu, прочитайте и следуйте инструкции расположенной тут: https://help.ubuntu.com/community/Kernel/Compile. Выполните шаги с 1 по 7 описанные выше, используя конфиг ядра Ubuntu в шаге 4 Перепиите скрипт по умолчанию: kernel-package на скрипт от Ubuntu: cd $HOME git clone git://kernel.ubuntu.com/ubuntu/ubuntu-lucid.git cp -a /usr/share/kernel-package ubuntu-package cp ubuntu-lucid/debian/control-scripts/{postinst,postrm,preinst,prerm} ubuntupackage/pkg/image/ cp ubuntu-lucid/debian/control-scripts/headers-postinst ubuntu-package/pkg/headers/ Соберите пакеты используя наложение (overlay) директории: cd $HOME/linux-2.6 CONCURRENCY_LEVEL=`getconf _NPROCESSORS_ONLN` fakeroot makekpkg --initrd --append-to-version=-custom --overlay-dir=$HOME/ubuntu-package kernel_image kernel_headers далее выполняйте шаги с 9 по 11 которые приведены выше Примечание: Опция «—overlay-dir» доступна только в Lucid или позже. Если вам требуется собрать ядро в предыдущих релизах попробуйте установить бекпорт kernel-package если это возможно, или вручную поправьте /usr/share/kernel-package как надо.
Kernel/Compile Съдържание Disclaimer Reasons for compiling a custom kernel Reasons for NOT compiling a custom kernel Tools you'll need Get the kernel source A) Use git B) Download the source archive C) Download the source package Modify the source for your needs Build the kernel (when source is from git repository, or from apt-get source) Alternate Build Method: The Old-Fashioned Debian Way Install the new kernel Rebuilding ''linux-restricted-modules'' Speeding Up the Build More documentation Comments External information Disclaimer Building and using a custom kernel will make it very difficult to get support for your system. While it is a learning experience to compile your own kernel, you will not be allowed to file bugs on the custom-built kernel (if you do, they will be Rejected without further explanation). Note: This page would need significant cleaning. You may want to refer to Kernel/BuildYourOwnKernel page in Ubuntu wiki instead which is a cleaner and more up-to-date guide to (simple) kernel building If you have a commercial support contract with Ubuntu/Canonical, this will void such support. Also note that this page describes how to do things for the Edgy (2.6.17) kernel and newer! Until this kernel source, we did not have any mechanisms in place that would allow people to build their own kernels easily. This was intentional. This page does NOT describe how to build upstream kernels from kernel.org. This is
how to rebuild the actual Ubuntu kernel starting from source. Reasons for compiling a custom kernel You are a kernel developer. You need the kernel compiled in a special way, that the official kernel is not compiled in (for example, with some experimental feature enabled). You are attempting to debug a problem in the stock Ubuntu kernel for which you have filed or will file a bug report. You have hardware the stock Ubuntu kernel does not support. You love computers and are curious and interested in hacking on your own GNU/Linux system to learn more about how it works (with the understanding that you'll need to fix anything you break). Reasons for NOT compiling a custom kernel You merely need to compile a special driver. For this, you only need to install the linux-headers packages. You have no idea what you are doing, and if you break something, you'll need help fixing it. Depending on what you do wrong, you might end up having to reinstall your system from scratch. You got to this page by mistake, and checked it out because it looked interesting, but you don't really want to learn a lot about kernels. If you want to install a new kernel without compilation, you can use Synaptic, search for linux-image and select the kernel version you want to install. An easier way is to click on System > Administration > Update Manager, then click on the Check button, and finally click on Apply all updates including the kernel. Tools you'll need To start, you will need to install a few packages. The exact commands to install those packages depends on which release you are using: Hardy (8.04): sudo apt-get install linux-kernel-devel fakeroot kernel-wedge build-essential Note: The package makedumpfile is not available in Hardy. Lucid (10.04): sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernelwedge sudo apt-get build-dep linux sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutilsdev
Get the kernel source There are a few ways to obtain the Ubuntu kernel source: A) Use git Use git (detailed instructions on it can be found in the Kernel Git Guide) - This is for users who always want to stay in sync with the latest Ubuntu kernel source. The git repository does not include necessary control files, so you must build them by: fakeroot debian/rules clean B) Download the source archive Download the source archive - This is for users who want to rebuild the standard Ubuntu packages with additional patches. Note that this will almost always be out of date compared to the latest development source, so you should use git (option A) if you need the latest patches. To install the build dependencies and extract the source (to the current directory): Ubuntu Hardy (8.04) sudo apt-get build-dep --no-install-recommends --only-source linux apt-get source --only-source linux Ubuntu modules source may also be needed if you plan to enable PAE and 64 GiB support in the kernel for 32-bit Hardy (8.04). The Ubuntu supplied modules may not be compatible with a PAE enabled kernel. sudo apt-get build-dep --no-install-recommends linux-ubuntu-modules-$(uname -r) apt-get source linux-ubuntu-modules-$(uname -r) The source will be downloaded to a subdirectory inside the current directory. Ubuntu Karmic Koala (9.10) and newer releases sudo apt-get build-dep --no-install-recommends linux-image-$(uname -r) apt-get source linux-image-$(uname -r) The source will be downloaded to the current directory (for Lucid, at least) as a trio of files (.orig.tar.gz, .diff.gz, and .dsc) and a sub-directory. For instance, if uname -r returns 2.6.32-25-generic, you'll obtain linux_2.6.32.orig.tar.gz, linux_2.6.3225.44.diff.gz, linux_2.6.32-25.44.dsc and the sub-directory linux-2.6.32.
C) Download the source package Download the source package (detailed instructions are further down this page under Alternate Build Method: The Old-Fashioned Debian Way) - This is for users who simply want to modify, or play around with, the Ubuntu-patched kernel source. Again, this will not be the most up-to-date (use option A/git if you need the latest source). Please be aware this is NOT the same as option B. Modify the source for your needs For most people, simply modifying the configs is enough. If you need to install a patch, read the instructions from the patch provider to learn how to apply it. The stock Ubuntu configs are located in debian/config/ARCH/ where ARCH is the architecture you are building for (Starting with Jaunty this is debian.master/config/ARCH/). In this directory there are several files. The config file is the base for all targets in that architecture. Then there are several config.FLAVOUR files that contain options specific to that target. For example, here are the files for 2.6.20, i386: ls -l debian/config/i386/ total 108 -rw-r--r-- 1 root src 73962 2007-08-13 01:29 config -rw-r--r-- 1 root root 1369 2007-08-13 01:29 config.386 -rw-r--r-- 1 root root 1330 2007-08-13 01:29 config.generic -rw-r--r-- 1 root root 1395 2007-08-13 01:29 config.server -rw-r--r-- 1 root root 1756 2007-08-13 01:29 config.server-bigiron -rw-r--r-- 1 root root 8 2007-08-13 01:25 lowlatency -rw-r--r-- 1 root root 194 2007-08-13 01:25 vars.386 -rw-r--r-- 1 root root 218 2007-08-13 01:25 vars.server-bigiron If you do not find the config files under debian/config, you may find them in your /boot directory (for instance, /boot/config-2.6.22-14-generic) otherwise you should check to see if an alternate location has been specified within debian/debian.env of your kernel source directory. If you need to change a config option, simply modify the file that contains the option. If you modify just the config file, it will affect all targets for this architecture. If you modify one of the target files, it only affects that target. After applying a patch, or adjusting the configs, it is always best to regenerate the config files to ensure they are consistent. There is a helper command for this. To regenerate all architectures run: debian/rules updateconfigs
If you just want to update one architecture, run: debian/scripts/misc/oldconfig ARCH Note: If you don't have the debian/ directory after using apt-get source, use dpkgsource -x *dsc to extract the sources properly. For these two commands to work, you need to give the scripts in the debian/scripts/misc and debian/scripts directories execute permission with the following command: chmod -R u+x debian/scripts/* Build the kernel (when source is from git repository, or from apt-get source) To build the kernel(s) is very simple. Depending on your needs, you may want to build all the kernel targets, or just one specific to your system. However, you also want to make sure that you do not clash with the stock kernels. Note: Though these outside instructions include making a separate and unique branch of the kernel, unlike here, they include thorough explanations of all necessary steps from start to finish. Oneiric (11.10) Kernel 3.2 : http://blog.avirtualhome.com/2012/01/13/compile-linuxkernel-3-2-for-ubuntu-11-10/ Oneiric (11.10) : http://blog.avirtualhome.com/2011/10/28/how-to-compile-a-newubuntu-11-10-oneiric-kernel/ Maverick on Lucid (10.04): http://blog.avirtualhome.com/2010/07/14/how-tocompile-a-ubuntu-2-6-35-kernel-for-lucid/ Lucid (10.04): http://blog.avirtualhome.com/2010/05/05/how-to-compile-a-ubuntulucid-kernel/ These instructions are specific to the git-tree and for the source downloaded via aptget source, not when downloading the linux-source package from kernel.org Use this command to build all targets for the architecture you are building on:
fakeroot debian/rules clean AUTOBUILD=1 fakeroot debian/rules binary-debs debian/rules clean creates debian/control, debian/changelog, and so on from debian.<branchname>/* (e.g. debian.master). It is necessary in git trees following git commit 3ebd3729ce35b784056239131408b9a72b0288ef "UBUNTU: [Config] Abstract the debian directory". The AUTOBUILD environment variable triggers special features in the kernel build. First, it skips normal ABI checks (ABI is the binary compatibility). It can do this because it also creates a unique ABI ID. If you used a git repo, this unique ID is generated from the git HEAD SHA. If not, it is generated from the uuidgen program (which means every time you execute the debian/rules build, the UUID will be different!). Your packages will be named using this ID. (Note that in Intrepid and newer, you will need skipabi=true to skip ABI checks.) To build a specific target, use this command: fakeroot debian/rules clean AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-FLAVOUR Where FLAVOUR is one of the main flavours of the kernel (e.g. generic) To build one of the custom flavours (found in debian/binary-custom.d/), use: fakeroot debian/rules clean AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules custom-binary-FLAVOUR As of this documentation, custom flavours include xen and rt. If you have a more than one processor or more than one core, you can speed things up by running concurrent compile commands. Prepend CONCURRENCY_LEVEL=2 for two processors or two cores; replace '2' with whatever number suits your hardware setup (for Gutsy and later, you can alternatively use DEB_BUILD_OPTIONS=parallel=2). fakeroot debian/rules clean DEB_BUILD_OPTIONS=parallel=2 AUTOBUILD=1 NOEXTRAS=1 fakeroot debian/rules binary-generic If you get ABI errors, you can avoid the ABI check with skipabi=true. For example, fakeroot debian/rules clean DEB_BUILD_OPTIONS=parallel=2 AUTOBUILD=1 NOEXTRAS=1 skipabi=true fakeroot debian/rules binary-generic
To trigger a rebuild, remove the appropriate stamp file from debian/stamps (e.g. stamp-build-server for the server flavour, etc.). The debs are placed in your kernel directory's parent directory. If needed, the Ubuntu modules source for Hardy (8.04) can be built in a similar way. cd linux-ubuntu-modules-2.6.24-2.6.24 AUTOBUILD=1 fakeroot debian/rules binary-debs Alternatively, if you need to specify a different kernel than the running one, use cd linux-ubuntu-modules-2.6.24-2.6.24 AUTOBUILD=1 fakeroot debian/rules binary-debs KDIR=/path/to/kerneldir If you get an error, try running this in the kerneldir: (example for the generic flavour) cat debian/config/i386/config debian/config/i386/config.generic > .config make prepare scripts Alternate Build Method: The Old-Fashioned Debian Way The new Ubuntu build system is great for developers, for people who need the absolute latest bleeding-edge kernel, and people who need to build a diverse set of kernels (several "flavours"). However it can be a little complex for ordinary users. If you don't need the latest development sources, there is a simpler way to compile your kernel from the linux-source package. As suggested above, all you need for this is: sudo apt-get install linux-source device-tree-compiler # device-tree-compiler is only needed if you are targeting the PowerPC architecture mkdir ~/src cd ~/src tar xjvf /usr/src/linux-source-<version-number-here>.tar.bz2 cd linux-source-<version-number-here> Now you are in the top directory of a kernel source tree. Before building the kernel, you must configure it. If you wish to re-use the configuration of your currentlyrunning kernel, start with cp -vi /boot/config-`uname -r` .config Before you run make menuconfig or make xconfig (which is what the next step tells you to do), make sure you have the necessary packages: sudo apt-get install qt3-dev-tools libqt3-mt-dev # if you plan to use 'make xconfig' sudo apt-get install libncurses5 libncurses5-dev # if you plan to use 'make menuconfig' If you would like to see what is different between your original kernel config and the
new one (and decide whether you want any of the new features), you can run: make oldconfig Since the 2.6.32 kernel, a new feature allows you to update the configuration to only compile modules that are actually used in your system: make localmodconfig Then, regardless of whether you're re-using an existing configuration or starting from scratch: make menuconfig # or "make xconfig" if you prefer If you re-used the existing configuration, note that Ubuntu kernels build with debugging information on, which makes the resulting kernel modules (*.ko files) much larger than they would otherwise be. To turn this off, go into the config's "Kernel hacking"<!-- ; then, under "Kernel debugging", --> and turn OFF "Compile the kernel with debug info". Now you can compile the kernel and create the packages: make clean # only needed if you want to do a "clean" build make deb-pkg You can enable parallel make use make -j). Try 1+number of processor cores, e.g. 3 if you have a dual core processor: make -j3 deb-pkg The *.deb packages will be created in the parent directory of your Linux source directory (in this example, they would be placed in ~/src because our Linux source directory is ~/src/linux-source-<version-number-here>). Install the new kernel If you want to see the Ubuntu splash screen (or use text mode) before you get to X instead of just a black screen, you'll want to make sure the framebuffer driver loads: echo vesafb | sudo tee -a /etc/initramfs-tools/modules echo fbcon | sudo tee -a /etc/initramfs-tools/modules Now that you've told initramfs-tools which modules it should include, and once the build is complete, you can install the generated debs using dpkg: sudo dpkg -i linux-image-2.6.20-16-2be-k7_2.6.20-16_i386.deb sudo dpkg -i linux-headers-2.6.20-16-2be-k7_2.6.20-16_i386.deb Similarly, if you have built the Ubuntu module for Hardy (8.04) earlier, install them as follows:
sudo dpkg -i linux-ubuntu-modules-2.6.24-16-generic_2.6.24-16.23_i386.deb sudo dpkg -i linux-headers-lum-2.6.24-16-generic_2.6.24-16.23_i386.deb If you use modules from linux-restricted-modules, you will need to recompile this against your new linux-headers package. Note: In response to the various comments in the remainder of this section: On Ubuntu Precise (12.04) it appears that postinst DOES take care of the initramfs stuff. After installing the package my new kernel booted just fine without following any of the methods below. Someone please correct me if I'm mistaken. Since Ubuntu Lucid (10.04) the image postinst no longer runs the initramfs creation commands. Instead, there are example scripts provided that will perform the task. These scripts will work for official kernel images as well. For example: sudo cp /usr/share/doc/kernel-package/examples/etc/kernel/postinst.d/initramfs /etc/kernel/postinst.d/initramfs sudo mkdir -p /etc/kernel/postrm.d/ sudo cp /usr/share/doc/kernel-package/examples/etc/kernel/postrm.d/initramfs /etc/kernel/postrm.d/initramfs Note: I couldn't get the above scripts to help in generating an initrd for the kernel and so the built kernel couldn't boot; the only thing that worked for me was the recommendation in http://www.debianadministration.org/article/How_Do_I_Make_an_initrd_image, "use initramfs command. It is real solution."; what I used (after the custom-built kernel's *.deb's were installed), was: cd /boot sudo mkinitramfs -k -o initrd.img-2.6.32.15+drm33.5-mylucid 2.6.32.15+drm33.5mylucid sudo update-grub2 Note (Michael): that is because you need to include the right package scripts to build the initrd at package install time. The make-kpkg option is --overlay-dir. By default, make-kpkg uses /usr/share/kernel-package as an overlay directory, which contains the default, uncustomised scripts for a Debian distribution, and not the ones needed for building a Ubuntu kernel. The following instructions are based on this link: http://crashcourse.ca/introductionlinux-kernel-programming/intermission-building-new-ubuntu-1004-kernel-freelesson First copy the default overlay directory to your home directory: $ cp -r /usr/share/kernel-package $HOME
Then install the source of the kernel you are using currently, using the exact package name, e.g. $ cd $ apt-get source linux-image-2.6.32-24-generic which will unpack the sources to $HOME/linux-2.6.32. Now copy the control scripts into your new overlay: $ cp linux-2.6.32/debian/control-scripts/{postinst,postrm,preinst,prerm} kernelpackage/pkg/image/ $ cp linux-2.6.32/debian/control-scripts/headers-postinst kernel-package/pkg/headers/ And now you can execute make-kpkg with the additional command line option --overlay-dir=$HOME/kernel-package. Rebuilding ''linux-restricted-modules'' The linux-restricted-modules (l-r-m) package contains a number of non-DFSG-free drivers (as well as some firmware and the ipw3945 wireless networking daemon) which, in a perfect world, wouldn't have to be packaged separately, but which unfortunately are not available under a GPL-compatible license. If you use any of the hardware supported by the l-r-m package, you will likely find that your system does not work as well after switching to a custom kernel. In this case you should try to compile the l-r-m package. See CustomRestrictedModules on how to rebuild l-r-m (if you use nVidia or ATI binary drivers, you do). Note: you will need around 8 hours of compilation time and around 10 Gb of hard drive space to compile all kernel flavours and restricted modules. Further note: There are no l-r-m or linux-restricted-modules packages in Lucid. Speeding Up the Build Use distcc and, if you're rebuilding often, ccache. A good overview of using distcc on a debian-based system is available at http://myrddin.org/howto/using-distcc-withdebian. If you have AMD64 machines available on your local net, they can still participate in building 32-bit code; distcc seems to handle that automatically. However, with distcc taking over all compiles by default, you will need to set HOSTCC so that when kernel builds want to use the compiler on the host itself, they don't end up distributing jobs to the 64-bit server. If you fail to do that, you'll get linkcompatibility failures between 64-bit and 32-bit code. My make-kpkg command, with /usr/lib/ccache at the head of my $PATH, looks like: MAKEFLAGS="HOSTCC=/usr/bin/gcc CCACHE_PREFIX=distcc" make-kpkg
--rootcmd fakeroot --initrd --append-to-version=-suspend2 kernel-image kernelheaders kernel-source More documentation https://help.ubuntu.com/community/forum/software/CustomKernel UpgradeKernel , with easier ways. Comments Please go to the community wiki page for comments, questions and discussion: https://wiki.ubuntu.com/KernelCustomBuild External information http://www.howtoforge.com/kernel_compilation_ubuntu Compile a kernel from kernel.org source in Ubuntu http://kernel-handbook.alioth.debian.org/ch-common-tasks.html#s-common-building CategoryKernel Kernel/Compile (последна редакция в 2013-03-05 14:08:04 от timo-jyrinki) Установка ZFS на Debian GNU/Linux Опубликовано 19.04.2012 автором Mirivlad | 4 комм. и 0 реакций Быстропост о том как установить ZFS в качестве ядерного модуля, неFUSE, на Debian GNU/Linux. Документация про это уже есть, просто хочется донести информацию про это для более широкой аудитории. Во-первых, в Ливерморской национальной лаборатории работают над портированием исходников родной файловой системы Solaris ZFS в Linux ядро в виде ядерного модуля. До тех пор пока проект финансируется по контракту с министерством обороны в США, я уверен, он будет постоянно обновляется. Вы можете следить за прогрессом портирования на сайте http://zfsonlinux.org. Теперь, скачиваем исходники SPL и ZFS. Я запускал последний RC, который выглядит вполне стабильным:
[code]$ mkdir ~/src/{spl,zfs} $ cd ~/src/spl $ wget http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc8.tar.gz $ cd ~/src/zfs $ wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc8.tar.gz[/code] На этом шаге вам нужно установить зависимости для SPL, затем скомпилировать и собрать файлы в пакет .deb: [code]$ sudo aptitude install build-essential gawk alien fakeroot linux-headers-$(uname -r) $ cd ~/src/spl $ tar -xf spl-0.6.0-rc8.tar.gz $ cd spl-0.6.0-rc8 $ ./configure $ make deb[/code] Теперь делаем тоже самое для ZFS: [code]$ sudo aptitude install zlib1g-dev uuid-dev libblkid-dev libselinux-dev parted lsscsi $ cd ~/src/zfs $ tar -xf zfs-0.6.0-rc8.tar.gz $ cd zfs-0.6.0-rc8 $ ./configure $ make deb[/code] Итак, мы получили пакеты Debian для установки SPL и ZFS Debian. Запускаем установку: [code]$ sudo dpkg -i ~/src/{spl,zfs}/*.deb[/code] Если вы работаете с Ubuntu, а в большинстве случаев это так и есть, вы можете установить пакеты из Launchpad PPA https://launchpad.net/~zfs-native. Примечание: мануал будет установлен в /share/man/. Для меня это проблематично. вы можете изменить переменную $MANPATH для установки мануалов в /share/man/man8/, или сделать ссылку, что я и сделал: [code lang="bash"]# cd /usr/share/man/man8/ # ln -s /share/man/man8/zdb.8 zdb.8 # ln -s /share/man/man8/zfs.8 zfs.8 # ln -s /share/man/man8/zpool.8 zpool.8[/code] Теперь сделаем zpool, и можно поиграться: [code]$ sudo zpool create test raidz sdd sde sdf sdg sdh sdi[/code] Это всё достаточно стабильно чтобы сделать ZFS файловой системой для корневого раздела вашего Linux на вашей машине, чтобы вы могли поиграться с ней. Есть копирование при записи, поддержка сжатия, дедупликации, атомарность файлов, off-disk кеширование, шифрование, и т.д. К сожалению, я убежден что на данный момент модуль ядра ZFS станет стабильным задолго до того как Btrfs станет стабильным в основной ветке ядра. В любом случае для меня это не имеет значения. Оба продукта являются СПОи оба предлагают так давно необходимые возможности для сегодняшних потребностей наших хранилищ данных. Здоровая конкуренция это хорошо, и замечательно что есть выбор. Пока что, я выбираю ZFS.
Консольные команды Linux Содержание Общие команды Linux Команды Linux: работы с файлами и директориями Команды Linux: установка программ Команды Linux: мониторинг работы и просмотр логов. Команды Linux: информация об устройствах. Команды Linux: жесткие диски и файловая система. Команды Linux: настройка сети. Команды Linux: создание и запись ISO образов. Команды Linux: пользователи и группы. Команды Linux: работа с процессами. Команды Linux: Runlevels. Команды Linux: Работа с ядром и модулями. Команды Linux: работа с LiveCD. Команды Linux: конвертирование различной информации. Команды Linux: печать на принтере. В статье систематизирована информация об основных командах в Linux. Приведенные команды будут одинаково верно работать во многих дистрибутивах, таких как: ASPLinux, Debian, Gentoo, Ubuntu, ALTLinux и во многих других. Автором статьи преследовалась цель составления наиболее полного списка основных команд Linux`а, для более легкого и эффективного изучения этой операционной системы. Прим.: команда [sudo] часто является обязательной для выполнения того или иного действия из под обычного пользователя. Если вы работаете из под root, то использовать её не нужно. Источник статьи: http://itshaman.ru/articles/7/komandy-linux К содержанию ↑ Общие команды Linux Linux команды, которым не нашлось место ни в каком другом разделе. Показать версию ядра Linux: uname -a На экран выводиться информация о версии операционной системы Debian и основанных на ней дистрибутивах: lsb_release -a На экран выводится информация о версии операционной системы SuSE: cat /etc/SuSE-release Универсальный способ узнать версию и название дистрибутива: cat /etc/issue Описание иерархии файловой системы (для чего нужна каждая директория в linux): man hier Очищение экрана терминала: clear Отправляет на терминалы других пользователей сообщение «Привет»:
wall Привет Показывает текущую дату и время: date Показывает в удобной форме предыдущий, текущий и последующий месяц (типо календарь): cal -3 Показать текущее время и работу системы без перезагрузки и выключения: uptime Показать сетевое имя компьютера: hostname Показать информацию о доменом имени linux.org: whois linux.org Изменить переменной окружения http_proxy, для использования интернета через proxyсервер: export http_proxy=http://your.proxy:port Скачать файл http://UserGroup.ru/images/logo_white.png в текущую папку: wget http://UserGroup.ru/images/logo_white.png Копирование сайта целиком и конвертирование ссылок для автономной работы. Копирование происходит на 5 уровней в глубину: wget --convert-links -r http://www.linux.org/ Создание и настройка Dial-Up соединения для выхода в Интернет по модему: pppconfig Создание и настройка выхода в Интернет через ADSL-модем: pppoeconf Выполнить последнюю команду: !! Показать последние 50 набранных команд: history | tail -50 Завершить сеанс текущего пользователя: exit Меняет пароль текущего пользователя: passwd Выключение машины: shutdown -h now или: poweroff
Перезагрузка системы: reboot или: shutdown -r now Статистика перезагрузок: last reboot Настройка Wine — НЕэмулятор WinAPI: winecfg Показывает IP-адрес введенного сайта: host UserGroup.ru К содержанию ↑ Команды Linux: работы с файлами и директориями В этом разделе собраны команды Linux предназначенные для: создания и удаления файлов и директорий, команды навигации между ними и команды для назначения владельца и прав доступа. Директории и файлы Выводит текущий путь: pwd Выводит список файлов и каталогов по порядку: ls Выводит форматированный список всех файлов и директорий, включая скрытые: ls -laX Переход в домашнюю директорию: cd Переход в директорию /home: cd /home Создание пустого файла /home/primer2: touch /home/primer2 Показать содержимое файла /home/primer2: cat /home/primer2 Выводит конец файла. Удобно при работе с логами и большими файлами: tail /var/log/messages Редактирование файла /home/primer2: nano /home/primer2 Вторая команда Linux для редактирования файла: gedit /home/primer2
Добавление к концу файла «Последняя строчка» в файл /home/primer2: echo "Последняя строчка" | sudo tee -a /home/primer2 или echo "Строка" >> /home/primer2 Копирует /home/UserName/primer.tx в home/primer.txt: cp /home/UserName/primer.txt /home/primer.txt Cоздает символическую ссылку /home/primer к файлу /home/UserName/primer.txt: ln -s /home/UserName/primer.txt /home/primer Создание директории с именем username: mkdir /home/UserName/username Удаление директории с именем username: rmdir /home/UserName/username Удаление директории с вложенными фалами: rm -rf /home/UserName/username Копирование директорий: cp -lar /dir1 /dir2 Переименование директории: mv /dir1 /dir2 Выводит на экран размер заданной директории. Можно использовать для определения размера файлов: du -sh /home/UserName/ Поиск всех файлов с именем primer: locate primer Права доступа Изменение прав доступа к директории только для /home. 0777 – разрешение на чтение/запись/исполнение для всех групп: [sudo]chmod 0777 /home/ Рекурсивное изменение прав доступа к директории /home. 777 – разрешение на чтение/запись/исполнение для всех групп. Все вложенные директории и файлы будут иметь права 0777: [sudo]chmod -R 0777 /home/ Изменение владельца и группы только для файла /home/primer.txt: [sudo]chown UserName:UserGroup /home/primer.txt Изменение владельца для всего содержимого директории /home: [sudo]chown -R UserName /home/ Команды Linux: работа с архивами Создать tar-архив с именем primer.tar содержащий /home/primer.txt:
tar cf primer.tar /home/primer.txt Cоздать tar-архив с сжатием Gzip по имени primer.tar.gz: tar czf primer.tar.gz /home/primer.txt Cоздать tar-архив с сжатием Bzip2 по имени primer.tar.bz: tar cjf primer.tar.bz2 /home/primer.txt Распаковать архив primer.tar в текущую папку: tar xf primer.tar Распаковать tar-архив с Gzip: tar xzf primer.tar.gz Распаковать tar-архив с Bzip2: tar xjf primer.tar.bz К содержанию ↑ Команды Linux: установка программ Просмотр установленных пакетов RPM — дистрибутивы Показать список установленных пакетов RPM в системе: rpm -qa DEB — дистрибутивы Показать список установленных пакетов DEB в системе: dpkg -l |more Ищет в индексах наличее доступного пакета и выводит на экран краткую информацию о нужном пакете (очень полезная команда для поиска и установки программ из консоли): apt-cache search имя пакета Полная информация о указанном пакете: apt-cache showpkg имя пакета Установка и удаление пакетов RPM — дистрибутивы Установка RPM пакета pkgname.rpm: [sudo] rpm -i pkgname.rpm Удаление RPM пакета pkgname: [sudo] rpm -e pkgname Установка всех пакетов в директории: [sudo] dpkg -i *.rpm DEB — дистрибутивы Обновление списка доступных пакетов из Internet: [sudo] apt-get update Обновление доступной версии установленных пакетов в системе: [sudo] apt-get upgrade
Установка DEB пакета pkgname: [sudo] apt-get install pkgname Удаление DEB пакета pkgname: [sudo] apt-get remove pkgname Установка всех пакетов в директории: [sudo] dpkg -i *.deb К содержанию ↑ Команды Linux: мониторинг работы и просмотр логов. Команды Linux необходимые для мониторинга работы операционной системы. Все показания выводятся на экран в реальном времени. Число, стоящее после команды означает интервал между выводом информации. Информация в реальном времени о загруженных процессах, потребление ОЗУ: top Более расширенная on-line статистика о загруженных процессах (разработчик http://htop.sourceforge.net): htop Показывает log-файл загрузки ОС и нахождения новых устройств: dmesg Показывает расширенную статистику потребления ресурсов системы в процентах (для некоторых дистрибутивов необходима установка пакета sysstat): mpstat 1 Показать расширенную статистику по использованию виртуальной памяти: vmstat 2 Показать расширенную статистику прерываний по устройствам: iostat 2 К содержанию ↑ Команды Linux: информация об устройствах. Информация об уже установленных устройствах (в некоторых дистрибутивах требует доставить пакет procinfo): lsdev Показать полную информацию о модели процессора (частота, поддерживаемые инструкции и т.д.): cat /proc/cpuinfo Показать расширенную информацию о занимаемой оперативной памяти (MemTotal, MemFree, Buffers, Cached, SwapCached,HighTotal, HighFree, LowTotal и т. д.): cat /proc/meminfo Показать размер раздела выделенного под swap: grep SwapTotal /proc/meminfo
Показать информацию о прерываниях: watch -n1 'cat /proc/interrupts' Информация о используемой и свободной ОЗУ и Swap-файле (-m указывает, что отображать нужно в Мб): free -m Показать список всех устройств и их параметров: lshal Показать все устройства в системе (названия взяты из директории /proc/devices): cat /proc/devices Показать обнаруженные PCI-устройства: lspci -tv Показать обнаруженные USB-устройства: lsusb -tv Показать информацию о версии BIOS компьютера: [sudo] dmidecode Выводит строку ModeLine для Вашего монитора на параметрах экрана 1024x768x75Hz: gtf 1024 768 75 Выводит список устройств в системе, их UUID и тип файловой системы: sudo blkid К содержанию ↑ Команды Linux: жесткие диски и файловая система. Информация о файловой системе и жестком диске Информация о всех подключенных жестких и сменных дисках: fdisk -l Полная информация о IDE/ATA жестких дисках: [sudo] hdparm -I /dev/sda Выводит SMART-информацию о разделе жесткого диска /dev/sda1 (необходима установка пакета smartmontools): smartctl -a /dev/sda1 Выводит UUID всех доступных накопителей информации в системе: [sudo] blkid Производительность жесткого диска Показывает производительность жесткого диска: [sudo] hdparm -tT /dev/sda Монтирование разделов жесткого диска Показывает полную информацию о примонтированных устройсвах: mount | column -t
Показывает только примонтированные разделы жесткого диска: cat /proc/partitions Показывает свободное место на разделах: df Монтирует раздел /dev/sda1 к точке монтирования /mnt: [sudo] mount /dev/sda1 /mnt Монтирует большинство CD-ROM`ов: [sudo] mount -t auto /dev/cdrom /mnt/cdrom Монтирует IDE CD-ROM: [sudo] mount /dev/hdc -t iso9660 -r /cdrom Монтирует SCSI CD-ROM: [sudo] mount /dev/scd0 -t iso9660 -r /cdrom Монтирование FreeBSD разделов в Linux: [sudo] mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt Монтирование сетевых ресурсов (SMB): [sudo] mount -t smbfs -o username=vasja,password=pupkin //pup/Video Монтирование ISO-образов: [sudo] mount -t iso9660 -o loop /home/file.iso /home/iso Монтирование раздел с файловой системой FAT 16/32 (к примеру USB-накопитель) к точки монтирования /mnt с возможностью записи: [sudo] mount /dev/sdb1 -t vfat -o rw /mnt Отмонтирует раздел от точки монтирования /mnt: [sudo] umount /mnt К содержанию ↑ Команды Linux: настройка сети. Конфигурация сети Показать параметры всех сетевых: ifconfig Показать параметры сетевого интерфейса eth0: ifconfig eth0 Показывает состояние сетевого интерфейса eth0 (для некоторых дистрибутивов требуется установка пакета ethtool). Команда ethtool применяется только для проводных подключений, не работает с беспроводными интерфейсами: [sudo] ethtool eth0 Принудительно задать скорость сетевому интерфейсу 100Mbit и режим Full duplex и отключить автоматическое определение: [sudo] ethtool -s eth0 speed 100 duplex full autoneg off
Задать основной IP адрес сетевому интерфейсу eth0: ifconfig eth0 192.168.50.254 netmask 255.255.255.0 Задать основной IP адрес сетевому интерфейсу eth0: ip addr add 192.168.50.254/24 dev eth0 Задать дополнительный IP адрес сетевому интерфейсу eth0: ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 Задать дополнительный IP адрес сетевому интерфейсу eth0: ip addr add 192.168.51.254/24 dev eth0 label eth0:1 Запустить сетевой интерфейс eth0: [sudo] ifconfig eth0 up Отключить сетевой интерфейс eth0: [sudo] ifconfig eth0 down Смена MAC адреса: ifconfig eth0 hw ether 00:01:02:03:04:05 Перезагрузка DHCP клиента: [sudo] /etc/init.d/dhcpd restart Проверка сетевого соединения. Пингуется IP адрес 192.168.0.2 (пинговать можно ya.ru): ping 192.168.0.2 Маршрутизация Выводит на экран таблицу маршрутизации: route -n Выводит на экран таблицу маршрутизации: netstat -rn Управление портами (брандмауэр) Показывает список всех открытых портов: netstat -an | grep LISTEN Показывает список всех открытых портов в сеть Internet: lsof -i Активные соединения с интернетом: [sudo] netstat -tup Показывает все открытые сокеты: socklist Список приложений, которые открывают порты: [sudo] netstat -anp --udp --tcp | grep LISTEN Показывает статус firewall (статус iptables):
[sudo] iptables -L -n -v Открывает доступ ко всем портам: [sudo] iptables -P INPUT ACCEPT Открывает доступ ко всем портам: [sudo] iptables -P FORWARD ACCEPT Открывает доступ ко всем портам: [sudo] iptables -P OUTPUT ACCEPT Удаляет все цепочки: [sudo] iptables -X Управление NAT «Поднятие» NAT на интерфейсе eth0: [sudo] iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Перенаправление порта 20022, который использется для ssh: [sudo] iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT --to 192.168.16.44:22 Перенаправление диапазона портов 993-995: [sudo] iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT --to 192.168.16.254:993-995 Проверка статуса NAT: iptables -L -t nat К содержанию ↑ Команды Linux: создание и запись ISO образов. Показывает все доступные CD-ROM: cdrecord -scanbus Создание ISO образов с диска CD-ROM: dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc К содержанию ↑ Команды Linux: пользователи и группы. Команды Linux необходимые для работы с пользователями и группами пользователей. Показывает сводную информацию по текущему пользователю (логин, UID, GID, группы): id Показать информацию о пользователе UserName: finger UserName Показывает последних зарегистрированных пользователей: last Показывает имя текущего пользователя и время входа: who
Добавление нового пользователя UserName: useradd UserName Добавление группы UserGroup: groupadd UserGroup Добавляет пользователя UserName в группу UserGroup (для Debian-подобных дистрибутивов): usermod -a -G UserGroup UserName Добавляет пользователя UserName в группу UserGroup (SuSE): groupmod -A UserName UserGroup Удаление пользователя UserName: userdel UserName Удаление группы UserGroup: groupdel UserGroup К содержанию ↑ Команды Linux: работа с процессами. Все запущенные процессы имеют уникальные номера — PID. Показать все загруженные процессы: ps axjf Показать PID определенного процесса – sshd: pgrep -l sshd [Показать PID вашей оболочки:code]echo $$[/code] Показать PID процесса использующий порт 22: fuser -va 22/tcp Показывает PID процесса имеющего доступ к /home: fuser -va /home Показывает список процессы, которые используют /home: lsof /home Выводит на экран текущее состояние процесса httpd: killall 0 httpd «Убить» процесс с PID 4712: kil 4712 Посылает процессу с PID`ом 4712 сигнал TERM - завершить процесс: [sudo] killall TERM 4712 Посылает процессу с именем httpd сигнал HUP - остановить процесс: [sudo] killall HUP httpd
“Убить” все процессы имеющие доступ к /home: [sudo] fuser -k -TERM -m /home Важные сигналы посылаемые процессам: 1 - HUP остановить процесс (SIGHUP — сигнал, посылаемый процессу для уведомления о потере соединения с управляющим терминалом пользователя.) 2 - INT прервать процесс (SIGINT — сигнал для остановки процесса пользователем с терминала.) 3 - QUIT выйти (SIGQUIT — сигнал, для остановки процесса пользователем, комбинацией «quit» на терминале. Этот сигнал также указывает, что система должна выполнить дамп памяти для процесса.) 9 - KILL “убить” процесс (SIGKILL — сигнал, посылаемый процессам для их немедленного завершения.) 15 - TERM завершить процесс (SIGTERM — сигнал, для запроса завершения процесса.) Более подробно о сигналах можно прочесть тут: Сигналы (UNIX) К содержанию ↑ Команды Linux: Runlevels. После загрузки ядра Linux начинают загружаться различные демоны и программы, такие как NetworkManager, Evolution и т. д., результат которых мы видим у себя после загрузки на рабочем столе. Загрузка каждой службы осуществляется скриптом. Все скрипты лежат в /etc/init.d. Runlevels – это целое число, которое определяет “уровень загрузки”. “Уровни загрузки” бывают: Runlevels=0 Выключение компьютера. Runlevels=1 режим Single-User. Runlevels=2 Текстовый режим без поддержки сети. Runlevels=3 Текстовый режим с поддержкой сети. Runlevels=4 Не используется. Runlevels=5 Графический режим. Runlevels=6 Перезагрузка компьютера. То есть скрипты, которые должны загружаться только в текстовом режиме с поддержкой сети, имеют Runlevels равный 3. Более простой вариант настройки: Очень удобная настройка Runlevels (необходима установка пакета sysv-rc-conf): [sudo] sysv-rc-conf Ручной вариант настройки: Показывает список всех скриптов с соответствующими им Runlevels: chkconfig --list Показывает разрешенные Runlevels только отдельного скрипта, в нашем случае udev: chkconfig --list udev Выставление скрипту udev значений Runlevels по-умолчанию (для Debian-подобных дистрибутивов): [sudo] update-rc.d udev defaults
Добавление скрипту udev Runlevels 3 и 5: [sudo] chkconfig udev --level 35 on Изменить параметры для скрипта udev (для Debian-подобных дистрибутивов): [sudo] update-rc.d udev start 20 2 3 4 5 . stop 20 0 1 6 Отключение у udev всех Runlevels: [sudo] chkconfig udev off Отключение у udev всех Runlevel (для Debian-подобных дистрибутивов): [sudo] update-rc.d -f udev remove К содержанию ↑ Команды Linux: Работа с ядром и модулями. Работа с ядром системы Показать версию ядра Linux: uname -a Работа с модулями ядра Список всех модулей загруженных в ядро: lsmod Загрузка модуля на примере isdn: [sudo] modprobe isdn Создание сжатого образа ядра системы: make Компиляция модуля: make modules Установка модуля: [sudo] make modules_install Установка в ядро системы: [sudo] make install К содержанию ↑ Команды Linux: работа с LiveCD. смена root-окружения на /mnt. После этого коневой раздел, примонтировнный к /mnt, будет использоваться как родной: [sudo] chroot /mnt К содержанию ↑ Команды Linux: конвертирование различной информации. Конвертирование текста Выводит список всех доступных кодировок: iconv -l Смена кодировки. Был файл file_cp1251.txt с кодировкой cp1251, а в итоге получился файл file_utf8.txt с кодировкой utf8: iconv -f cp1251 -t UTF-8 file_cp1251.txt -o file_utf8.txt
Конвертирование PDF в JPEG Конвертируется name.pdf в постраничные JPEG изображения (в некоторых дистрибутивах необходимо установить пакет imagemagick): convert name.pdf name-%03d.jpg Конвертируются JPEG изображения в PDF (в некоторых дистрибутивах необходимо установить пакет imagemagick): convert *.jpeg name.pdf Конвертирование видео mencoder -o videoout.avi -oac mp3lame -ovc lavc -srate 11025 -channels 1 -af-adv force=1 -lameopts preset=medium -lavcopts vcodec=msmpeg4v2:vbitrate=600 -mc 0 vidoein.AVI Конвертирование аудио Копирование треков с AudioCD в текущую директорию wav-файлами: cdparanoia -B Конвертирование wav-файлов в mp3 с качеством 256 kb/s: lame -b 256 in.wav out.mp3 Конвертирование wav-файлов в Ogg Vorbis с качеством 256 kb/s: oggenc in.wav -b 256 out.ogg К содержанию ↑ Команды Linux: печать на принтере. Выбор принтера по-умолчанию. В примере выбран принтер Canon LBP-2900: export PRINTER=lbp2900 Распечатать на принтере Canon LBP-2900 две копии файла name.txt: lpr 2 name.txt Удаление всех задач с принтера по-умолчанию: lprm ZFS packages are available directly from http://zfsonlinux.org/ for Debian as well as other supporting documentation. This also requires a 64bit version of Debian. ZFS Setup Login as root and run the following. wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_1%7Ewheezy_all.deb dpkg -i zfsonlinux_1~wheezy_all.deb aptitude update aptitude install gcc make linux-headers-$(uname -r) aptitude install debian-zfs It will take a while to install. Once completed reboot. Use parted to create/format your disks for the pool. If you don't parted the disk first you can use the -f flag during pool creation however you may end up with a small leftover partition on each drive. Not that the size is noticeable but for completeness lets make a partition that covers 100% of the
disk, , "0% 100%" specifies the full disk. parted /dev/sdb mklabel gpt mkpart zfs 0% 100% quit Next we need to decide who should access the mount point prior to creating the pool. If you plan on using Samba to share out the pool space and setup user authentication using groups you will need to make the mount dir and set permissions prior to creating the storage pool. If not then when mounting the pool it will create /storage as root:root. You could always do this later as well. mkdir /storage chown root:storage /storage chmod 0775 /storage Next we need to create a storage pool using zpool, storage is your pool name and -m /storage is your mount point. Each disk is listed afterwards. For testing purposes we can use the drive path, ie. "/dev/sdb1". For production I suggest you use the disk IDs to create the storage pool. Make sure you keep a space between each disk you are adding to the pool. Specifying a raid type is done here as well. The following is a list of each one, mirror - Raid1 raidz - Raid5 raidz2 - 2 parity disks (Raid6) raidz3 - 3 parity disks You can also nest raid levels as well. This option goes into the create command. Leaving this blank creates a stripe set spanning across all added disks. zpool create storage -m /storage /dev/sdb1 /dev/sdc1 zpool create storage -m /storage mirror /dev/sdb1 /dev/sdc1 zpool create storage -m /storage raidz /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 Finding your disk IDs, cd /dev/disk/by-id ls -l This should list out all of your disk IDs with where they are pointed.
If you get an error about the by-id folder being missing and are running this as a VM on ESXi, edit the VMs config (or VMX file) and add the line, disk.EnableUUID = "TRUE" The IDs that contain -part1 are the partitions we created. Copy down these strings. Using Putty if you have SSH is extremely handy here as you can copy the IDs right from the terminal. Once we have the by-id value we need to replace the disks in the above zpool create command with the proper disk paths.
/dev/sdb1 would become /dev/disk/by-id/scsi-36000c29381ac32eb8dfb4346534ce88e-part1 Your storage pool should now be created. You can check the status using, zpool status
Lets also check using the zfs command as well as verifying our mount point, zfs list mountpoint /storage
I'm using two 30GB disks so my total available storage space is 58.6GB as expected. cd into the /storage directory and you are now in your zfs storage pool. Next we need to handle mounting the storage pool on boot. You can manually mount the pool using the following command, zfs mount -a To setup automatically mounting the pool at boot we need to edit the /etc/default/zfs settings, nano -w /etc/default/zfs Edit ZFS_MOUNT='no' to 'yes' and ZFS_UNMOUNT='no' to 'yes'. Ctrl+X then y and enter to save changes. Reboot the machine. When it's back up check the storage pool again. zfs list mountpoint /storage If everything came back the same as before the zfs pool is mounted to /storage after your reboot. Next we need to decide how we want to mount your new storage pool for access. If you are on a windows based environment I suggest Samba. You can also use NFS directly from zfs to share out the pool. Setting up Samba If you don't have it installed yet run the following, aptitude install samba Once it's done installing we need to edit the config. nano -w /etc/samba/smb.conf Find the line security = user and uncomment it. Just below add the following, map to guest = Bad User Scroll to the end of your file and create your share, [storage] comment = zfs share path = /storage browsable = yes guest account = guest read list = guest write list = username
create mask = 0775 directory mask = 0775 force group = storage Restart Samba for the changes to take effect. /etc/init.d/samba restart Next we need to create some users and a group to access the share. groupadd storage useradd guest Remove the password from the guest account and add the user to Samba, passwd -d guest smbpasswd -a guest Enter twice to use nothing as the password. Now add your write user, useradd -G storage username passwd username smbpasswd -a username Use the password for the windows account for both the linux and Samba accounts. Restart Samba for the settings to take effect, /etc/init.d/samba restart Now you should be able to login as guest and have read only permissions as well as login as your username and have write permissions. Don't forget to add other users if you want as well. Final Notes and Extras You should now be able to reboot, your ZFS share should automatically mount, and Samba will share it out! If you have any scripts that create folders if not found you should modify them to wait for the ZFS share to mount. If you don't your mount will fail and your storage pool mount point will appear empty or have the generated files in it. Don't panic! The files are all still located on the storage pool, the mount just failed because another script created it as a folder instead. To verify run the following, mountpoint /storage If it does not return as a mount point you will need to figure out what is causing the folder to be generated before the storage pool mounts. Many scripts can cause this. A simple fix is to sleep the startup of the script until the mount point is returned as mounted. start_service() { if mountpoint -q /storage; then echo "ZFS mountpoint found: Starting servicename" *start service code else echo "ZFS mountpoint not found: Sleeping $DESC" sleep 10 start_service fi }
Depending on how the script is written you may need small modifications or large modifications but the principle is all the same. Check for the mount point using the following, if mountpoint -q /storage; then start else sleep fi Your script should pause and wait for the ZFS storage pool to mount before starting and giving you a heart attack. You can also mount the zfs pool using /etc/fstab to avoid the above loop. Simply set your pool to legacy mode using the following, zfs set mountpoint=legacy storage Then you need to set your mount in /etc/fstab, nano /etc/fstab Insert the following line at the bottom, storage /storage zfs defaults 0 0 Adding Disks to the Pool Adding disks to the storage pool after creation is a simple process. Start by preparing your disk with parted like we did when creating the pool. Once done find the ID of the disk. zpool add -f storage /dev/disk/by-id/scsi-36000c29b4f7f2f3a8f6373f36c9fee85-part1 Verify the disk was added successfully, zpool status
Check again using zfs to verify the increase is pool size, zfs list
That's all there is to it. Enjoy the added storage space! Moving a Pool Before moving the pool export it, zpool export storage You may need to force it if errors are returned. I suggest rebooting first and trying the export again before forcing it with the "-f" flag. Once moved after installing ZFS import it, zpool import storage This is handy if the host machine needs re-installed for whatever reason. Maintenance Tasks You should also setup some maintenance tasks on your storage pool to check for problems. The
following cron job can be created to scan the pool. crontab -e Add the following line, 50 23 * * 6 /sbin/zpool scrub storage This will run a scrub on the pool every Saturday at 11:50 pm. Adjust to your needs. Take note that this will increase disk usage so you should scheduled it for a time when no one will notice. Update Linux Kernel spl-dkms and zfs-dkms are compiled for your current kernel build if you update you will need to reconfigure. dpkg-reconfigure spl-dkms dpkg-reconfigure zfs-dkms How to setup a NAS using Debian 7.0 Wheezy with ZFS and SMB and NFS share By Ben | 2013/05/08 0 Comment Compiled from info at below sources: http://www.debian-administration.org/articles/478 http://blog.rebelit.net/?p=526 http://pthree.org/2012/12/31/zfs-administration-part-xv-iscsi-nfs-and-samba/ http://docs.oracle.com/cd/E19253-01/819-5461/gayog/ https://blogs.oracle.com/timthomas/entry/creating_zfs_file_systems_from http://www.en.sysadmin-cookbook.net/zfs/ http://lildude.co.uk/zfs-cheatsheet http://www.samba.org/samba/docs/using_samba/ch09.html http://zewaren.net/site/?q=node/86 #Install Debian Wheezy using the netinst iso then select below software to be installed Filesharing (this will install samba and NFS) SSH Server (needed to be able to connect remotely via ssh) Once Debian instaltion is finished then follow below steps.
apt-get install gcc make linux-headers-$(uname -r) wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_1%7Ewheezy_all.deb dpkg -i zfsonlinux_1~wheezy_all.deb apt-get update apt-get install debian-zfs #Once above steps are completed then test to make sure zfs is installed correctly by issueing below commands.
zpool status should return: no pools available zfs list should return: no datasets available There should be no errors if ZFS has been successfully installed. Create the ZFS storage pool where the data will be stored. I will create a mirror zfs pool with 2 disks. #list all local disk by id ls -l /dev/disk/by-id The above comand will list all disk by ID which we will use to create the pool this way it won't be a problkem if the disks are moved from one slot to another.
#Next we need to create the gtp partition table on the disks (sdb is the first data disk & sdb is the second data disk) apt-get install parted parted /dev/sdb mklabel gpt mkpart zfs 0% 100% quit parted /dev/sdc mklabel gpt mkpart zfs 0% 100% quit #create a new mirrored zpool (align to 4k sectors for new disks) zpool create <poolname> <raidtype> -o ashift=12 <disk1> <disk2> zpool create zpool1 mirror -o ashift=12 scsi-SATA_QEMU_HARDDISK_QM00002 scsiSATA_QEMU_HARDDISK_QM00003 This create a zfs pool and mount mount point below /zpool1 #Next we need to create a zfs volume / file system to store the data ("-o casesensitivity=mixed" set the share to non case sensitive to work around Microsoft Windows limitation) zfs create -o casesensitivity=mixed zpool1/volume1
#this created a new volume with mount point /zpool1/volume1 #we can also create sub file system under a file system, for example zfs create -o casesensitivity=mixed zpool1/volume1/share1 #this created a new volume with mount point /zpool1/volume1/share1 Sharing via SMB(Windows shares) #share the above file systems as SMB / Windows share #This require samba to be installed (this should have been installed with the initial debian install) or using command apt-get install samba #Install an extra sambatools package apt-get install samba-tools #Confirm smb is running ps -ef | grep smb #You should get something like root 2167 1 0 14:32 ? 00:00:00 /usr/sbin/smbd -D root 2199 2167 0 14:32 ? 00:00:00 /usr/sbin/smbd -D root 14798 2855 0 15:33 pts/0 00:00:00 grep smb #Microsoft Windows machines share does not expect smb share to be case sensitive so we need to make sure this is set (using -o casesensitivity=mixed ) when we create the share! Example: zfs create -o casesensitivity=mixed zpool1/volume1
Before sharing the zfs volumes we must create local and samba users who can access those shares #Add the nologin shell to the shell list echo "/usr/sbin/nologin" >> /etc/shells ##Create a new user name user1 adduser user1 #Set the user shell to the to shop login usermod -s /usr/sbin/nologin user1 #Create a new group group1 who can access the share groupadd group1
#Add the user user1 to the group1 group (note -a means keep old groups) usermod -a -G group1 user1 #Set the user password passwd user1 #Set the owner of the share1 share1 to the new group1 group and set files and folder to group permisions chgrp group1 /zpool1/volume1/share1 chmod -R 770 /zpool1/volume1/share1 #Add the new samba user who can access the new share smbpasswd -a user1
Since SMB intergration into ZFS is not fully working we must use the manual samba way.
#Let share the zpool1/volume1/share1 volume as a SMB / Windows share using below commands zfs set sharesmb=on zpool1/volume1/share1 #Confirm the share works by using below command. This should show the new share on the list of avialable shares. smbclient -U guest -N -L localhost #Some manual steps to edit the samaba config file /etc/samba/smb.conf to share the zfs volumes. #Let share out the zpool1/volume1/share1 volume and allow users in the group share1users to access the share with read write permisions, using steps below #Edit the samab config file nano /etc/samba/smb.conf #Comment out the below line by putting a # in front of it else accessing from Windows 7 ect will be very slow #valid users = %S #Also add below lines to the [global] section to help with Windows connection speed issues socket options = TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=65536 SO_RCVBUF=65536 preferred master = no
#Add the below lines to the end config of the file [iso] comment = share1 path = zpool1/volume1/share1 browsable = yes
writable = yes read list = @group1 write list = @group1 create mode = 0660 directory mode = 0770 force group = share1users
#Note: to allow guest access (need to set per individual share) the guest user must be setup as per below Remove the password from the guest account and add the user to Samba, passwd -d guest smbpasswd -a guest Press Enter twice to the password prompt to make the password blank.
#Restart the samab service for the above chnages to take affect service samba restart Sharing via NFS #NFS package should already be installed via initial debian install #setup NFS #The NFS daemon will not start unless there is an export in the /etc/exports file echo '/mnt localhost(ro)' >> /etc/exports #Start the NFS daemon /etc/init.d/nfs-kernel-server start #confirm NFS is running and sharing showmount -e localhost #This should show something like Export list for localhost: /mnt localhost #We can now start sharing ZFS datasets / volumes #Let share the zfs volume zpool1/volume1/share1 via NFS and allow Read & Write to the subnet 192.168.1.0/24 zfs set sharenfs="rw=@192.168.1.0/24" zpool1/volume1/share1
#Let confirm NFS is sharing the new zfs volume
showmount -e localhost or from a remote computer showmount -e <ip of this server> #This should show something like Export list for localhost: zpool1/volume1/share1 192.168.1.0/24 /mnt localhost #We need to make sure NFS share the ZFS volumes on boot, so we need to install the /etc/default/zfs config file #Let edit the /etc/default/zfs file nano /etc/default/zfs #Change the below lines from ==> to ZFS_MOUNT='no' ==> ZFS_MOUNT='yes' ZFS_SHARE='no' ==> ZFS_SHARE='yes'
#To by pass some issue with "parallel init system" run below command which force a serialized boot order touch /etc/init.d/.legacy-bootordering #You should now be able to mount the NFS export from an NFS client to confirm all if working (make sure the client is in the allow ip range set above or else they can't access the sahre due to permision not allowed). Below are some misc notes #To un-sahre an NFS share use command zfs set sharenfs=off <share> example: zfs set sharenfs=off zpool1/volume1/share1
Linux Kernel Updates If you update you linux kernal after insatlling zfs the the spl-dkms and zfs-dkms packages needs to be re config using below commands. dpkg-reconfigure spl-dkms dpkg-reconfigure zfs-dkms Displaying ZFS Share Information #For SMB share, below command will display all SMB shares zfs get sharesmb
#For NFS share, below command will display all NFS share zfs get sharenfs ZFS Maintenance Tasks #Add below line to the crontab using "crontab -e" to check the zpool for erroy every sunday 0 0 * * 0 /sbin/zpool scrub zpool1 How to check the zfs pool status Use below command: zpool status #Show NFS version nfsstat –nfs Category: Uncategorized
Выбор драйвера (блока управления шаговым двигателем) Механическое устройство ШД описано в Статья о ШД; Как уже говорилось ранее, ШД делятся на биполярные и униполярные. Биполярные ШД имеют всего 2 обмотки и 4 провода.
Шаг. 1a 1 2 3 4
+ +
1b + + -
2a + + -
2b + +
Обмотка 1 полярность прямая обратная обратная прямая
Обмотка 2 полярность прямая прямая обратная обратная
Типовая схема включения биполярного ШД:
В двух словах о работе схемы. Как видите, каждая обмотка включена по отдельной мостовой схеме. По центру находится обмотка двигателя, плюс источника питания подается на верхнюю точку схемы, минус - на нижнюю. Диоды служат для защиты транзисторов от ЭДС самоиндукции и их влияние на схему мы рассматривать не будем. При подаче логической единицы на вход 1А, включается транзистор Q1 и выключается Q3. Таким образом, напряжение питания (через открытый Q1) попадает на левую точку подключения обмотки. В это время на вход 1В подается логический нуль. Это открывает транзистор Q4 и закрывает транзистор Q2. Таким образом, на правой точке подключения обмотки оказывается напряжение минуса источника питания. В итоге, т.к. на левой клемме обмотки плюс, а на правой минус, через обмотку начинает течь ток, и ротор ШД поворачивается на один шаг. Если теперь на А1 подать логический нуль, а на А2 логическую единицу, все транзисторы перейдут в противоположное состояние, и обмотка окажется запитана в обратную сторону, т.е. на правой клемме плюс питания, а на левой минус. Это заставит ШД сделать еще один
шаг. А так как обмотки всего две, то возможных вариантов протекания тока всего 4. В таблице в начале статьи приведены комбинации логических состояний на входах 1А 1В 2А 2В чтобы двигатель мог шагать в любую сторону. Минусы этой схемы - сквозные токи, которые возникают когда транзисторы одного плеча переключаются из одного состояния в другое. Иными словами, когда транзистор Q1 еще не закрылся а транзистор Q3 уже начал открываться - в этот момент ток, течет от плюса источника питания через оба полуоткрытых транзистора на минус. Это вызывает разогрев транзисторов и искажение формы сигнала на обмотке. В специализированных драйверах эта проблема решена аппаратно. Если Вы разрабатываете свою схему, вероятно, Вам необходимо подробнее прочитать о этом эффекте и способах его преодаления, например, в книге "Искусство схемотехники" П. Хоровица и У. Хилла. Но на принцип работы моста это никак не влияет - каждое плечо подает на клемму обмотки либо плюс либо минус питания. Униполярные ШД имеют следующую схему: Шаг. 1a 1 2 3
+
4
+
1b + +
Типовая схема включения униполярного ШД:
2a
+
Обмотка 1 полярность прямая обратная обратная
Обмотка 2 полярность прямая прямая обратная
+
прямая
обратная
2b
+ +
Работа униполярной схемы проще для понимания. Центральный провод каждой обмотки всегда подключен к плюсу питания. Диоды нужны так же для защиты от обратного ЭДС. При открытии транзистора Q1 ток течет через верхнюю половину обмотки на минус питания. При открытии Q2 ток течет через нижнюю половину обмотки на минус питания. Здесь нет проблемы сквозных токов. Как видно из схем, биполярный ШД имеет более простую схему обмоток, но белее сложную схему управления. Униполярный двигатель имеет более сложную схему обмоток но более простое управление. Бывают двигатели, которые можно включать и так и так, т.е. все зависит от драйвера ШД - какой тип двигателя он поддерживает. Типовая схема генератора сигналов для вышеприведенных схем:
На вход генератора подается логический сигнал Dir и Step. Первый определяет направление вращения двигателя, а точнее порядок смены логических состояний на выходе 1А 1В 2А 2В. Второй - Step - тактует шаги и непосредственно указывает схеме выработать следующее табличное логическое состояние на выходах. Я не буду рассматривать работу триггеров и логических вентилей в этой схеме, читатель, которому это интересно, найдет разъяснения в книги "Цифровая схемотехника". Как видите, электрические схемы управления шаговыми двигателями очень простые. Действительно, в интернете есть много вариантов таких схем на микросхемах 555ТМ7 и силовых ключах. Они дешевы, выполняют свою функцию и не требуют наладки. Более сложные схемы, по сути, являются лишь улучшенными вышеприведенными схемами, в которые добавлена регулировка тока (обратная связь по току) и возможность дробления шага. Так же есть специализированные микросхемы-драйверы управления ШД. Например,TB6560(PDF). Она содержит в себе микроконтроллер, в который уже внесены таблицы Брадиса и который формирует правильную синусоиду для разных режимов полушага и имеет возможность программной установки токов обмоток. К примеру, цена повторения вышеприведенных схем составляет примерно 250 рублей на один ШД. Цена специализированной микросхемы TB6560 составляет 400 рублей, плюс обвязка - выйдет около 700 рублей на канал. Готовые платы управления можно купить примерно за 1500 рублей за канал. Если у читателя хорошо со схемотехникой, сделать самому - труда не составит. Еще один пример реализации Step/Dir драйвера:
Как видите, драйвер реализован на логическом контроллереL297(pdf)и токовых усилителяхL6203(pdf). Схема поддерживает регулировку тока обмоток и полушаговый режим, при этом не требует наладки и программирования. Так же, я бы порекомендовал посмотреть на связку L297+L298. ДрайверL298(pdf)допускает питание до 46 Вольт, ток обмоток до 5 Ампер.
Статья о ШД
• Выбор двигателей для перемещения кареток Прежде всего, необходимо уточнить какой двигатель Вы хотите использовать. Вариантов, по большому счету, только два: шаговый или серво-привод. Для правильного выбора, давайте разберемся с конструкцией обоих устройств. Шаговый двигатель (ШД) - это двигатель, который имеет две обмотки (отличия униполярных и биполярных мы рассмотрим в третьей части книги, т. к. на принцип работы это не влияет). При подаче напряжения на одну из них — вал делает поворот на конструктивно заложенный градус (обычно 1,8), при подаче на другую — еще один поворот на такой же градус, т. е. при попеременной подаче напряжения на обмотки, двигатель будет шагать ровно на то количество шагов, какое количество смен напряжения было произведено. Собственно, поэтому он и называется "шаговым". Его плюсы в простоте управления и отсутствии необходимости обратной связи, т. е. если вы сформировали 20 импульсов по часовой стрелке, можно считать, что вал повернулся на 20*1,8=36 градусов, и если у Вас ШВП дает 4 мм на оборот, то каретка проехала 4*36/360=0,4 мм. Но, на этом его плюсы заканчиваются. Дело в том, что, вопервых, при снятии тока с обмотки вал двигателя начинает легко вращаться, а, значит, сказать - где каретка после выключения питания - Вы не можете. Во-вторых, двигатель обладает инерцией и (внимание!) не может моментально начать вращаться с максимальной частотой и, если Вы подаете на двигатель ускоряющиеся импульсы, то он раскручивается и может разогнаться до паспортных оборотов. Но, если во время его вращения на больших оборотах Вы резко прекратите подачу импульсов, то он мало того, что прокрутится еще несколько лишних шагов по инерции, но еще и остановится. На практике это плохо вот чем: программа управления станком ни на секунду не должна прерывать подачу импульсов на вращающийся ШД потому что, если Ваш Windows слегка призадумается,то, как минимум, Ваш станок собъется с координат, как максимум, -двигатель заклинит и он будет жужжать, пока частота импульсов не вернется к значению, когда ШД сможет опять подхватить вращение. В первом случае Вы просто "запорите" заготовку, во втором- каретка ударит по каркасу станка и, возможно, повредит ШВП или сорвет крепеж. Поэтому, управление ШД требует так называемого реального времени в управляющей программе, т. е. гарантированного времени реакции на события. Ни одна ОС Microsoft не является системой реального времени, поэтому ее практически не используют в серьезных контроллерах управления станками. Еще один минус ШД — потеря момента при повышении оборотов, т. е., грубо говоря, если на 1000 оборотах в минуту Вы можете развить на валу 20 кг силы, то при 5000 оборотах Вы сможете развить только 3 кг. Поэтому, я советую ставить более мощные ШД, чем показывают расчеты. Это
поможет Вам развить большую скорость перемещения, при этом стоимость увеличится незначительно. Серво-привод — это обычный синхронный или асинхронный двигатель, чаще всего безколлекторный. Это означает, что управлять им возможно изменением частоты и эпюры управляющего напряжения. Однако, сказать сколько раз повернулся вал, здесь так просто нельзя, и поэтому на его вал прикрепили специальное устройство — энкодер. Он показывает сколько оборотов сделал вал и, соответственно, управляющая программа (или контроллер) рассчитывает сколько еще надо крутить до заданной координаты. Наличие сложного управления током и энкодера сильно усложняет управление серво-приводом и сказывается на стоимости. Однако, серво-привод лишен и еще одного важного недостатка — он не теряет момент на высоких скоростях и позволяет гонять каретку значительно быстрее ШД тех же габаритов. Важно также, что серво-привод -это замкнутая система управления, т. е. сигнал о занятии определенной координатной позиции вызывает формирование ряда управляющих воздействий на привод, в частности- расчет времени разгона, линейного движения и торможения привода, причем, все это происходит при постоянном контроле фактического положения исполнительного механизма. Совсем просто говоря, в такой системе невозможны пропуски шагов, и имеется возможность выжать из двигателя максимальную скорость и момент. Я рекомендую остановиться на ШД, если длина станка около метра и перейти на серво, если Вы строите большой станок. Но и ШД можно применять в больших станках, и серву можно поставить в настольный. Крепеж сервы и ШД совпадают, поэтому позднее их можно заменить на другой тип (Но это потребует и смены электроники). Есть еще интересный вариант: повесить на вал ШД энкодер и тогда один из недостатков ШД, связанный с пропуском шагов, будет решен. Но это решение удорожит конструкцию. Стандарт называется NEMA Stepping Motor Dimension. Вот табличка из него, для двигателей применимых в ЧПУ. Dimension inches NEMA Motor Mounting Dimensions NEMA 17
NEMA 23
NEMA 34
NEMA 42
Motor Shaft Diameter
.1968
.250
.375
.625
Motor Shaft Length*
.945
.81
1.25
1.380
Pilot Diameter
.866
1.500
2.875
2.186
Pilot Length*
.080
.062
.062
.062
Mounting Bolt Circle
1.725
2.625
3.875
4.950
Bolt Hole Size
4-40 UNC
.195
.218
.281
Bolt Hole Distance (square)
1.220
1.856
2.740
3.500
* Dimensions can be less than indicated Электрическое устройство ШД описано в Статья о драйверах.
Статья о направляющих
Выбор направляющих От направляющих зависит максимальное усилие на инструменте и точность позиционирования (повторяемость). Направляющие разделяют по способу крепления на многоточечные и двухточечные а так же по профилю подшипника скольжения на цилиндрический и полуцилиндрический. Двухточечное крепление рационально для станков со станиной плохой геометрии где за счет точного выставления двух точек крепления достаточно легко добиться параллельности направляющих и, следовательно, равномерности движения каретки. Рельсовые направляющие обычно крепятся большим количеством болтов к каркасу станка, и в случае кривизны этого каркаса — рельса так же будет деформирована, что приведет к нелинейному движению портала. Но, преимущество рельсовых направляющих- в большей точности и грузоподъемности при том же размере. Связано это с тем, что двухточечные направляющие несут на себе весь груз каретки и должны быть достаточно жесткими, чтобы не прогибаться под ее весом. В то время как рельсовые направляющие
передают часть нагрузки на каркас станка, и, следовательно, для подъема того же груза могут быть тоньше двухточечных. Каркас вообще трудно сделать идеально ровным. Причин много, но основные -это уводы металла при сварке, недостаточная жесткость крепежа, невозможность найти юстировочную платформу с высокой степенью плоскостности. Все это приводит к тому, что выравнивать направляющие приходится с помощью тонких шайб. Еще хуже дела обстоят с бочкообразными и трапециевидными неровностями. Там приходится вносить корректирующие формулы в настройки ПО управления. Еще одним очень важным моментом является сама конструкция кареток. Каретка — это блок, непосредственно перемещающийся по направляющим той или иной конструкции. Каретка может быть выполнена на основе подшипника скольжения или подшипника качения. Конечно, качение предпочтительнее, но сложнее в реализации и естественно дороже. Кроме того каретки скольжения достаточно быстро вырабатываются и в них появляются люфты, что ведет к потере точности станка. В таких каретках обычно имеентся втулка из тефлонового или графитсодержащего материала, которая вырабатывается и которую можно достаточно просто заменить на новую. В каретках качения подшипники практически вечны, если, разумеется работают в паспортном режиме и в чистой среде. т. е. пользователь регулярно проводит чистку и смазку станка. Многие изготавливают каретки самостоятельно, просто из стоящих накрест подшипников. Я не сторонник таких решений, и вот почему. Первое — оригинальные каретки имеют так называемые замкнутые сплошные подшипники, т. е. между направляющей и кареткой есть специальные длинные бороздки в которых катятсы шарики. Но хитрость в том, что эти шарики катятся «змейкой» и по специальной возвратной бороздке возвращаются в исходную точку. Это позволяет как бы обкатывать направляющую со всех сторон и непрерывно катить шарики. Соответственно, такая каретка дает одинаковый люфт и нагрузочную способность по всем направлениям, перпендикулярным направляющей. В то время как самодельные каретки крестовой конструкции всегда катаются подшипниками по одной траектории, и накатывают бороздки на направляющих в одном и том же месте. Более того, из-за невозможности с одинаковой силой обжать все подшипники, преднатяг в разных направлениях тоже становится разным. А это в свою очередь ведет к неравномерности прогиба направляющих и нелинейному движению каретки при разновекторных нагрузках. Здесь надо отметить еще один характерный момент: в статике, каретка может ездить очень хорошо и линейно. Но станок имеет несколько одновременных движущихся частей, связанных друг с другом и воздействующих друг на друга в разных направлениях и с разным плечем. Поэтому в динамике, на направляющие действуют очень много разнонаправленных и в том числе ударных нагрузок. Поэтому, чем качественнее выполнен этот узел, тем меньше будет взаимное влияние воздействий и тем точнее будет фактическая точность станка. Подводя итог, можно сказать, что направляющие — очень важная часть станка, и если есть возможность сделать ее качественно и на века, то это стоит сделать.
Статья о шпинделе Выбор шпинделя. Под шпинделем я буду понимать двигатель, на который надет патрон (цанга) для удержания и
вращения рабочего иструмента (фрезы, сверла, ножа, гравера). Шпиндели условно можно разбить на две группы — промышленные и любительские. Промышленный шпиндель специально разработанное устройство, обычно рассчитанное на высокую боковою нагрузку, имеющее сложную систему охлаждения (воздушную или водяную) и смазку. Любительскими можно называть любую дрель или бытовой фрезер. Хочу обратить внимание читателя на то, что обычная бытовая дрель рассчитана на продольную нагрузку, т. е. на сверление отверстий и потому имеет очень посредственные подшипники удержания вала. При работе на станке нагрузки преимущественно перпендикулярны оси шпинделя. Поэтому, качественный шпиндель имеет очень хорошие подшипники, рассчитанные на такие нагрузки. Промышленный шпиндель, как правило, не требует смазки и чистки на протяжении всего срока эксплуатации. Кроме того, специализированный шпиндель имеет так называемый цанговый зажим, хорошо отбалансированный, который позволяет зажимать инструмент со стандартным хвостовиком (об этом будет подробнее в разделе об инструменте). Обычно в станках используется цанга ЕР11 или ЕР13, которая позволяет зажимать инструмент с рабочим хвостовиком 2,5 — 3,0 - 3.2мм. Вряд ли Вам потребуется промышленная цанга ЕР25, она позволяет зажимать инструмент с хвостовиком 6мм. Это инструмент для снятия больших слоев металла. Предполагаю, что выбранные Вами направляющие просто не позволят работать с такой нагрузкой, т. е. конечно имеется фреза и с рабочим диаметром 2мм при хвостовике 6 мм, и она будет так же эффективна как фреза с хвостовиком 3.2мм, но при использовании фрезы на 10мм при хвостовике 6мм у Вас деформируются направляющие, и результатом будет лишь поврежденный станок. Так что, не гонитесь за максимальным диаметром рабочего инструмента. Как я уже говорил, станок должен быть сбалансирован. Поэтому, остановитесь на цанге ЕР-13 — этого Вам будет достаточно на многие годы. Что будет, если обычную дрель поставить на станок? Работать конечно будет, но по мере выработки подшипников, будет увеличиваться биение патрона и, соответственно, точность позиционирования инструмента будет уменьшаться. Кроме того, станок, обычно при тонких работах, делает множество мелкошаговых проходов и шпиндель работает к ряду не один час. Дрель может перегреться и сгореть, или в ней сработает тепловая защита и она остановится. Так как управляющее ПО не имеет представления о состоянии дрели, то будет продолжать движение инструмента даже после остановки вращения. Это неминуемо приведет к поломке рабочего инструмента. Мощность шпинделя. Здесь правило — чем больше, тем лучше. Для мелких сверлильногравировальных работ достаточно 400-600 ватт. Для фрезеровки металлов и толстых слоев древесины достаточно 1000-1400 ватт. Как универсальный шпиндель, способный выжать из Вашей фрезы и системы подачи максимум — шпиндель на мощность выше 2000 ватт (2кВт). Однако, здесь нужно оговориться. Фрезерование бывает двух типов — силовое и скоростное. Это будет рассмотрено отдельно, но пока достаточно понимать, что мы можем либо быстро крутить фрезу и медленно ее подавать, либо медленно крутить фрезу, но быстро ее подавать. Профессиональные станки используют силовое фрезерование — как самый быстрый способ выборки заготовки. Для этого в станок вводятся режимы резания, в которых указывается для конкретной фрезы максимальная скорость подачи, скорость заглубления, скорость вращения. Это позволяет выжать из инструмента максимум производительности, не перегревая и не повреждая его. Если Ваш станок не в состооянии развить необходимое усилие подачи (напоминаю, это важнейший параметр станка), то единственный вариант, который Вам остается — раскрутить шпиндель до максимальных оборотов и потихоньку передвигать по заготовке. Это и будет скоростное фрезерование. Возвращаясь к выбору шпинделя, исходя из вышеизложенного, нужно выбрать — или быстрый шпиндель или мощный, т. е. способный развить на инструменте максимальный крутящий момент. Дорогие специализированные шпиндели не требуют компромисса и могут развивать скорость выше 20 тысяч оборотов и при этом передавать на фрезу усилиет более 2000 ватт. Практически, Вы будете фрезеровать на скорости вращения 8-15 тысяч оборотов.Но очень быстрое вращение не всегда хорошо. Например, дерево, если его выбирать очень маленькими кусочками, образует мелкую пыль,
которая затирается между заготовкой и фрезой и начинает подгорать. Это приводит к перегреву фрезы и заготовки. Стоимость промышленно шпинделя с трехфазным питанием и водяным охлаждением, с мощностью 1.5кВт — около 9000 рублей. Но к нему нужен преобразователь частоты, который стоит около 3000 рублей. Стоимость специализированного шпинделя с воздушным охлаждением — около 8000 рублей. К нему также нужен преобразователь частоты (ПЧ). Стоимость фрезера Kress-1050 4000 рублей — это один из самых хороших имеющихся на рынке устройств. Кроме того, в интернете присутствует масса рекомендаций по замене в нем подшипников и доработке его до более высокого уровня. Как бюджетный вариант — самое что надо. Стоимость дрели — 1200 рублей. Я не рекомендую этот вариант (исключение- применение на станке, использующемся только для координатного сверления (например, печатных плат). Отдельно отмечу трехфазные шпиндели. Они имеют три провода питания, одну нейтраль и один провод заземления. Их нельзя напрямую подключить к бытовой (однофазной) сети. Для их подключения необходимо из одной фазы сделать три. Делается это с помощью преобразователя частоты (ПЧ). Устройство выпрямляет переменный ток и генерирует из него переменный ток другой частоты и фазности. Здесь необходимо отметить, что ПЧ представляет множество сервисных функций. В частности, если входное напряжение всегда 50 Гц (в России) и поменять это Вы не можете, то на выходе устройство развивает частоту от 1 до 400 Гц в зависимости от уставки. Применительно к нашим задачам, это означает возможность установки частоты вращения шпинделя. Кроме того, ПЧ может управляться от ПО станка, и программа автоматически установит необходимые обороты шпинделя в соответствии с таблицей скоростей для заданного материала. Более того, дорогие ПЧ имеют в своем арсенале так называемое векторное управление двигателем. Не вдаваясь в технические нюансы, скажу, что это позволяет развивать больший момент на инструменте посредством косвенного (по фазовому сдвигу тока) определения фактической скорости шпинделя и своевременного изменения эпюры формируемых ПЧ импульсов. Кроме того, ПЧ позволяет установить скорость разгона и замедления оборотов шпинделя, что так же положительно сказывается на его ресурсе (хотя в некоторых источниках это опровергается). Так же из сервисных функций ПЧ можно отметить защиту от превышения тока потребления шпинделя, которая позволяет отключить шпиндель при выходе нагрузки за устаноовленный порог вследствии, например, ошибки в выборе скорости подачи. И еще один важный момент — ПЧ может выдавать сигнал готовности шпинделя, т. е. сигнализировать ПО, что шпиндель вышел на заданные обороты или отклонился от них. Это позволяет останавливать выполнение программы и сберечь инструмент при неожиданном отключении шпинделя. Таким образом, наличие ПЧ сильно улучшает надежность и удобство использования шпинделя. Система охлаждения шпинделя бывает воздушная или водяная. Воздушная — как у обычной дрели, где на валу шпинделя расположен вентилятор. Минус этой системы в том, что она, вопервых, работает как пылесос, всасывая в шпиндель все то, что Вы вырезали из заготовки, а, во-вторых, эффективность работы вентилятора зависит от скорости вращения вала, что на низких скоростях вращения может привести к перегреву шпинделя и выходу его из строя. Водяная система лишена всех недостатков воздушной и очень эффективна. Но требует доработки гидравлики. Я использую стандартные пищевые шланги с внешним диаметром 8мм и внутренним 6мм. Первые мои станки я делал из компьютерной системы водяного охлаждения процессора компании Termaltake. Она содержит насос, радиатор и вентилятор. Но достаточно дорога. Позже я перешел на использование в качестве насоса — бензинового насоса от автомобиля. Он более надежен и менее дорог. Обратите внимание, что бензонасосы бывают среднего давления и низкого. Впрысковые машины снабжаются насосами среднего давления и развивают около 3 атмосфер. Нам столько не надо. Насосы карбюраторных автомобилей развивают давление 0.1-0.3 атмосферы — хороший вариант. Еще есть варианты насосов для аквариумов, но это совсем крайний вариант. Надежность бензонасоса и
аквариумного насоса — не сопоставимы. Помните, запуск шпинделя без циркуляции воды приведет к его перегреву и выходу из строя. Воду охлаждения можно приготовить из дистиллированной воды с добавлением неагрессивного антисептика. Для шпинделя 1.5кВт мне хватает 3-х литрового баллона с водой, при этом радиатор не требуется — при непрерывной работе шпинделя вода остается теплой и остывает за счет площади стенок баллона и трубок. Схема подключения шпинделя через реле приведена в приложении 1. Схема подключения шпинделя через ПЧ приведена.
Статья о ШВП
Выбор ходового винта и гайки. Ходовой винт и гайка - сокращенно передача винт-гайка - это компонент, преобразующий вращательное движение двигателя в линейное перемещение гайки. Реализуется эта передача двумя типами винтов и гаек — шарико-винтовой передачей и трапецеидальная передачей. Шарико-винтовая (ШВП) — это специально разработанная для этой задачи передача. Ее особенностью является наличие подшипников качения внутри гайки. Так же как и в
линейной направляющей, наличие подшипников и преднатяга, позволяет использовать ШВП практически весь срок эксплуатации станка, естественно, при соблюдении паспортного режима эксплуатации. Трапецеидальный винт устроен похожим образом, но без подшипников качения. Вместо них используются обычные подшипники скольжения из тефлона, бронзы или других графитсодержащих материалов. Как и все подшипники скольжения, такая передача больше подвержена износу, вследствие чего вырабатываются люфты в соединении, и, как и в рельсовых направляющих, подшипник скольжения требуется менять по мере износа. Естественно, у трапецеидальных винтов больше сопротивление за счет трения,ниже КПД, кроме того, они имеют существенные ограничение на скорость и нагрузку, что связано с паразитным разогревом (вплоть до оплавления) материала гайки. Обычно, перемещение трапецеидального винта редко бывает возможным быстрее 3 метров в минуту. Компонент "ходовой винт и гайка"- один из важнейших компонентов станка. Если Вы строите Ваш станок с ориентиром на высокую нагрузочную способность, надежность и точность, - смело вкладывайте деньги в ШВП. Если же экономите — трапецеидальный винт с максимально качественной гайкой. Отказавшись от ШВП, следует отказаться и от сервоприводов. Шаг винта определяет на какое расстояние переместится каретка при одном обороте двигателя. Типовые изделия имеют шаг 1 к 1, 1 к 4, 1 к 10. Это означает, что на один оборот гайка переместится на 1, 4 и 10 мм соответственно. Чем меньше перемещение гайки на оборот, тем точнее можно позиционировать каретку, но тем меньше максимальная скорость перемещения. Соответственно, чем больше перемещается гайка на оборот, тем меньше разрешение позиционирования, но тем быстрее можно перемещать каретку. Давайте посчитаем, какой минимальный шаг можно сделать кареткой в мм при одном шаге ШД. Пусть ШД дает 1,8 градуса на шаг и мы выбрали гайку 1 к 4, тогда перемещение за один шаг ШД равно 4*1,8/360 = 0.02мм. Включив режим деления шага в ШД, например, на 8, мы в 8 раз уменьшаем шаг двигателя и, соотвественно, в 8 раз укорачиваем линейное перемещение, т. е. 0.02/8 = 0.0025мм. Можно шаг разделить и на 256, и на 1024, но точность позиционирования и повторяемость — как я писал в первой главе — вещи совершенно разные, и качество обработки за счет микролюфтов в ШВП, направляющих, шпинделе уже не будет изменяться. (Подробнее о делении шага в главе о ШД). На практике, для малых станков используется шаг ШВП 1 к 4. Это позволяет позиционировать станок достаточно точно и достаточно быстро. Я, обычно, рассчитываю станок на скорость 6м в минуту (100 мм в сек).С большей скоростью можно обрабатывать только при жидкостном охлаждении фрезы и материала, да и качество ШВП и направляющих придется брать более высокое. В общем, большая скорость подачи- это уже область профессиональных обрабатывающих центров. Да и 6м в минуту- это более чем достаточно для профессиональной мастерской. К примеру, скорость реза профессиональным плазменным резаком Hyperterm1250 для металла толщиной 1мм ограничивается 2м в минуту (при большей подаче плазма не успевает прожигать металлический лист насквозь). А при резке листа 10мм толщиной, подача составляет 0,1м в минуту. Не гонитесь за скоростью — это далеко не самое важное в станке.
Статья о БП Выбор источника питания Источник питания или блок питания — устройство, понижающее напряжение бытовой сети до применимых для управляющей электроники значений. Казалось бы все просто, но не торопитесь. Именно от этого компонента зависит надежность
работы двигателей, пропуск шагов, увод нуля, электрические выгорания компонентов управления и компьютера. Многие вопросы на форумах касаются именно этой темы и именно в этой теме происходят большинство споров и ссор. Линейный источник питания — это понижающий трансформатор, выпрямитель и стабилизатор. Задача трансформатора взять бытовое переменное напряжение 220 Вольт, понизить до, скажем 40 Вольт (переменного). Далее задача выпрямителя превратить это напряжение в постоянное 40 Вольт. И наконец, стабилизатор понижает и поддерживает заданное уставкой значение, например, 36 Вольт. Все вместе это дает возможность запитать драйвер ШД. Плюсы этого устройства — простота, помехобезопасность, дешевизна. Минусы — громоздкость, высокое тепловыделение. Импульсный источник питания сначала выпрямляет напряжение сети, затем преобразует его в переменное напряжение 380Вольт 20 кГц (тысяч герц), затем с помощью трансформатора понижает его до 36 Вольт. Зачем работать с высоким напряжением и частотой? Ответ один — габариты. Трансформатор на 500Вт у линейного источника питания будет весить 10 Кг, а трансформатор на ту же мощность у импульсного источника — весит около 100 грамм. Не будем вдаваться в тонкости импульсных источников, читатель может найти книгу "Импульсные источники электропитания РЭА" издательства "МИР". Плюсы — малый вес, множество защит (перегрузка, перегрев, перенапряжение, автоматический перезапуск при коротком замыкании), мягкий пуск. Минусы — генерация помех, сложность ремонта в домашних условиях. Я отдаю предпочтение импульсным блокам фирмы производителя MeanWell как наиболее доступным и качественным. Плохой БП может доставить много проблем. Мощность БП необходимо выбрать исходя из суммарной мощности нагрузки. т. е. исходя из предположения, что все шаговые двигатели крутятся одновременно и создают максимальную нагрузку. Просуммируйте номинальные токи ШД, добавьте запас 20% это и будет необходимая мощность (ток) БП. Внимательный читатель спросит, ведь у ШД работает то одна то другая обмотка, почему ток номинальный, а не деленный на 2? Действительно, можно взять ИП на меньшую мощность, но разные драйверы ШД используют разные схемотехнические решения и если Вы не хотите углубляться в эти детали — выберите БП с запасом и не рискуйте. Например из-за неправильного подключения ШД или драйвера у Вас могут включиться сразу две обмотки. Хорошо, если сработает защита от перегрузки и выключит БП, хотя Вам и в этом случае будет тяжело найти причину произошедшего. А представьте, если БП временно, на время шага, понизит напряжение на выходе до такого, при котором ток не будет превышать паспортный — т. е. переключится в режим стабилизации тока, а когда шаг закончится, вернет номинальное напряжение. В результате у вас будет скачек питания на драйвере и его поведение так же не определено - еще сложнее понять что произошло и почему появились пропуски шагов. Выбор схемы заземления. Теория безопасности Напряжение в бытовой сети у нас переменное. Это означает, что полярность постоянно меняетя, т. е. ток течет через подключенную нагрузку то в одном направлении, то в другом, и происходит такая смена 50 раз в секунду (50 Гц). Но один из проводов в бытовой электросети называется нейтраль, а второй фаза. Провод нейтрали никогда не меняет имеющееся на нем напряжение, а точнее говоря должен (при исправной проводке) иметь потенциал земли (грунта, на котором стоит Ваш дом). т. е. это безопасный провод и если (это не нужно проверять, но теоретически) измерить напряжение между ним и батареей отопления (обычно заземлены) или краном водоснабжения (заземлен потому что водопроводные трубы закопаны в землю), то вольтметр должен показать значение, близкое к нулю (допускается 3-4 Вольта, почему — рассмотрим позже). Второй провод — фазный, на нем напряжение как бы пульсирует. И кроме того, меняется по знаку относительно земли и нейтрали.
Это означает, что измерив напряжение между фазой и нейтралью или фазой и землей Вы увидите номинальное напряжение сети равное 220В. Я не буду брать на себя ответственность и рекомендовать Вам выполнить работы по выделению земли из нейтрали приведенным выше абсолютно удовлетворяющим требованиям ПУЭ методом. Просто потому, что в случае Вашей ошибки, Ваш станок может оказаться под фазным напряжением и хорошенько «долбануть». Поэтому, я советую Вам обратиться к специалисту с соответствующим образованием, и использовать полученные из этой книги знания только для его контроля и постановки задачи. Итак, специалист все сделал. Включаем в сеть, вооружаемся вольтметром переменного и постоянного тока, фазным индикатором и начинаем проверять все потенциалы на безопасность и правильность включения. Для начала, проверяем работу измерительных средств. Бессмысленно рассчитывать на отсутствие напряжения если неисправный вольтметр всегда показывает нуль. Кстати, известный взрыв бытового газа в подвале жилого дома в Анекке, полностью разрушивший 8 этажное здание, произошел вследствии поиска утечек неисправным газоанализатором. Итак, в работающей розетке между двумя отверстиями вольтметр переменного тока (на импортных приборах режим ACV или V~) должен показать 220вольт. Если это не так, выкидываем неисправный прибор от приключений подальше и берем новый. Итак, показывает 220 Вольт. Далее, один из щупов присоединяем к клемме заземления в розетке, а вторым щупаем одно и другое отверстие. На одном должно показать 220 вольт — это фаза. На другом — до 4 Вольт — это нейтраль. Хорошо, прибор исправен. Берем фазную отвертку (фазный индикатор), касаемя ей земли — свечения нет, касаемся нейтрали — свечения нет, касаемся фазы — свечение есть. Хорошо, индикатор исправен. Можно подходить к станку. Прежде всего касаемся всего железа, корпусов, вторичных цепей и датчиков фазным индикатором. НИГДЕ не должно индицировать фазу. Не должно быть даже полусвечения индикатора. Если свечение вдруг обнаружилось, одной рукой все выключаем и зовем специалиста. Итак, свечения нет. Находим надежную (контрольную) землю. Я рекомендую трубу отопления или трубу холодного водоснабжения. Один конец вольтметра вешаем на эту землю, вторым проверяем в режиме ACV: Переключаем прибо в режим измерения постоянного напряжения (DCV). // вырезано Поясню последний пункт. Напряжение не должно превышать номинал источника питания. т. е. если он у Вас вырабатывает 24 Вольта, то неоткуда взяться у Вас, например, 30 Вольтам. Если напряжение на вторичных цепях хоть где-то превышает номинальное, выдаваемое БП — это явный признак пробоя или ошибки соединения. Надо искать откуда такое напряжение появилось. Без устранения этой проблемы — дальше двигаться опасно. Эти измерения позволили нам утверждать, что, по крайней мере, станок безопасно трогать голыми рукаим. Но это еще не все. Далее мы проверяем низковольтные цепи. Потому как до того как компьютер начал формирование управляющих импульсов, надо проверить, что механика и электроника готова их принять и обработать. Кроме того, шины данных компьютера и Вашего станка так же могут серьезно конфликтовать. Поэтому прежде чем соединить эти кабели, нужно так же проверить потенциалы между ними. Если соединить компоненты с разными потенциаламк замыкание может "спалить" компьютер и электронику. Здесь давайте немного остановимся поподробнее. Потенциалы, бывают постоянные и наведенные. Наведенные — это просто статическое электричество, которое хоть и может достигать сотен вольт, при этом достаточно соединить такие потенциалы между собой, и, вызвав небольшую искру, эти потенциалы уравняются и более не будут причинять вреда. Постоянные — это потенциалы, появившиеся из-за определенной коммутации источников
напряжения. И, хотя эти потенциалы могут иметь незначительное значение в вольтах, за ними стоят мощные источники тока, такие как БП компьютера или станка. Если мы такие потенциалы соединим между собой, через перемычку начнет течь ток, и будет течь до тех пор, пока либо перемычка не перегорит, либо не выйдет из строя источник тока. Опасны оба типа потенциалов. Но, наведенные опасны только в момент коммутации, поэтому коммутировать (соединять, разъединять) кабели при включенных компонентах категорически запрещено. Мой Вам совет: при подключении станка к компьютеру — сначала выдерните из розетки и то и другое, затем соедините между собой, и только затем включайте обратно в сеть. Второй тип потенциалов — постоянные — вычислить сложнее. Из-за высокого входного сопротивления современных цифровых вольтметров (это очень позитивная их характеристика), они практически не влияют на потенциалы, т.е. не изменяют их при измерении. Значит, необходимо нагрузить эти потенциалы и посмотреть как они изменятся. По-науке, делать это надо так: допустим мы обнаружили разность потенциалов между компьютером и станком в 25 вольт. Может это наводка, а может и ошибка соединения. Просто соединив земли между собой мы можем угадать, если это была наводка, и что-то спалить, если это была ошибка соединения. Чтобы не рисковать, я бы сделал так — источник питания в компьютере имеет допустимые токи не менее 5 ампер. Источник питания станка имеет ток 10 ампер. Значит, если нагрузить эти источники дополнительной нагрузкой в 1 ампер, практически ничего этим повредить невозможно. Иными словами я советую соединить потенциалы между собой, но ограничить при этом максимальный ток через перемычку в 1 ампер. По закону Ома: ток равен напряжение делить на сопротивление, откуда следует, что сопротивление равно напряжению деленному на ток или, в нашем случае, 25/1 = 25 ом. Таким образом, соединив потенциалы через резистор в 25 ом, мы либо выровняем потенциалы, если они были наведены, либо заставим течь через перемычку с резистором безопасный ток в 1 ампер. Если потенциалы уровнялись — смело все выключаем и соединяем уже без резистора. Если не уровнялись — выключая то один, то другой БП определяем через какой идет утечка.Так что думайте, проверяйте, разность потенциалов устранить необходимо. Но, я надеюсь, разности потенциалов вообще не было и Вы безопасно соединили компоненты между собой. Итак, все соединено, проверено и запитано. Отлично! Пора занятся настройкой программы управления.