Ubuntu


blog.udartsev.ru

Ubuntu Linux - 3+more monitors Artifacts fix

Ubuntu Monitor Artifacts FIX

1. Change GRUB config file:

    gedit /etc/default/grub

Changed this line:

GRUB_CMDLINE_LINUX=""

to this:

GRUB_CMDLINE_LINUX="amd_iommu=on iommu=pt"

then:

sudo update-grub && sudo reboot

2. Update kernel iniframs:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
cd linux-firmware/
sudo cp -va amdgpu/ /lib/firmware/
sudo update-initramfs -u
reboot

SSH key to server

SSH => server

Create a key:

ssh-keygen -t rsa

Copy it to the server:

ssh-copy-id -i ./mainserver.pub archive@5.45.79.2

OR

ssh archive@5.45.79.2 "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

cat ./mainserver.pub | ssh archive@5.45.79.2 'cat >> .ssh/authorized_keys'

OR

ssh -i /root/.ssh/mainserver.pub archive@5.45.79.2

PostgreSQL - Run server on startup (Linux)

1) Check your chmod file available:

sudo chmod +x /etc/rc.local

2) Edit rc.local file:

sudo gedit /etc/rc.local

3) Add:

# PostgreSQL
mkdir /var/run/postgresql
mkdir /var/run/postgresql/12-main.pg_stat_tmp
touch /var/run/postgresql/12-main.pg_stat_tmp/global.tmp
chown -R postgres:postgres /var/run/postgresql
su postgres -c '/usr/lib/postgresql/12/bin/pg_ctl start -D /etc/postgresql/12/main'

# OR CHANGE YOUR DB VERSION AND DATABASE FILES FOLDER
# su postgres -c '/usr/lib/postgresql/9.5/bin/pg_ctl start -D /etc/postgresql/9.5/main'

4) Enable rc.local instructions (it is turned off by default):

sudo systemctl enable rc-local.service

5) Start your rc.local scripts right now:

sudo systemctl start  rc-local.service

MySQL - Восстанавливаем системные таблицы

Бывает, что после физического переноса MySQL базыданных - движоп перестаёт обновляться. Это вызвано ошибками в InnoDB файлах системы. Поэтому, в попытке обновления мы можем увидеть предупреждения о несуществующих таблица (даже если они физически присутствуют в папке и отображаются в SQL-менеджере):

enter image description here

Для того, что бы нам исправить эти ошибки - нам нужно удалить старые таблицы и создать новые.

1) Подключаемся кMySQL движку через консоль:

mysql -u admin -p -h localhost

2) Выбираем системную БД:

use mysql;

3) Удаляем таблицу через SQL-менеджер (нужно для регистрации удаления в системных файлах движка) или через консоль:

DROP TABLE <название таблицы>;

4) В папке с системными файлами /var/lib/mysql удаляем остатки от <название таблицы> с разрешениями <название таблицы>.ibd и .frm. Например:

sudo rm /var/lib/mysql/servers.ibd
sudo rm /var/lib/mysql/servers.frm

5) Создаём новые таблицы через консоль mysql. Ниже приведены SQL запросы для восстановления таблиц.

mysql.servers

