Перенос Lubuntu 18.04 на SSD

миниатюра поста

Начал выходить из строя старый жесткий диск Toshiba MK2565GSX, проработавший почти 10 лет. Было у него 8 бэд блоков. После того как он поработал часов 5 при низкой температуре(около 12 градусов) количество бед блоков резко выросло до 62, а также усилился шум, причем даже когда не было никакой нагрузки. В iotop не было никаких процессов пишущих или читающих с диска, поэтому я предполагаю, что этот шум это переназначение секторов выполняемое контроллером жесткого диска. Стало понятно что нужно срочно покупать новый диск. Передать данные со старого на новый можно с помощью переходника usb-sata, можно даже выполнить клонирование разделов. Но я решил не переносить старую систему а поставить новую, т.к. ставил много разных программ на посмотреть, а от них накапливается мусор в файловой системе. Жесткий диск взял твердотельный Silicon Power Ace A55 на 128Gb за 1590р, а также две флешки, одну большую для переноса данных и маленькую загрузочную.

Silicon power A55 128Gb ssd

Твердотельный диск на пару миллиметров тоньше hdd и раза в три легче. Максимальная скорость чтения 550 МБ/с, скорость записи 420 МБ/с. Реальную скорость можно протестировать командой dd:

dd if=/dev/zero of=./largefile bs=1M count=1024

Эта команда запишет на диск файл размером 1Гб и выведет скорость записи. У меня вышло 155МБ/с. Перед тестированием скорости чтения, нужно сбросить дисковый кэш командой:

sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"

Если не сбросить дисковый кэш скорость чтения будет очень высокой, т.к. файл будет читаться из оперативной памяти. Команда для тестирования скорости чтения:

dd if=./largefile of=/dev/null bs=4k

Реальная скорость чтения оказалась 247 МБ/с. Вполне неплохо, учитывая что у меня Sata 2, с максимальной скоростью 300 МБ/с. Скорость загрузки операционной системы увеличилась в 2,5 раза и составила 25с. Проверить можно командой systemd-analyze или systemd-analyze blame, которая выведет время загрузки для каждого сервиса. Данные Smart предоставляемые стандартной программой gnome-disk-utility неполные. Установил пакет smartmontools и проверил программой smartctl:

sudo smartctl -d ata -a -i /dev/sda

Данные также неполные, однако есть значения Total_LBAs_Written и Total_LBAs_Read - количество записанной и прочитанной информации. У меня это были числа 98 и 54. После записи утилитой dd файла размером 2 Гб, значение Total_LBAs_Written также увеличилось на 2, так что похоже эти значения выражены в гигабайтах. Количество циклов перезаписи ячеек для TLC-памяти от 500 до 1000. Если взять минимальное значение 500 и умножить на объем диска, то получается на него можно записать 60 тысяч гигабайт данных. За две недели использования я записал 100Гб, при таком уровне записи ресурса хватит на 25 лет. Конечно это очень приблизительный расчет, но он показывает что даже не слишком надежные диски на TLC-ячейках вполне подходят для домашнего использования.

Создание загрузочной флешки

Сделал загрузочную флешку. Скачал образ lubuntu-18.04.5-desktop-i386.iso, проверил контрольную сумму функцией sha256sum и записал его на флешку с помощью dd:

sudo dd if=Downloads/lubuntu-18.04.5-desktop-i386.iso of=/dev/sdb bs=4M

Хотел выбрать версию 20.04, но она только 64х-битная. Проверил возможность загрузки с флешки. Для этого нужно зайти в BIOS и изменить приоритет загрузки, поставив на первое место usb-hdd. Если все в порядке, должна появиться страничка с выбором языка установки.

Установка Lubuntu 18.04 на ssd

Перед началом установки нужно скопировать файлы и данные программ на флешку. Они обычно лежат в домашнем каталоге, в папках, имена которых начинаются с точки(например .claws-mail) либо в каталоге /home/username/.config (браузер chromium). Лучше конечно скопировать весь раздел, но если не хватает места приходиться выбирать только самое важное. Вскоре я пожалел что не купил переходник sata-usb, пришлось несколько раз загружаться со старого диска. То базу mysql забыл скопировать, то файл hosts, а один раз просто чтобы строчку в конфиге посмотреть.

