====== Практическое использование свободных программ (конкретные статьи, рецепты, методы) ====== Здесь пишем то, чем успешно воспользовались лично, то, что проверено и актуально. ===== Настройка переключения языков средствами XORG (через xorg.conf) ===== Список (вероятно полный) параметров XORG, связанных с переключением раскладок клавиатуры (языка ввода) можно посмотреть в этом файле: ''/usr/share/X11/xkb/rules/xorg.lst'' За язык в ''/etc/X11/xorg.conf'' отвечает секция ''InputDevice'': Section "InputDevice" Identifier "Generic Keyboard" Driver "kbd" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll" EndSection Здесь язык (группа) переключается правой клавишей Ctrl, а индикатором языка служит светодиод на клавиатуре с надписью "Scroll Lock". Когда активна русская раскладка - он горит, когда английская - нет. По-умолчанию включен английский язык, т.к. он первый в опции ''XkbLayout''. Если нужно больше чем два языка, их нужно писать также через запятую в опции ''XkbLayout''. Параметры ''Identifier'', ''Driver'' и опция ''XkbRules'' могут отличаться от дистрибутива к дистрибутиву - их изменять не нужно. Опция ''XkbModel'' зависит от подключенной клавиатуры. За переключение языка в этом примере отвечают только опции ''XkbLayout'' и ''XkbOptions''. Если файл ''/etc/X11/xorg.conf'' пуст, то нужно вставить в него вышеприведённую секцию целиком и изменить значение параметра ''Identifier'' на понятный XORG'у. Для этого следует выполнить ''X -cofigure'', после чего в домашней директории появляется файл ''xorg.config.new'', в котором и можно посмотреть идентификатор (во встретившимся мне случае он был Keyboard0). И **обязательно** добавить пустую строку в конце файла - иначе XORG не загрузится (обругавшись на отсутствие пустой строки в конце файла). ===== Как запустить один XOrg внутри другого (Xephyr) ===== Взято с http://www.fedoralinux.ru/content/view/17/47/ {{ http://www.fedoralinux.ru/images/day_packet/XephyrThumb.png}} ''Xephyr'' – альтернатива вложенному ''X''-серверу ''Xnest'' , рассмотренному на прошлой неделе. Обе эти программы используются для создания вложенного ''X''-сервера, т.е. работающего в отдельном окне, запущенном под родительским ''X''-сервером, вместо использования отдельного компьютера с монитором. ''Xnest'' сам не выполняет запросы, а перенаправляет их родительскому серверу. ''Xephyr'' же сам отрисовывает все запросы в окошке, в котором запущен. Это означает, что ''Xephyr'' может выполнять такие запросы, которые родительский сервер выполнять не может. К примеру, он может использовать ''RENDER'' (расширение для быстрого сглаживания текста), даже если его не поддерживает родительский ''X''-сервер. К несчастью, ''gdm'' не работает с ''Xephyr'', но вы можете использовать ''gdmflexiserver'' для работы с ним. Тем не менее, если вы хотите использовать ''XDMCP'' (удаленный логин), вы можете запустить ''Xephyr'' вручную и сделать запрос формы логина из ''gdm'': $ Xephyr -query localhost -screen 800x600 :1 Если ''localhost'' – это ''XDMCP'' сервер, ''800x600'' – требуемое разрешение, а '':1'' – номер дисплея (можно использовать любой свободный номер). Установка из командной строки: ''yum install xorg-x11-server-Xephyr'' Установка, используя графический инсталлятор: нет в списке пакетов, используйте поиск Расположение в меню после установки: нет Команда запуска: ''/usr/bin/Xephyr'' (обратите внимание на заглавную букву ''X'') Сайт: http://x.org/ Взято с http://genkdesvn.mailstation.de/ru/dokumentacija/ispolzovanie-xephyr.html Прежде всего убедитесь в том, что ''xorg-server'' собран с флагом ''kdrive''. После этого войдите в систему под аккаунтом вашего пользователя для KDE4 и запустите ''Xephyr''. Например так: Xephyr -ac -screen 1024x768 :1 & После этого вы должны экспортировать переменную ''DISPLAY'' с номером дисплея, который в передали как параметр при запуске ''Xephyr'' (в нашем примере - '':1''): export DISPLAY=:1 После этого следует настроить среду для KDE4: unset KDE_IS_PRELINKED # if you are using the 3.96.0 ebuilds, set KDEDIR=/usr/kde/3.9 export KDEDIR=/usr/kde/svn export KDEDIRS=/usr:/usr/local:$KDEDIR export QTEST_COLORED=1 export QT_PLUGIN_PATH=$KDEDIR/lib/kde4/plugins/ export PATH=$KDEDIR/bin:$PATH export LDPATH="$KDEDIR/lib:$LDPATH" export XDG_DATA_DIRS=/usr/share:${KDEDIR}/share:/usr/local/share export XDG_CONFIG_DIRS=$KDEDIR/etc/xdg export PATH=${PATH//\/usr\/kde\/3.5\/bin} Теперь вы готовы к запуску вашего любимого приложения. Я реально запускал так: В одном терминале: ''Xephyr -ac :1'' Во втором: ''DISPLAY=:1 ./windowlab'' (windowlab - это оконный менеджер) В **новой версии** ''Xorg'' на смену ''Xephyr'' и ''Xnest'' идут ''xf86-video-nested'' и ''xf86-video-dummy''. ===== Как запустить мышь для последовательного порта в XOrg ===== По-умолчанию XOrg запускает мыши для PS/2 и USB портов сам. А COM-портовские мышки не работают. Чтобы запустить, нужно изменить файл ''xorg.conf''. Взято с: http://www.opennet.ru/openforum/vsluhforumID15/200.html Section "InputDevice" ... Driver "mouse" Option "Protocol" "Auto" Option "Device" "/dev/ttyS0" ... EndSection Это указывает на то, что мышь на первом (tty0) последовательном порте, а протокол её работы автоматически определяет XOrg. По факту, после загрузки XOrg, мышь не начинает работать сразу, а только после нескольких нажатий на её кнопки. Скорее всего, до этого, XOrg не может провести автоопределение протокола. Чтобы это поправить, нужно указать протокол в явном виде для конкретной мыши, например "microsoft". ===== Как сделать разбор командной строки в bash ===== Взято с: http://systhread.net/texts/200704optparse.php while [ "$#" -gt "0" ] do case $1 in -F|--setflag) F_FLAG=1 ;; -f|--file) shift FILE_ARGUMENET=$1 ;; -u|--usage) Usage exit 0 ;; *) echo "Syntax Error" Usage exit 1 ;; esac shift done ===== Оставить от PDF только нужные страницы ===== for f in packet_*.pdf; do pdftk $f cat 1 2 4 5 output cuted_$f; done; ===== Найти дубликаты файлов ===== fdupes -r ./ -r если нужна рекурсия в подкаталоги Найдена, но не проверена: fslint (с графической оболочкой) ===== Принудительный запуск звуковой карты как snd-hda-intel ===== Добавить в /etc/modprobe.d/alsa-base.conf : options snd-hda-intel model="generic" ===== Передать файл по SSH ===== scp -P portnumber username@hostname.ru:/home/username/back/filename.tar.bz2 filename.tar.bz2 ===== Разделить FLAC на треки FLAC ===== Взято с: http://geckich.blogspot.com/2013/08/cue-flac-linux.html Как разделить образ .cue на треки .flac в Linux Вот бывает хочется сделать свой аудиодиск с подборкой композиций из разных альбомов. Делать его из mp3 не разумно, т. к. mp3 - сжатие с потерей качества и от того, что мы его "раздуем" обратно в audio cd качество не улучшится. Потому лучше брать музыку в lossless фотматах. Но очень часто музыка идет одним образом, в котором содержаться все треки альбома. А если нам нужно вытянуть оттуда только несколько песен? На примере Debian 7 делаем следующее. Устанавливаем вначале необходимые пакеты: aptitude install shntool cuetools Далее переходим в папку с .cue и разбиваем: shntool split -f *.cue -o flac *.flac На выходе получим файлы с именами split-track##.flac. И можем дальше собирать наш аудио-диск. ===== Записать видео и звук с экрана ===== recordmydesktop ===== Раздать Интернет по DHCP ===== Взято с: http://unixforum.org/index.php?showtopic=103646 Выключить адрес раздающей сетевой карты в NetworkManager. Создать скрипт inet_share.sh, запускаемый от рута: #! /bin/bash ifconfig eth0 down ifconfig eth0 192.168.0.254 netmask 255.255.255.0 up echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o wlan0 -j MASQUERADE Где: * wlan0 - WiFi сеть, с которой получен Интернет. * eth0 - Ethernet сеть, на которую раздаётся Интернет. * 192.168.0.254 - адрес, который произвольно задаём для раздающей сетевой карты, он же будет маршрутом у клиента и определит сеть, в которую раздаётся Интернет (192.168.0.0). * /etc/resolv.conf на раздающей машине содержит адрес(а) DNS сервера. В моём случае там: 192.168.1.1 Нужно установить DHCP сервер isc-dhcp-server. /etc/dhcp/dhcpd.conf содержит его конфигурацию, её нужно отредактировать (мои изменения в примере "very basic subnet declaration"): # # Sample configuration file for ISC dhcpd for Debian # # # The ddns-updates-style parameter controls whether or not the server will # attempt to do a DNS update when a lease is confirmed. We default to the # behavior of the version 2 packages ('none', since DHCP v2 didn't # have support for DDNS.) ddns-update-style none; # option definitions common to all supported networks... option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. #subnet 10.152.187.0 netmask 255.255.255.0 { #} # This is a very basic subnet declaration. subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.1 192.168.0.253; option domain-name-servers 192.168.1.1; option routers 192.168.0.254; } # This declaration allows BOOTP clients to get dynamic addresses, # which we don't really recommend. #subnet 10.254.239.32 netmask 255.255.255.224 { # range dynamic-bootp 10.254.239.40 10.254.239.60; # option broadcast-address 10.254.239.31; # option routers rtr-239-32-1.example.org; #} # A slightly different configuration for an internal subnet. #subnet 10.5.5.0 netmask 255.255.255.224 { # range 10.5.5.26 10.5.5.30; # option domain-name-servers ns1.internal.example.org; # option domain-name "internal.example.org"; # option routers 10.5.5.1; # option broadcast-address 10.5.5.31; # default-lease-time 600; # max-lease-time 7200; #} # Hosts which require special configuration options can be listed in # host statements. If no address is specified, the address will be # allocated dynamically (if possible), but the host-specific information # will still come from the host declaration. #host passacaglia { # hardware ethernet 0:0:c0:5d:bd:95; # filename "vmunix.passacaglia"; # server-name "toccata.fugue.com"; #} # Fixed IP addresses can also be specified for hosts. These addresses # should not also be listed as being available for dynamic assignment. # Hosts for which fixed IP addresses have been specified can boot using # BOOTP or DHCP. Hosts for which no fixed address is specified can only # be booted with DHCP, unless there is an address range on the subnet # to which a BOOTP client is connected which has the dynamic-bootp flag # set. #host fantasia { # hardware ethernet 08:00:07:26:c0:a5; # fixed-address fantasia.fugue.com; #} # You can declare a class of clients and then do address allocation # based on that. The example below shows a case where all clients # in a certain class get addresses on the 10.17.224/24 subnet, and all # other clients get addresses on the 10.0.29/24 subnet. #class "foo" { # match if substring (option vendor-class-identifier, 0, 4) = "SUNW"; #} #shared-network 224-29 { # subnet 10.17.224.0 netmask 255.255.255.0 { # option routers rtr-224.example.org; # } # subnet 10.0.29.0 netmask 255.255.255.0 { # option routers rtr-29.example.org; # } # pool { # allow members of "foo"; # range 10.17.224.10 10.17.224.250; # } # pool { # deny members of "foo"; # range 10.0.29.10 10.0.29.230; # } #} После изменения конфига демон нужно перезапускать так: /etc/init.d/isc-dhcp-server restart Взято с: http://debian-help.ru/articles/nat-dhcp-server-debian/ /etc/default/isc-dhcp-server Указать в INTERFACES раздающую карту: INTERFACES="eth0" ===== LaTeX в ODT ===== Взято с: http://askubuntu.com/questions/82634/how-to-convert-tex-into-odt pandoc -f latex -t odt -o output.odt input.tex ===== Уменьшить PDF файл ===== Взято с: http://ivnish.blogspot.ru/2012/03/pdf.html gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf ===== Восстановить права на PDF ===== С: http://ono.org.ua/shifrovanie-i-rasshifrovka-dokumentov-v-formate-pdf.html pdftk A=in.pdf output decrypted.pdf ===== LaTeX - размер шрифта ===== ==== Стандартные сокращённые команды для размера шрифта ==== | \tiny | Меньше не бывает | | \scriptsize | Очень маленький (как в верхних и нижних индексах) | | \footnotesize | Маленький (как в сносках) | | \small | Мелкий | | \normalsize | Нормальный | | \large | Немного увеличенный | | \Large | Большой | | \LARGE | Очень большой | | \huge | Громадный | | \Huge | Больше некуда | ==== Переопределение стандартных сокращённых команд ==== Нужно добавить в преамбулу переопределение изменяемых размерных команд: Взято с: http://dxdy.ru/topic22554.html \renewcommand\normalsize{\fontsize{14}{16.8pt}\selectfont} > 14 -- размер шрифта > 16.8 -- интерлиньяж (стандартный для этого размера, но можно чуть-чуть уменьшить, например, если не укладываешься в требуемое к-во страниц) Причём, надо понимать, переопределение ''\normalsize'' переопределяет основной текст документа. TeX может не найти в текущем шрифте подходящего размера глифов -- тогда он сообщит об этом и попытается подставить ближайший. Если требуется свой точный размер -- его нужно создать. ==== Создание шрифта с произвольным размером ==== Взято с: http://seehuhn.de/pages/poster (Там же дана ссылка на английское руководство по шрифтам: http://tug.ctan.org/tex-archive/macros/latex/doc/fntguide.pdf ) \documentclass{minimal} \DeclareFontShape{OT1}{cmr}{m}{n}% {<5><6><7><8><9><10><12>gen*cmr% <10.95>cmr10% <14.4>cmr12% <17.28><20.74><24.88>cmr17 <72>cmr17}{} \begin{document} \fontsize{72pt}{90pt}\selectfont \noindent This text is very big. \end{document} > Using the standard TeX cmr font at 72pt with 90pt baseline distance. Использование стандартного для TeX'а шрифта ''cmr'' в 72 пункта с расстоянием между базовыми линиями в 90 пунктов. В этом примере, командой ''\DeclareFontShape'' был создан шрифт, размером 72, который отсутствовал среди стандартных. Здесь показано, как командой ''\fontsize'' (вместе с ''\selectfont'') можно менять размер шрифта в конкретном месте -- без переопределения команд для всего документа. ===== LaTeX - Как вставить символ ЭДС ===== В преамбулу нужно вставить две строчки: \usepackage{mathrsfs} % буква для обозначения ЭДС \newcommand{\EDS}{\ensuremath{\mathscr{E}}} % новая команда \EDS для символа Взято с: http://moodle.org/mod/forum/discuss.php?d=20788 ===== LaTeX - Символы градуса и градуса цельсия ===== \documentclass{article} \usepackage[utf8x]{inputenc} \usepackage[T2A]{fontenc} \usepackage[russian]{babel} \usepackage{amsfonts,amsmath,amssymb} \newcommand{\degree}{\text{\textdegree}} % градусы \newcommand{\celsius}{\text{\textdegree{}C}} %градусы цельсия \begin{document} 36,5 \celsius 45 \degree \end{document} Взято с: http://moodle.org/mod/forum/discuss.php?d=20788 ===== LaTeX - русские буквы в формулах ===== Взято с: http://faqs.org.ru/softw/editors/tex.htm Q. Можно ли использовать русские буквы в формулах? Хочу, чтобы они выглядели как обычные формулы (со всеми правилами). A. \usepackage{mathtext} (до задания inputenc, fontenc, babel) Q. ...а кстати, а почему при этом русские буквы не наклонные? A. Так было решено. Если хочется изменить это умолчание, то можно это сделать так: \usepackage{mathtext} \usepackage[T2A]{fontenc} \DeclareSymbolFont{T2Aletters}{T2A}{cmr}{m}{it} ===== Запись телефонных разговоров через звуковую карту ===== От телефонной линии последовательно через резистор ~900 Ом и неполярный конденсатор 1 мкф Х 250 вольт включена первичная обмотка трансформатора 220 > 12 вольт. Вторичную обмотку шунтируют (для защиты от перенапряжения) два кремниевых диода (предполагается 0,6 вольта их прямое напряжение и используются как стабилитроны), включенных параллельно навстречу друг другу. Со вторичной обмотки идёт сигнал на джек, включаемый в линейный вход звуковой карты. Запись ведётся программой rec из пакета sox. Тишина удаляется. rec -c 1 o.wav silence 100000 1 0.1% -1000000 1 0.1% {{:fs_use:tellin_rec.png}} {{:fs_use:dscf9754.jpg?direct&400 |}} {{:fs_use:dscf9757.jpg?direct&400 |}} {{:fs_use:dscf9759.jpg?direct&400 |}} ===== Восстановить разделы на диске ===== Сработал успешно для восстановления разделов на вынутом из внешнего контроллера 3,5 внешнем диске Seagate. Имеет дополнительные возможности по восстановлению данных. http://www.cgsecurity.org/wiki/TestDisk ===== Ускорить XOrg ===== Создать в домашней директории [каждого] пользователя директорию с таким именем: .compose-cache Туда XOrg начнёт складывать какие-то свои потребности в кэшировании и от этого ускорится. ===== Преобразовать видео в WebM ===== ffmpeg -i infile.avi -format webm outfile.webm Можно использовать более раннюю версию кодека (если это необходимо) таким способом (заодно показан более сложный вариант использования ffmpeg): ffmpeg -i concat:"infile1.avi|infile2.avi" -s 394x288 -format webm -acodec libvorbis -vcodec vp8 outfile.webm или ffmpeg -ss 198 -t 31 -i 356_4.mp4 -format webm -s 640x360 outfile.webm ===== Преобразовать ALAC (m4a) во FLAC ===== Взято с: http://linuxg.net/convert-flac-to-alac-and-alac-to-flac-from-the-command-line/ ffmpeg -i 1.m4a -acodec flac 1.flac ===== Сборка LibreOffice ===== ./configure --enable-gtk --disable-gtk3 --without-java --with-package-format='deb' --enable-epm ===== Монтирование раздела из образа целого диска ===== К числу 32256 нужно подходить вдумчиво и тогда можно примонтировать любой раздел, а не только стандартно расположенный первый. mount_disk.sh : #! /bin/bash losetup -o 32256 /dev/loop1 ./disk1.bin mount /dev/loop1 ./m umount_disk.sh : #! /bin/bash umount ./m losetup -d /dev/loop1 ===== Многоместный компьютер (мой опыт) ===== Section "ServerLayout" Identifier "X.org Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" Option "AutoEnableDevice" "false" Option "AutoAddDevice" "false" Option "AllowEmptyInput" "true" EndSection Section "Files" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/X11/misc" FontPath "/usr/share/fonts/X11/cyrillic" FontPath "/usr/share/fonts/X11/100dpi/:unscaled" FontPath "/usr/share/fonts/X11/75dpi/:unscaled" FontPath "/usr/share/fonts/X11/Type1" FontPath "/usr/share/fonts/X11/100dpi" FontPath "/usr/share/fonts/X11/75dpi" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" FontPath "built-ins" EndSection Section "Module" Load "glx" Load "extmod" Load "record" Load "dri2" Load "dbe" Load "dri" EndSection Section "InputDevice" Identifier "Keyboard0" Driver "evdev" Option "Device" "/dev/input/by-path/platform-i8042-serio-0-event-kbd" Option "GrabDevice" "on" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll" EndSection Section "InputDevice" Identifier "Mouse0" Driver "evdev" Option "Protocol" "auto" Option "Device" "/dev/input/by-path/platform-i8042-serio-1-event-mouse" Option "GrabDevice" "on" # Option "SendCoreEvents" "on" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" #DisplaySize 280 210 # mm Identifier "Monitor0" VendorName "STN" ModelName "S/T 57/56E/V" HorizSync 30.0 - 100.0 VertRefresh 30.0 - 100.0 Option "PreferredMode" "800x600" Option "DPMS" EndSection Section "Device" ### Available Driver options are:- ### Values: : integer, : float, : "True"/"False", ### : "String", : " Hz/kHz/MHz", ### : "%" ### [arg]: arg optional #Option "probe_sparse" # [] Option "accel" # [] Option "crt_display" # [] #Option "composite_sync" # [] Option "hw_cursor" # [] #Option "force_pci_mode" # [] #Option "dma_mode" # #Option "agp_mode" # #Option "agp_size" # #Option "local_textures" # [] #Option "buffer_size" # #Option "tv_out" # [] #Option "tv_standard" # #Option "mmio_cache" # [] #Option "test_mmio_cache" # [] #Option "panel_display" # [] #Option "reference_clock" # Option "shadow_fb" # [] #Option "sw_cursor" # [] #Option "AccelMethod" # Option "RenderAccel" # [] Identifier "Card0" Driver "mach64" BusID "PCI:1:0:0" # Option "Int10" "false" EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "640x480" EndSubSection # Option "NoInt10" "true" DefaultDepth 24 EndSection Section "ServerLayout" Identifier "X.org Configured" Screen 1 "Screen1" 0 0 InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" Option "AutoEnableDevice" "false" Option "AutoAddDevice" "false" Option "AllowEmptyInput" "true" EndSection Section "Files" ModulePath "/usr/lib/xorg/modules" FontPath "/usr/share/fonts/X11/misc" FontPath "/usr/share/fonts/X11/cyrillic" FontPath "/usr/share/fonts/X11/100dpi/:unscaled" FontPath "/usr/share/fonts/X11/75dpi/:unscaled" FontPath "/usr/share/fonts/X11/Type1" FontPath "/usr/share/fonts/X11/100dpi" FontPath "/usr/share/fonts/X11/75dpi" FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType" FontPath "built-ins" EndSection Section "Module" Load "glx" Load "extmod" Load "record" Load "dri2" Load "dbe" Load "dri" EndSection Section "InputDevice" Identifier "Keyboard1" Driver "evdev" Option "Device" "/dev/input/by-path/pci-0000:00:1d.0-usb-0:1:1.0-event-kbd" Option "GrabDevice" "on" # Option "SendCoreEvents" "on" Option "XkbRules" "xorg" Option "XkbModel" "pc105" Option "XkbLayout" "us,ru" Option "XkbOptions" "grp:rctrl_toggle,grp_led:scroll" EndSection Section "InputDevice" Identifier "Mouse1" Driver "evdev" Option "Protocol" "auto" Option "Device" "/dev/input/event6" Option "GrabDevice" "on" Option "ZAxisMapping" "4 5 6 7" EndSection Section "Monitor" Identifier "Monitor1" VendorName "Monitor Vendor" ModelName "Monitor Model" EndSection Section "Device" ### Available Driver options are:- ### Values: : integer, : float, : "True"/"False", ### : "String", : " Hz/kHz/MHz", ### : "%" ### [arg]: arg optional #Option "ShadowFB" # [] #Option "Rotate" # #Option "fbdev" # #Option "debug" # [] Identifier "Card0" Driver "vesa" BusID "PCI:2:1:0" # Option "Int10" "false" EndSection Section "Screen" Identifier "Screen1" Device "Card0" Monitor "Monitor1" SubSection "Display" Viewport 0 0 Depth 1 EndSubSection SubSection "Display" Viewport 0 0 Depth 4 EndSubSection SubSection "Display" Viewport 0 0 Depth 8 EndSubSection SubSection "Display" Viewport 0 0 Depth 15 EndSubSection SubSection "Display" Viewport 0 0 Depth 16 Modes "1024x768" EndSubSection SubSection "Display" Viewport 0 0 Depth 24 Modes "640x480" EndSubSection # Option "NoInt10" "true" DefaultDepth 16 EndSection #! /bin/bash nohup X :0 -isolateDevice PCI:1:0:0 -audit 0 -nolisten tcp -retro -novtswitch -sharevts -config ./xorg.conf.1 vt8 &> /dev/null & sleep 4 export DISPLAY=:0 su - first -c "nohup icewm &> /dev/null &" #nohup xterm &> /dev/null & nohup X :1 -isolateDevice PCI:2:1:0 -audit 0 -nolisten tcp -retro -novtswitch -sharevts -config ./xorg.conf.2 vt9 &> /dev/null & sleep 4 export DISPLAY=:1 su - two -c "nohup icewm &> /dev/null &" #nohup xterm &> /dev/null & ===== Сканировать из консоли ===== scan.sh : #! /bin/bash if [ "$1" = "" ] then echo Use scan.sh outfile.pgm exit fi scanimage --mode Gray --progress --resolution 200 -l 10 -x 193 -t 17 -y 279 > $1 ===== Про сборку Xorg из исходников ===== Попробовал нижеследующий способ так: ./build.sh --clone --autoresume built.modules /tmp/b/ Потребовал несколько библиотек, которые я ему установил, но окончательно заткнулся на xdm, который захотел что-то поставить в системную директорию (а не в директорию сборки), а собирал я с правами пользователя и рут доступ дать не рискнул. Отвалилось так: /usr/bin/install -c -m 644 xdm.service '/lib/systemd/system' /usr/bin/install: невозможно создать обычный файл '/lib/systemd/system/xdm.service': Отказано в доступе Но, не считая этого, способ, похоже, исправный (если дать рута): директория сборки до xdm исправно наполнялась. Взято с: http://h-wrt.com/ru/mini-how-to/xorg Запуск сборки Xorg очень простой: mkdir -p /home/xorg/src cd /home/xorg/src git clone git://anongit.freedesktop.org/git/xorg/util/modular util/modular mkdir -p /home/xorg/build cd /home/xorg/src ./util/modular/build.sh --clone /home/xorg/build Сам процесс сборки занимает продолжительное время и может остановиться из-за какойнить ошибки зависимостей. При этом если снова его запустить то сборка начнется с самого начала. Чтобы это не происходило нужно использовать ключ autoresume: ./util/modular/build.sh --clone --autoresume built.modules /home/xorg_build/build/ Также сборку можно запустить для определенного списка модулей. Весь список модулей можно увидеть так: ./util/modular/build.sh -L > build_modules Модули которые не требуют сборки закоментировать символом # и запустить сборку с ключем modfile: ./util/modular/build.sh --clone --autoresume built.modules --modfile build_modules /home/xorg_build/build/ Проблема при сборке Xorg: error: possibly undefined macro: AC_CHECK_FILE Решение: не был установлен пакет '' pkg-config '' apt-get install pkg-config Проблема при сборке Xorg: configure: error: zlib.h is required to compile libfontenc Решение: apt-get install zlib1g-dev Проблема при сборке Xorg: configure: error: yacc not found - unable to compile laygram.y Решение: apt-get install bison Проблема при сборке Xorg: checking for freetype-config... no configure: error: You must have freetype installed; see http://www.freetype.org/ Решение: apt-get install libfreetype6-dev Проблема при сборке Xorg: configure: error: Package requirements (fontconfig >= 2.5.92) were not met: No package 'fontconfig' found Решение: apt-get install libfontconfig1-dev Проблема при сборке Xorg: configure: error: No suitable SHA1 implementation found Решение: apt-get install libgcrypt11-dev Проблема при сборке Xorg: Can't exec "intltoolize": No such file or directory Решение: apt-get install intltool После сборки запуск Xorg и дальнейший запуск какой либо графической оболчки выглядит как-то так: Пример запуска для графической оболочки xfce4: а) Можно просто выполнить: startx или startxfce4 б) либо выполнить запуск приложений пошагово самостоятельно: 1. Xorg & 2. export DISPLAY=:0.0 3. /usr/bin/xfce4-session Пример запуска xterm (графический терминал командной строки): 1. Xorg & 2. export DISPLAY=:0.0 3. xterm -g 80x40+0+0 & ===== Перепрошить BIOS из Linux ===== Смотрим видит ли чип: flashrom --programmer internal Сохраняем оригинал: flashrom --programmer internal --read BACKUP.ROM Записываем новый: flashrom --programmer internal --write FIRMWARE.ROM ===== Запустить программу с другим путём к библиотекам ===== LD_LIBRARY_PATH=/usr/local/lib64/ make ===== Скачать видео с youtube ===== https://yt-dl.org/ https://www.freemake.com/ru/free_video_downloader/ https://ru.savefrom.net/7/ ===== Прошивка для Xceive XC3028 ===== Взято с: https://www.linuxtv.org/wiki/index.php/Xceive_XC3028/XC2028 ===== Драйвер для TP-LINK Archer T4U ===== Взято с: https://askubuntu.com/questions/802205/how-to-install-tp-link-archer-t4u-driver git clone https://github.com/EntropicEffect/rtl8822bu Make sure you have build-essentials and dkms sudo apt-get install build-essential dkms After cloning, cd into that folder and run cd rtl8822bu make sudo make install sudo modprobe 88x2bu Then connect to your Wi-Fi (Hopefully, both 2.4GHz and 5GHz should be detectable now) Next, follow these steps to refine the installation and for an automatic rebuild on Ubuntu kernel image updates sudo dkms add . sudo dkms install -m 88x2bu -v 1.1 https://github.com/cilynx/rtl88x2bu ===== Как накладывать патчи (patch) ===== https://webhamster.ru/mytetrashare/index/mtb0/1312473329b25lq4jc6x Чтобы наложить патч, надо перейти в каталог, где находится старый файл/каталог, и выполнить команду patch < файл_патча При использовании патчей к каталогам обычно делают так: патч создается, как описано выше (тогда в заголовках патчей к отдельным файлам путь к ним будет начинаться с имени нового каталога), а прикладывается он внутри изменяемого каталога. Тогда команда будет выглядеть так: patch -p1 < файл_патча Здесь -p1 означает, что из заголовков патча надо убрать начальный каталог. Поясню всё это на примере. У нас имеется дерево исходников ядра 2.6.0. Это каталог linux-2.6.0, в котором содержатся каталоги drivers, arch и т.д. И у нас есть патч до версии 2.6.1, в котором содержатся такие заголовки: --- a/drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004 +++ b/drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004 Видим, что при создании патча старый и новый каталоги назывались a и b соответственно. У нас же каталог называется по-другому, и patch ничего сделать не сможет. Поэтому заходим в каталог linux-2.6.0 и выполняем указанную выше команду. Теперь заголовки будут интерпретироваться как --- drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004 +++ drivers/acpi/Kconfig Thu Jan 8 23:00:24 2004 и патч приложится нормально. ===== Компиляция Си программы без ошибки "неопределённая ссылка на" ===== gcc -Wall -g xshape_example.c -o xshape_example -lX11 -lXext