CREATE TABLE `servers` (
`Server_name` char(64) NOT NULL,
`Host` char(64) NOT NULL,
`Db` char(64) NOT NULL,
`Username` char(64) NOT NULL,
`Password` char(64) NOT NULL,
`Port` int(4) DEFAULT NULL,
`Socket` char(64) DEFAULT NULL,
`Wrapper` char(64) NOT NULL,
`Owner` char(64) NOT NULL,
PRIMARY KEY (`Server_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8     
COMMENT='MySQL Foreign Servers table';

mysql.innodb_index_stats

CREATE TABLE `innodb_index_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`index_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT 
CURRENT_TIMESTAMP ON UPDATE 
CURRENT_TIMESTAMP,
`stat_name` varchar(64) COLLATE utf8_bin NOT NULL,
`stat_value` bigint(20) unsigned NOT NULL,
`sample_size` bigint(20) unsigned DEFAULT NULL,
`stat_description` varchar(1024) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`database_name`,`table_name`,`index_name`,`stat_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
COLLATE=utf8_bin STATS_PERSISTENT=0;

mysql.innodb_table_stats

CREATE TABLE `innodb_table_stats` (
`database_name` varchar(64) COLLATE utf8_bin NOT NULL,
`table_name` varchar(64) COLLATE utf8_bin NOT NULL,
`last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`n_rows` bigint(20) unsigned NOT NULL,
`clustered_index_size` bigint(20) unsigned NOT NULL,
`sum_of_other_index_sizes` bigint(20) unsigned NOT NULL,
PRIMARY KEY (`database_name`,`table_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin STATS_PERSISTENT=0;

mysql.slave_master_info

CREATE TABLE `slave_master_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log currently being read from the master.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last read event.',
`Host` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'The host name of the master.',
`User_name` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The user name used to connect to the master.',
`User_password` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The password used to connect to the master.',
`Port` int(10) unsigned NOT NULL COMMENT 'The network port used to connect to the master.',
`Connect_retry` int(10) unsigned NOT NULL COMMENT 'The period (in seconds) that the slave will wait before trying to reconnect to the master.',
`Enabled_ssl` tinyint(1) NOT NULL COMMENT 'Indicates whether the server supports SSL connections.',
`Ssl_ca` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Authority (CA) certificate.',
`Ssl_capath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path to the Certificate Authority (CA) certificates.',
`Ssl_cert` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL certificate file.',
`Ssl_cipher` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the cipher in use for the SSL connection.',
`Ssl_key` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The name of the SSL key file.',
`Ssl_verify_server_cert` tinyint(1) NOT NULL COMMENT 'Whether to verify the server certificate.',
`Heartbeat` float NOT NULL,
`Bind` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'Displays which interface is employed when connecting to the MySQL server',
`Ignored_server_ids` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The number of server IDs to be ignored, followed by the actual server IDs',
`Uuid` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The master server uuid.',
`Retry_count` bigint(20) unsigned NOT NULL COMMENT 'Number of reconnect attempts, to the master, before giving up.',
`Ssl_crl` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The file used for the Certificate Revocation List (CRL)',
`Ssl_crlpath` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'The path used for Certificate Revocation List (CRL) files',
`Enabled_auto_position` tinyint(1) NOT NULL COMMENT 'Indicates whether GTIDs will be used to retrieve events from the master.',
PRIMARY KEY (`Host`,`Port`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Master Information';

mysql.slave_relay_log_info

CREATE TABLE `slave_relay_log_info` (
`Number_of_lines` int(10) unsigned NOT NULL COMMENT 'Number of lines in the file or rows in the table. Used to version table definitions.',
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the current relay log file.',
`Relay_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The relay log position of the last executed event.',
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'The name of the master binary log file from which the events in the relay log file were read.',
`Master_log_pos` bigint(20) unsigned NOT NULL COMMENT 'The master log position of the last executed event.',
`Sql_delay` int(11) NOT NULL COMMENT 'The number of seconds that the slave must lag behind the master.',
`Number_of_workers` int(10) unsigned NOT NULL,
`Id` int(10) unsigned NOT NULL COMMENT 'Internal Id that uniquely identifies this record.',
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Relay Log Information';

mysql.slave_worker_info

CREATE TABLE `slave_worker_info` (
`Id` int(10) unsigned NOT NULL,
`Relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Relay_log_pos` bigint(20) unsigned NOT NULL,
`Master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_relay_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_relay_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_master_log_name` text CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Checkpoint_master_log_pos` bigint(20) unsigned NOT NULL,
`Checkpoint_seqno` int(10) unsigned NOT NULL,
`Checkpoint_group_size` int(10) unsigned NOT NULL,
`Checkpoint_group_bitmap` blob NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Worker Information';

mysql.help_topic

CREATE TABLE `help_topic` (
`help_topic_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`help_category_id` smallint(5) unsigned NULL,
`description` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`example` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_topic_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_keyword

CREATE TABLE `help_keyword` (
`help_keyword_id` int(10) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
PRIMARY KEY (`help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_relation

CREATE TABLE `help_relation` (
`help_topic_id` int(10) unsigned NOT NULL,
`help_keyword_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`help_topic_id`, `help_keyword_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.help_category

CREATE TABLE `help_category` (
`help_category_id` smallint(5) unsigned NOT NULL,
`name` char(64) CHARACTER SET utf8 COLLATE utf8_bin UNIQUE NULL,
`parent_category_id` smallint(5) unsigned NULL,
`url` char(128) CHARACTER SET utf8 COLLATE utf8_bin NULL,
PRIMARY KEY (`help_category_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Installation HELP command table';

mysql.time_zone_name

CREATE TABLE `time_zone_name` (
`Name` char(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`Time_zone_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Name`, `Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone

CREATE TABLE `time_zone` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Use_leap_seconds`enum('Y','N') CHARACTER SET utf8 COLLATE utf8_bin DEFAULT 'N',
PRIMARY KEY (`Time_zone_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_leap_second

CREATE TABLE `time_zone_leap_second` (
`Transition_time` bigint(20) unsigned NOT NULL,
`Correction` int(11) unsigned NOT NULL,
PRIMARY KEY (`Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_transition

CREATE TABLE `time_zone_transition` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_time` bigint(20) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_time`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.time_zone_transition_type

CREATE TABLE `time_zone_transition_type` (
`Time_zone_id` int(10) unsigned NOT NULL,
`Transition_type_id` int(10) unsigned NOT NULL,
`Offset` int(11) DEFAULT '0' NOT NULL,
`Is_DST` tinyint(3) unsigned DEFAULT '0' NOT NULL,
`Abbreviation` char(8) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`Time_zone_id`, `Transition_type_id`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='Contain time zone information';

mysql.gtid_executed

CREATE TABLE gtid_executed (
`source_uuid` CHAR(36) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`interval_start` BIGINT(20) NOT NULL,
`interval_end` BIGINT(20) NOT NULL,
PRIMARY KEY (`source_uuid`, `interval_start`)
) ENGINE=`InnoDB` DEFAULT CHARSET=utf8 STATS_PERSISTENT=0 COMMENT='GTIDs stores here';

scripts/mysql_system_tables.sql:

mysql.server_cost

CREATE TABLE IF NOT EXISTS server_cost (
  cost_name   VARCHAR(64) NOT NULL,
  cost_value  FLOAT DEFAULT NULL,
  last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  comment     VARCHAR(1024) DEFAULT NULL,
  default_value FLOAT GENERATED ALWAYS AS
    (CASE cost_name
       WHEN 'disk_temptable_create_cost' THEN 20.0
       WHEN 'disk_temptable_row_cost' THEN 0.5
       WHEN 'key_compare_cost' THEN 0.05
       WHEN 'memory_temptable_create_cost' THEN 1.0
       WHEN 'memory_temptable_row_cost' THEN 0.1
       WHEN 'row_evaluate_cost' THEN 0.1
       ELSE NULL
     END) VIRTUAL,
  PRIMARY KEY (cost_name)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;

mysql.engine_cost

CREATE TABLE IF NOT EXISTS engine_cost (
  engine_name VARCHAR(64) NOT NULL,
  device_type INTEGER NOT NULL,
  cost_name   VARCHAR(64) NOT NULL,
  cost_value  FLOAT DEFAULT NULL,
  last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  comment     VARCHAR(1024) DEFAULT NULL,
  default_value FLOAT GENERATED ALWAYS AS
    (CASE cost_name
       WHEN 'io_block_read_cost' THEN 1.0
       WHEN 'memory_block_read_cost' THEN 0.25
       ELSE NULL
     END) VIRTUAL,
  PRIMARY KEY (cost_name, engine_name, device_type)
) ENGINE=InnoDB CHARACTER SET=utf8 COLLATE=utf8_general_ci STATS_PERSISTENT=0;

6) Перезагружаем MySQL:

sudo /etc/init.d/mysql start

PS: Подробнее о таблицах можно узнать на сайте MySQL и MariaDB: https://mariadb.com/kb/en/library/the-mysql-database-tables/


MySQL - Backup and restoring database

Backup database

time mysqldump -u root -p database > /var/backups/restore_backup.sql

Backup config and data

mv /var/lib/mysql /tmp/backups/mysql-lib.bak
cp /etc/mysql/my.cnf /tmp/backups/my.cnf.bak

Purge library

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean

Reinstall

sudo apt-get update
sudo apt-get install mysql-server

Restore config

cp /tmp/backups/my.cnf.bak /etc/mysql/my.cnf
sudo service mysql restart

Create database

mysql -u root -p
mysql> CREATE DATABASE database;

Restore backup

time mysql -u root -p database < /var/backups/restore_backup.sql

EXIFTOOL - Getting data from RAW (CR2) File to JPG (Ubuntu/Linux)

If you want to get data (in JPG) from your RAW file in Ubuntu/Linux, do next:

1) Install exiftool in your Linux system:

sudo apt install exiftool

2) not necessary step: view your RAW file data:

exiftool -s2 -all -b -X -fXMP:XMP foto.cr2

3) not necessary step: near the bottom, it will shows:

Composite:PreviewImage='(Binary data 1706501 bytes, use -b option to extract)'
Composite:ThumbnailImage='(Binary data 17031 bytes, use -b option to extract)'

enter image description here

4) Use the "-b" option to extract either or both:

exiftool -Composite:PreviewImage -b foto.cr2 >preview.jpg
exiftool -Composite:ThumbnailImage -b foto.cr2 >thumb.jpg

5) To extract data from all files in the folder, do next:

for i in *.CR2; do exiftool -Composite:PreviewImage -b $i > $i.jpg; done

6) Done. We did execute all JPG data from RAW files: enter image description here


ImageMagick - Resize from Linux

How to resize your photos from Ubuntu (Lunux) console with ImageMagick?

for i in *.JPG; do convert -quality 100 -resize 30% $i $i; done

Для каждого $i в формате JPG > конвертируем в качество 100% + ресайз 30% от оригинала, перезаписываем файл $i в $i;

Получаем вместо 8mb фото, фото 1.2mb.


PHP - 7.2.1 Compiling

1) sudo ./buildconf --force

2)sudo ./configure --prefix=/etc/php72 --enable-bcmath --with-pcre-dir=/soft/php72/php-7.2.1/ext/pcre --with-gettext=/usr/lib/gettext --with-pgsql=/usr/lib/postgresql/9.5 --with-pear=/soft/php72/php-7.2.1/pear --with-tsrm-pthreads --enable-maintainer-zts --with-openssl --enable-pthreads=shared --enable-cli --enable-mbstring --enable-intl --enable-zip --enable-mysqlnd --enable-sockets --with-gd --with-mysqli --with-pdo-mysql --with-openssl --enable-dba=shared --enable-opcache --enable-calendar --enable-exif --enable-pcntl

3) sudo make sudo make test sudo make install

//////////////////////////////////// sudo -i

apt-get update

apt-get install -y git bison autoconf build-essential pkg-config gitcore libltdl-dev libbz2-dev libxml2-dev libxslt1-dev libssl-dev libicu-dev libpspell-dev libenchant-dev libmcrypt-dev libpng-dev libjpeg8-dev libfreetype6-dev libmysqlclient-dev libreadline-dev libcurl4-openssl-dev

mkdir /etc/php7

mkdir /etc/php7/cli

cd /usr/local/src

git clone https://github.com/php/php-src.git --depth=1

cd php-src/ext

git clone https://github.com/krakjoe/pthreads -b master pthreads

cd ..

./buildconf --force

php_configure_args="--prefix=/etc/php7 --with-config-file-path=/etc/php7/cli --with-config-file-scan-dir=/etc/php7/cli/conf.d --with-bz2 --with-zlib --enable-zip --with-openssl --with-curl --enable-ftp --with-mysqli --enable-sockets --enable-pcntl --with-pspell --with-enchant --with-gettext --with-gd --enable-exif --with-jpeg-dir --with-png-dir --with-freetype-dir --with-xsl --enable-bcmath --enable-mbstring --enable-calendar --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-maintainer-zts --enable-debug --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-cli --enable-pthreads=shared --with-tsrm-pthreads"

./configure $php_configure_args

make && make install

cd /usr/local/src/php-src/ext/intl*

chmod a+x /etc/php7/bin/php-config

chmod a+x /etc/php7/bin/phpize

/etc/php7/bin/phpize

./configure --enable-intl --with-icu-dir=/usr --prefix='/etc/php7' --with-libdir='/lib/x86_64-linux-gnu' --with-php-config='/etc/php7/bin/php-config'

make && make install

cp /usr/local/src/php-src/php.ini-production /etc/php7/cli/php.ini

ln --symbolic /etc/php7/bin/php /usr/bin/php

ln --symbolic /etc/php7/sbin/php-fpm /usr/sbin/php7-fpm

echo 'zend_extension=opcache.so' >> /etc/php7/cli/php.ini

echo 'extension=pthreads.so' >> /etc/php7/cli/php-cli.ini

echo "extension=intl.so" >> /etc/php7/cli/php.ini


Настройка sendmail для использования gmail в качестве хоста передачи (smarthost)

Как настроить сендмейл для использования gmail в качестве хоста:

1) устанавливаем сендмейл и дополнительные утилиты:

sudo apt-get install sendmail sasl2-bin

2) перемещаемся в каталог /etc/mail

cd /etc/mail

3) создаём файл authinfo со следующим содержимым:

AuthInfo:smtp.gmail.com "U:username" "I:username@gmail.com" "P:password" "M:PLAIN"

AuthInfo:smtp.gmail.com:587 "U:username" "I:username@gmail.com" "P:password" "M:PLAIN"

4) выполните команду:

sudo makemap -r hash authinfo.db < authinfo

5) создадим SASL файл:

/etc/mail/sasl/sasl.m4

6) отредактируем sendmail.mc :

sudo gedit sendmail.mc

добавим строки как показано ниже (добавленные строки выделены между кода):

dnl #
include(`/etc/mail/m4/dialup.m4')dnl
include(`/etc/mail/m4/provider.m4')dnl

include(/etc/mail/tls/starttls.m4')dnl include(/etc/mail/sasl/sasl.m4')dnl FEATURE(authinfo',hash /etc/mail/authinfo.db')dnl define(SMART_HOST',smtp.gmail.com')dnl define(RELAY_MAILER_ARGS',TCP $h 587')dnl define(ESMTP_MAILER_ARGS',TCP $h 587')dnl

dnl #
dnl # Default Mailer setup
MAILER_DEFINITIONS
MAILER(`local')dnl
MAILER(`smtp')dnl

7) выполним:

sudo make 
sudo /etc/init.d/sendmail reload

8) Если все получилось без ошибок, то релей через gmail настроен. Проверяем!

Отправляем сообщение с локального хоста на mail.ru:

$ sudo mail -v your@mail.ru
Subject: Тестовое сообщение
Это тестовое сообщение
.  
...
050 235 2.7.0 Accepted
...
250 2.0.0 pBDA7MDj024641 Message accepted for 
delivery 
your@mail.ru... Sent (pBDA7MDj024641 Message 
accepted for delivery)
Closing connection to [127.0.0.1]

Done!


How to format a USB stick

Well, one could try zero'ing the raw block device to see if that can work. If you can write to that then you may be able to create a clean partition table, create a new partition and format that.

1) Suppose the USB stick is on /dev/sdc, first make sure /dev/sdc1 is unmounted:

umount /dev/sdc1

2) See if you can then clear the partition table, say by copying a bunch of zeros over the first few K

sudo dd if=/dev/zero of=/dev/sdc bs=512 count=16

3) If that works, see if you can write zeros to the whole device without it failing. To easily see if the kernel can't write to the device, first clear the current kernel messages and throw them away using:

sudo dmesg -c > /dev/null

..then zero the entire device:

sudo dd if=/dev/zero of=/dev/sdc bs=1M

..this will take a while. dd will complete when the raw block device is completely written to, or an error has occurred.

4) Then, check to see if the kernel has complained about the device, using:

dmesg

..if you see a load of error messages then you know that the USB stick is probably not in good condition.

5) However, if this works fine run fdisk or parted to create the partitions from clean, e.g. with fdisk I use:

sudo fdisk /dev/sdc

Command (m for help): n

Select (default p): p

Partition number (1-4, default 1): 1

First sector (2048-7796735, default 2048): <return>

Last sector, +sectors or +size{K,M,G} (2048-7796735, default 7796735): <return>

Command (m for help): t

Hex code (type L to list codes): 6

Command (m for help): w

..note just press return for the First and Last sector questions, fdisk will chose the correct defaults (which will be different to my example above).

6) And then format the partition with VFAT:

sudo mkfs.vfat /dev/sdc1

7) and then remove and re-insert the drive. It should be cleanly formatted.