Во время копирования диск 3 раза останавливался со звуком экстренной парковки головок, как при резком отключении питания, но после некоторой паузы копирование продолжалось. Когда все данные скопировались, я выключил ноутбук, установил новый жесткий диск, вставил загрузочную флешку и установил операционную систему. Установка заняла около 20-ти минут и не вызвала каких-либо сложностей.

Сначала предлагается выбрать язык.

выбор языка

Затем выбираем раскладку клавиатуры.

выбор раскладки

Дальше предлагается настроить подключение к интернету. Это нужно для установки новых версий программ. Я не стал настраивать подключение к интернету, так как неизвестно сколько уйдет трафика на обновления, а у меня тариф не безлимитный. Обновиться можно и позже, через менеджер пакетов.

подключение к сети

Теперь нужно выбрать тип установки, обычная или минимальная. Я выбрал минимальную.

выбор типа установки

Теперь нужно разметить диск. Можно это сделать вручную, выбрав "Другой вариант" или оставить разметку на усмотрение системы, выбрав вариант "Стереть диск и установить Lubuntu", что я и сделал. Был создан единственный раздел, а вместо раздела подкачки создан файл подкачки с размером, равным количеству оперативной памяти.

разметка диска

Предупреждение о предстоящих операциях с диском, нажимаем "Продолжить".

предупреждение о форматировании

Выбираем часовой пояс, кликнув в место на карте.

выбор часового пояса

И последний шаг - выбор имени компьютера(hostname), логина и пароля.

указываем логин и пароль

Жмем "Продолжить". Начнется процесс установки операционной системы. В конце установки нужно будет перезагрузить компьютер, а перед выключением нас попросят извлечь установочный диск и нажать "Enter". После этого новая система будет загружена.

Если установка проходила без подключения к сети, после загрузки будет предложено установить поддержку выбранного языка, предварительно настроив интернет-подключение.

установка файлов поддержки языка

Подключение к интернету настроилось буквально в несколько кликов через меню nm-applet. Не пришлось даже задавать точку доступа APN.

Во время установки я оставил имя компьютера по умолчанию. Оно довольно длинное. Изменить его можно отредактировав файлы /etc/hostname и /etc/hosts. Изменения вступят в силу после перезагрузки.

Перенос данных программ

Дальше я начал копировать данные на новый диск и восстанавливать программы. Сначала установил браузер Chromium. После установки не запуская браузер скопировал папку chromium в .config/chromium, папку с самописными расширениями в домашний каталог и ярлыки в папку Desktop. После запуска браузера все настройки, закладки, пароли и расширения были на месте. Только у ярлыков имена не подхватились.

Дальше поставил почтовый клиент claws-mail и также не запуская скопировал в домашний каталог папку с настройками .claws-mail. После запуска все почтовые ящики были на месте.

Установил Virtualbox. Тут тоже проблем не возникло, единственная виртуальная машина восстановилась со всеми снимками состояний. Нужно выбрать в меню Машина->Добавить и указать файл описания виртуальной машины с расширением .vbox, предварительно скопировав его и файл виртуального диска .vdi на новый диск.

А вот профили Telegram перенести не удалось. Требуется сначала установить приложение на смартфон или планшет, чтобы получить на него код активации. Простой смс-кой код не отправляется. Вроде бы это сделано для борьбы с виртуальными номерами.

Для просмотра изображений по умолчанию стоит gpicview, его я удалил и поставил viewnior. Чтобы viewnior мог открывать картинки в webp, нужно установить библиотеку webp-pixbuf-loader Команды для сборки библиотеки:

sudo apt-get install jinja-build libwebp-dev pip3 install meson meson builddir -Dgdk_pixbuf_query_loaders_path=/usr/lib/i386-linux-gnu/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders ninja -C builddir sudo ninja -C builddir install

Смотрите чтобы был правильный путь на gdk-pixbuf-query-loaders в третьей команде.

Настройка ssh

Чтобы воспользоваться ключами из ~/.ssh на новой машине сначала поставим на них верные права(чтение и запись только для владельца):

sudo chmod 0600 ~/.ssh/id_rsa_keyname

Теперь добавим ключ в ssh-agent:

ssh-add ~/.ssh/id_rsa_keyname

Вводим парольную фразу ключа если необходимо. Ключ будет добавлен до перезагрузки. Чтобы каждый раз не добавлять ключ, создаем файл ~/.ssh/config и добавляем туда строки:

Host 1.1.1.1 IdentityFile ~/.ssh/id_rsa_keyname AddKeysToAgent yes

Указываем ip сервера и путь к ключу. Последняя строка будет добавлять ваш ключ в ssh-agent автоматически и пароль нужно будет ввести всего один раз на сессию, далее пароль спрашивать не будет до перезагрузки.

Исправление багов

Апплет мониторинга температуры не работает. Помогла установка плагина отсюда sensors-lxpanel-plugin. Нужно скачать исходники и собрать.

sensors-lxpanel-plugin

Чтобы работала bluetooth-гарнитура нужно поставить pulseaudio-bluetooth:

sudo apt-get install pulseaudio-bluetooth

Раньше в апплете bluetooth был баг: окно с устройствами открывалось только после принудительного завершения какого-то python скрипта, запущенного от имени пользователя. Теперь окошко со списком устройств открывается нормально.

Файловый менеджер Pcmanfm зависает как и раньше, несколько раз в неделю. Чтобы быстрее восстановился запускаю его из меню. Оказывается pcmanfm можно переключить в двухпанельный режим клавишей F3, умел бы он еще по sftp подключаться и filezilla можно было бы не ставить. Иногда падает сама панель lxpanel, но значительно реже. Gnome-mpv при попытке что-либо воспроизвести зависает, установил mpv, а gnome-mpv удалил. Также удалил за ненадобностью pidgin и sylpheed. При попытке их удалить пакетный менеджер предупреждает, что будут также удалены пакеты lubuntu-desktop и lubuntu-gtk-desktop. Глядя на названия пакетов я подумал, что рискую остаться без рабочего стола или даже без графической оболочки, но оказалось это мета-пакеты и их можно смело удалять.

Иногда система загружается с разрешением 800x600, исправить это можно создав файл .profile в домашней директории добавив внего строку

xrandr -s 1024x600

Просматривая journalctl заметил кучу ошибок двух видов:

wpa_supplicant[917]: random: Cannot read from /dev/random: Resource temporarily unavailable indicator-sound[1054]: Received property Position with type x does not match expected type i in the expected interface.

Первая лечится установкой пакета haveged и перезагрузкой. Для исправления второй ошибки в настройках панели lxpanel убрал галочку с Sound Menu в настройках апплета indicator-applets, а вместо него для регулировки громкости добавил апплет Volume control.

Настройка точки доступа wi-fi через Network-Manager

Невозможно создать точку доступа wi-fi через графический интерфейс network manager. Создадим ее через nmcli:

nmcli connection add type wifi ifname wlp7s0 con-name local-ap autoconnect yes ssid pinetrail mode ap

Здесь wlp7s0 - имя беспроводного интерфейса, можно узнать введя команду iwconfig. local-ap - имя соединения, которое будет отображаться в NetworkManager. autoconnect yes - точка доступа будет подниматься автоматически, если не нужно указываем no. pinetrail - имя точки доступа wi-fi.

nmcli connection modify local-ap 802-11-wireless.mode ap 802-11-wireless-security.key-mgmt wpa-psk ipv4.method shared 802-11-wireless-security.psk 'ПАРОЛЬ'

Не забудьте изменить local-ap на название вашего соединения, а также указать пароль точки доступа.

nmcli connection up local-ap

Эта команда включит точку доступа. Если теперь попытаться подключиться к созданной точке, подключение скорее всего зависнет на этапе получения ip-адреса. Нужно настроить dhcp-сервер. Устанавливаем dnsmasq:

sudo apt-get install dnsmasq sudo systemctl start dnsmasq

Сервис не запустился, мешает systemd-resolved который также висит на 53 порту. Пробовал его отключать, но без него dnsmasq ругается на /etc/relosv.conf и не работает ресолвинг имен. Нашел такое решение: отредактировать /etc/systemd/resolved.conf добавив в конце строчку:

DNSStubListener=no

Редактируем конфиг dnsmasq: sudo nano /etc/dnsmasq.conf

#Name:Default #Type:DNSMASQ listen-address=127.0.0.1 server=1.1.1.1 server=1.0.0.1 interface=wlp7s0 dhcp-range=10.42.0.20,10.42.0.100,24h

Имя интерфейса смотрим в выводе ip addr show. Также нужно чтобы dhcp-range было из той-же подсети что и ip присвоенный интерфейсу.

После чего включаем dnsmasq и добавляем в автозапуск:

sudo systemctl start dnsmasq sudo systemctl enable dnsmasq

Горячие клавиши и скрипты к ним

Настройка горячих клавиш. В Lubuntu за это отвечает файл ~/.config/openbox/lubuntu-rc.xml. Приведу 3 скрипта которыми я пользуюсь. Вот кусочек моего файла lubuntu-rc.xml:

файл настроек горячих клавиш lubuntu-rc.xml

Свои сочетания клавиш я вставляю в самом конце внутри тега keyboard. Важно чтобы выбранное сочетание клавиш встречалось в файле лишь один раз. На клавише Print висит стандартная программа для скриншотов Scrot. Вызванный без параметров сохраняет снимок экрана в домашнем каталоге. На Alt-Print висит scrot с ключом -s, скриншот произвольной области. На F9 - генератор паролей, F12 - скрипт изменения раскладки набранного текста, Pause - переподключение 3g модема. После изменений в файле lubuntu-rc.xml, необходимо перезайти в аккаунт или перезагрузить компьютер, чтобы изменения вступили в силу.

Скрипт генерации паролей. После вызова в буфере обмена будет генерированный пароль. Для работы с буфером обмена требуется пакет xclip.

Скрипт изменения раскладки текста. Выделяем текст, набранный в неверной раскладке и вызываем скрипт. Работает через буфер обмена, данные хранящиеся в буфере обмена будут заменены на исправленный текст. Также переключает раскладку клавиатуры. Для работы потребуется установить пакеты xsel и xdotool.

Скрипт переподключения 3g-модема. В скрипте нужно изменить uuid соединения на свой. Узнать uuid можно командой nmcli con show

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

sudo chmod +x .bin/pwgen

Восстановление Lubuntu из emergency mode

Восстановить базы mysql имея только файлы из /var/lib/mysql наверное возможно, но у меня не получилось. Поэтому я решил воспользоваться утилитой mysqldump, но для этого нужно загрузиться с того диска на котором была база данных.

Загрузиться у меня не получилось, система грузилась минуты 2 и потом сваливалась в emergency mode. Просмотрел journalctl и нашел там ошибку dependency failed for local filesystems. Загрузился с флешки и выбрал в меню вариант проверить диск на наличие ошибок. Была найдена одна ошибка. После перезагрузки опять emergency mode. Закомментировал в /etc/fstab все строки кроме корня и swap. Не помогло. А помогла следующая команда:

sudo systemctl mask systemd-udev-settle.service

После этого система загрузилась. Я запустил сервис mysql и сделал дамп базы данных на флешку:

sudo systemctl start mysql mysqldump -uuser -р127.0.0.1 -p databasename > /media/user/usb-flash/databasename.sql

Перед тем как развернуть дамп на новой системе нужно сбросить пароль пользователя root. Для этого останавливаем сервис:

sudo systemctl stop mysql

Создаем каталог, в котором будет хранится pid процесса mysqld и сокет:

sudo mkdir -p /var/run/mysqld

Указываем созданному каталогу владельца и группу:

sudo chown mysql:mysql /var/run/mysqld

Запускаем демон mysqld в фоне:

sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &

Подключаемся к серверу mysql:

mysql -u root

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

FLUSH PRIVILEGES; USE mysql; UPDATE user SET authentication_string=PASSWORD("ПАРОЛЬ") WHERE User='root'; UPDATE user SET plugin="mysql_native_password" WHERE User='root'; quit

Не забудьте указать ваш пароль. Теперь останавливаем демон mysqld и стартуем сервис mysql:

sudo pkill mysqld sudo systemctl start mysql

Можно подключаться к серверу с новым паролем и разворачивать дамп базы данных:

mysql -uroot -h127.0.0.1 -p databasename < /media/user/usb-flash/databasename.sql

Ну и напоследок приведу команду для ждущего режима. Раньше пользовался sudo pm-suspend, для нее нужны права суперпользователя и надо ставить пакет pm-utils, теперь пользуюсь systemctl suspend, ее можно выполнять от имени простого пользователя и ничего ставить не нужно. Команда systemctl hibernate вместо перевода в спящий режим просто выключает компьютер, разбираться не стал, возможно поможет набор утилит uswsusp.

Дата публикацииWed, 09 Feb 2022 15:51:41 GMT Просмотры26
Реклама
Похожие материалы