Монтируем новый домашний каталог в точке home

Виктор Конрад
Полетел винчестер с Ubuntu 18.04 LTS: появилось очень много сплошных последовательностей секторов «DELAY». Для любознательных сообщаю, что данный дефект в жестких дисках может быть вызван ослаблением магнитов механизма позиционирования головок. Удалось скопировать почти все личные данные объемом ок.  230 Гб на исправный винчестер общим объемом 500 Гб. Я создал на этом исправном винчестере 2 раздела: 100 Гб и 400 Гб и скопировал личные данные в раздел 400 Гб. Раздел 100 Гб я собираюсь использовать с Windows, и о нем говорить не будем. Параллельно с решением проблемы спасения личных данных, я зарядил новую Ubuntu 20.04 LTS на винчестер 40 Гб и успел сделать на нем некоторую наработку новых личных данных: около 12 Гб. Понятно, что новая Ubuntu обросла  нужными мне приложениями. Конфигурация разделов на винчестере 40 Гб была простая: системный раздел примонтированный на «/» — 20 Гб, раздел подкачки «SWAP» — 4 Гб, раздел личных данных, примонтированных на «/home» — 16 Гб.   Объединить старые и новонаработанные личные данные можно только на винчестере 500 Гб, в разделе 400 Гб. Сама собой напрашивалась новая конфигурация: системный раздел и раздел подкачки оставить на диске 40 Гб. Раздел с объединенными личными данными 400 Гб примонтировать к точке /home вместо раздела  личных данных 16 Гб, что всё еще оставался примонтированым.

Преимущества такой конфигурации — я веду речь с использованием только механических винчестеров — состят в следующем. Сбой в операционной системе, поломка системного винчестера, разделов на нем и т.п. никак не затрагивают личных данных и всех ннастройек, содержащихся на отдельном винчестере, который  можно легко снять и переставить на другой компьютер. Магнитные головки системного винчестера остаются всегда над системным разделом диска, поскольку личными данными в это время заняты головки другого винчестера. Информационный обмен винчестеров с остальным железом идет не по одной шине SATA, а по двум. Последние нюансы должны, по логике вещей, ускорить обращение железа к данным. Я использую винчестеры размером 2,5 дюйма, которые, применяемые в ноутбуках, обладают минимальным энергопотреблением. Поэтому установка дополнительного винчестера практически не влияет на общее энергопотребление системы.

Решение поставленной задачи выглядело просто: сперва отмонтировать от «/home» раздел 16 Гб, что на винчестере 40 Гб, после чего примонтировать к точке «/home» раздел личных данных 400 Гб, что на винчестере 500 Гб. Чего проще! Для этого в Терминале существуют команды mount и umount. Я нашел в Интернете несколько пошаговых инструкций, как это сделать, но ни одна из них не привела меня к успеху. Постоянно возникали препятствия, непреодолимые на моем уровне знаний простого пользователя. В частности раздел личных данных 16 Гб невозможно было отмонтировать от «/home», поскольку в момент попытки этот раздел оказывался задействованным операционной системой, а та отказывалась рубить сук на котором в данный момент сидела сама.

Действительно, в каталоге «/home», то есть именно в разделе личных данных содержатся некоторые конфигурационные файлы как операционной системы (ОС), так и приложений. Понятно, что отмонтировав личный раздел, мы лишаем ОС и приложения возможности обращаться к этим файлам за данными, необходимыми для правильной работы софта с железом. Эти файлы содержатся непосредственно в каталоге «/home». Точка в начале имени каждого такого файла позволяет файловому менеджеру «Nautilus» включать и выключать их видимость. При обычном пользовании они невидимы. Для нашей задачи эти служебные файлы нужно сделать видимыми — в Наутилусе есть опция.

В этих файлах содержатся многие настройки. Без этих файлов настройки ОС и приложений теряются. Если их стереть, система будет работать, но рабочая среда возникнет в усеченном виде. Понятно, что для успеха всей затеи эти файлы должны быть обязательно перенесены с раздела личных данных 16 Гб на раздел личных данных 400 Гб. Только в этом случае при старте системы и запуске приложений, когда удастся примонторовать раздел 400 Гб в точке «/home», мы получим на экране отображение рабочей среды в привычном нам виде.

При копировании служебных файлов из раздела 16 Гб в раздел 400 Гб тоже случилась не упомянутая в существующих руководствах загвоздка, вызванная нюансами Linux, касающимися прав пользователей на манипуляции файлами. Поскольку я сам у себя являюсь единственным пользователем, я во всю эту «правовую» бодягу еще никогда глубоко не погружался и глубоких понятий о ней не имею. Но оказалось, что система согласна осуществлять копирование служебных файлов из раздела 16 Гб в раздел 400 Гб только с правами «root» (суперпользователя). Причем в ходе копирование с правами «root» файлы получают в своей скрытой правовой атрибутике имя нового владельца «root» вместо прежнего имени, которое оригинально там значилось в качестве владельца. Даже если раздел 400 Гб после этого удастся примонтировать к «/home», система не сможет воспользоваться этими служебными файлами, поскольку она больше не будет считать себя их владельцем и тем самым лишит себя прав на их использование.

Таковы были непреодолимые трудности, с которыми я столкнулся, решая свою задачу по чужим инструкциям. Следует заметить, что эти неудавшиеся попытки значительно расширили круг моих собственных знаний, без чего я не смог бы найти собственное верное решение. Но я не собирался становиться профи-линуксоидом и погружаться в детальное изучение связанного с трудностями материала. Я решил обойти трудности.


Вот моя пошаговая инструкция, которая приведет к успешному решению задачи. В конце статьи есть её краткое содержание для продвинутых пользователей Линукса. Здесь же — подробная инструкция с объяснениями для начинающих, к которым я и себя причисляю.


Я исхожу из того, что все мои личные данные: и старые и новонаработанные уже полностью объединены и размещены в моих личных каталогах, которые находятся в корневом каталоге на разделе 400 Гб на винчестере 500 Гб. Этот раздел я умышленно отформатировал ext2, а не ext4, как сейчас принято для Linux, поскольку  на раздел ext2 можно обратиться из Windows, используя бесплатный драйвер, в то время как для обращения из Windows на ext4 требуются платная программа — это на случай, если потребуется взять личные данные, используя Windows.

1
Выключить компьютер, если он включен. Произвести физическое подключение винчестера 500 Гб.

2
Запустить Ubuntu, как обычно. На поле десктопа найти среди прочего значек каталога (папки, директории) с изображением домика. Под каталогом будет значиться его имя. Это имя совпадает или, точнее, является именем пользователя, который был указан в ходе инсталляции Ubuntu. В моем случае имя этого каталога «konrad». Если каталог со значком домика на десктопе не обнаружен, запустить файловый менеджер «Nautilus» > +Other Locations > Computer > home. Открыть каталог home. В нем будет находиться один единственный каталог с именем пользователя. Записать имя, которое у Вас окажется, на бумаге, потому что оно еще потребуется. Это имя может не совпадать с Вашим. Выключить компьютер.

3
Потребуется еще один винчестер с установленной операционной системой Linux. Это может быть также пусковая флэшка. Не исключаю, что можно использовать для запуска также и Live-диск с какой-нибудь другой ОС, способной читать и сохранять в ext2, ext4, но я не советую так поступать, поскольку неизвестно, как чужая ОС обойдется при копировании с правовой атрибутикой служебных файлов Ubuntu — а мы будем сейчас копировать именно служебные файлы. Я использовал свой старый, 32-битовый компьютер, заряженный Ubuntu 16.04 на старом винчестере. Но в нем уже были разъемы для двух устройств SATA. То есть к старому компьютеру со своей собственной ОС Ubuntu 16.04 я подключил два моих винчестера: системный 40 Гб и личный 500 Гб.

4
Запустить Ubuntu 16.04 на старом компьютере. Теперь оба новоподключенных винчестера будут восприниматься ОС как дополнительные внесистемные устройства, и копирование или перенос любых файлов из любых разделов и каталогов в другие разделы и каталоги этих внесистемных устройств будет происходить в нормальном пользовательском режиме с полным сохранением правовой атрибутики файлов.

5
Открыть файловый менеджер «Nautilus» в двух окнах. В одном окне войти в раздел 16 Гб на винчестере 40 Гб, а в другом окне войти в раздел 400 Гб на винчестере 500 Гб. Окажется, что в корневом каталоге раздела 16 Гб содержится всего лишь один каталог «konrad» и лишь только уже в каталоге «konrad» содержатся все как служебные файлы, так и каталоги с новонаработанными личными данными, в то время как в корневом каталоге раздела 400 Гб содержатся все каталоги с объединенными личными данными при полном отсутствии каких либо служебных файлов. Требуется выровнять это несоответствие.

6
 Создать в корневом каталоге на разделе 400 Гб новый каталог и именем «konrad».

7
В разделе 400 Гб переместить все до единого личные каталоги из корневого каталога в каталог «konrad».

8
Скопировать все служебные файлы (с точкой в начале имен — предварительно сделав их видимыми с помощью опции Наутилуса) из каталога «konrad» на разделе 16 Гб в каталог «konrad» на разделе 400 Гб. Еще раз обращаю внимание на то, что «konrad» — это у меня. У Вас будет совсем другое имя пользователя, присвоенное этому каталогу.

9
Выключить старый компьютер, перенести винчестеры 40 Гб и 500 Гб на штатный компьютер и запустить систему, как обычно. Всё будет по-старому — раздел 400 Гб еще не примонтирован к точке /home. К ней, как и прежде примонтирован раздел 16 Гб.

10 Открыть терминал. Выполнить команду

lsblk

Появится отчет о подключенных устройствах и их разбивке на разделы. Этот отчет представлен на картинке в начале статьи, слева. Обозначение sda2 следует понимать так: первый винчестер, второй раздел — это мой новый раздел объединенных личных данных 400 Гб. Обозначение sdb3 следует понимать так: второй винчестер, третий раздел — это раздел новонаработанных личных данных 16 Гб. Какой винчестер какой буквой обозначать ОС решает сама. Последнее обозначение в списке: sdc — это случайно воткнутая флэшка — она нас не интересует. Столбец SIZE содержит сведения об объемах устройств (винчестеров, флэшек), disk значит устройство,  part значит раздел. Почему система показывает несколько отличные значения объемов устройств и разделов от тех значений, которые указал я, поскольку сам их устанавливал, объяснения у меня нет, но понять соответствие можно. Наверное ОС дает точные объемы, а я указываю фигуральные. Столбец MOUNTPOINT показывает какой раздел к какой точке примонтирован. Смотрим на картинку в начале статьи — лучше, ее как нибудь вывести, чтобы видеть по ходу чтения.

Мы видим, что sdb — это диск 40 Гб. Раздел  sdb1 — это системный раздел, смонтированный в точке / , которую также называют корнем или root. Раздел  sdb2 — это раздел подкачки, который примонтирован в точке [SWAP]. Раздел sdb3 — это раздел с новонаработанными личными данными 16 Гб, смонтированный в точке /home; в нем же находятся и служебные файлы, которые мы только что копировали из раздела sdb3 16 Гб в раздел sda2 400 Гб.

Раздел sda2 — это раздел с объединенными личными данными 400 Гб.

11
Если сейчас попытаться отмонтировать раздел  sdb3 от точки /home, используя команду:

sudo umount /dev/sdb3

Директива «sudo» поднимает команду до уровня суперпользователя — поэтому система запросит пароль. Ввод пароля не отображается на экране — нужно просто ввести и нажать энтер.

система ответит:

umount: /home: target is busy,

что означает «цель, примонтированная в точке /home, занята». Это отказ ОС выполнить команду.


12
Но если бы даже удалось отмонтировать sdb3 от /home, то при следующем старте система всё вернет к предыдущим настройкам и заново примонтирует раздел в ходе запуска. Поэтому я пошел другим путем.

Перейдем в корневой каталого системы с помощью команды:

cd /

Перейдем в каталог /etc с помощью команды:

cd /etc

13
Отредактируем один из пусковых конфигурационных файлов fstab с помощью системного редактора  «nano». Я здесь воспользовался системным редактор «nano», поскольку предположил, что другие редакторы могут оставить на важном системном файле свои, ненужные тому, метки и форматы:

sudo nano fstab

Возникнет окно редактора «nano» со следующим текстом:



1.   #     /etc/fstab: static file system information.
2.   #
3.   #     Use 'blkid' to print the universally unique identifier for a
4.   #     Devices; this may be used with UUID= as a more robust way to name devices
5.   #     that works even if disks are added and removed. See fstab(5).
6.   #
7.   #     <file system> <mount point>   <type>  <options>       <dump>  <pass>
8.   #     / was on /dev/sda1 during installation
9.   UUID=b6c63c48-17a9-4e02-938b-f78c3ba0d6df /               ext4    errors=remount-ro 0       1
10.  #     /home was on /dev/sda3 during installation
11.  UUID=3c033eaf-d53a-4c7f-8ca0-4e339cb4dc6a /home           ext4    defaults        0       2
12.  #      swap was on /dev/sda2 during installation
13.  UUID=82739bd3-fa29-47f9-84e6-5a09c07fe49e none            swap    sw              0       0

В «nano» мышь не действует. Для перемещения курсора пользуемся клавиатурой.

Значащими для OC строками являются только строки 9, 11, 13. Остальные строки являются комментариями и забанены знаком # (Хэш)

11-я строка определяет стартовое монтирование раздела с идентификационным номером 3c033eaf-d53a-4c7f-8ca0-4e339cb4dc6a к точке монтирования /home. Речь здесь идет о разделе sdb3. Следующим шагом мы забаним эту строку символом #, а следующей строкой внесем запись, монтирующую в точку /home нужный нам раздел sda2. Для этого нужно знать идентификатор раздела sda2.


14
Идентификатор раздела sda2 можно узнать, выполнив команду:

blkid /dev/sda2

результатом я получил следующее сообщение:

/dev/sda2: UUID="9b4c72dd-2b43-4fa1-b8aa-d8ac1907c4e0" TYPE="ext2" PARTUUID="c6afd0ef-02"

Идентификатором является длинное буквенно-цифровое выражение в кавычках между первым знаком равенства и словом TYPE. Это выражение использовал в 12-й строке.


15
Окончательно отредактированный текст файла fstab выглядит у меня теперь так:

1.   #     /etc/fstab: static file system information.
2.   #
3.   #     Use 'blkid' to print the universally unique identifier for a
4.   #     device; this may be used with UUID= as a more robust way to name devices
5.   #     that works even if disks are added and removed. See fstab(5).
6.   #
7.   #     <file system> <mount point>   <type>  <options>       <dump>  <pass>
8.   #     / was on /dev/sda1 during installation
9.   UUID=b6c63c48-17a9-4e02-938b-f78c3ba0d6df /               ext4    errors=remount-ro 0       1
10.  #     /home was on /dev/sda3 during installation
11.  #      UUID=3c033eaf-d53a-4c7f-8ca0-4e339cb4dc6a /home           ext4    defaults        0       2
12.  UUID=9b4c72dd-2b43-4fa1-b8aa-d8ac1907c4e0 /home           ext2    defaults       0       0
13.  #      swap was on /dev/sda2 during installation
14.  UUID=82739bd3-fa29-47f9-84e6-5a09c07fe49e none            swap    sw              0       0

Я ввел 12-й строкой идентификатор моего раздела 400 Гб и верно указал формат файловой системы: ext2. Последним знаком 12-й строки я указал 0. Этот знак определяет очередность предстартовой проверки исправности файловой системы раздела при запуске. 0 означает отказ от проверки. Этим я рассчитываю сократить время запуска. Если захочу, я смогу в дальнейшем периодически редактировать файл, заменяя 0 на 2.

16
Чтобы сохранить новую редакцию файла нужно нажать совместно клавиши Ctrl + O, затем энтер. Чтобы покинуть редактор «nano» нужно нажать совместно  Ctrl + Х

17
Перезапускаем компьютер.

Вуаля!!! У меня привычная среда! Даже все закладки браузера сохранились!

Чтобы убедиться, что в точке /home действительно теперь примонтирован раздел sda2 объемом 400 Гб, нужно опять выполнить команду:

lsblk

Результат выполнения виден на правой стороне картинки в начале статьи.


Теперь краткое содержание статьи для продвинутых пользователей Linix, которым не надо ничего подробно объяснять, но у котороых тем не менее не получилось добиться нужного результата.

Для краткости я буду называть раздел 16 Гб «старым», а раздул 400 Гб — «новым».

1
Подсоединить оба винчестера к другому компьютеру со своей собственной ОС Linux.

Или запустить с флэшки штатный компьютер с обоими подключенными винчестерами.

2
Открыть «Nautilus» в двух окнах.

3
Зафиксировать имя каталога, находящегося в корневом каталоге старого раздела. Это каталог пользователя.

4
Создать в корневом каталоге нового раздела каталог с тем же именем. Передвинуть в него из корневого каталога нового раздела все без исключения личные папки и файлы.

5
В Наутилусе сделать видимыми скрытые файлы на старом разделе. Окажется, что имена ставших видимыми служебных файлов и каталогов все будут начинаться с точки, например, .config.

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

7
Запустить систему на штатном компьютере в обычном режиме.

8
Получить сведения об устройствах, разделах и точках монтирования, выполнив команду:

lsblk

Мой результат выполнения виден на левой части картинки в начале статьи.

Зафиксировать системные обозначения старого и нового раздела, например, sdb3, sda2.

9
Запросить системный идентификатор нового раздела, выполнив команду, в которой использовать зафиксированные в предыдущем шаге обозначение нового раздела:

blkid /dev/sd[знак устройства][номер раздела]

результат будет похож на:

/dev/sda2: UUID="9b4c72dd-2b43-4fa1-b8aa-d8ac1907c4e0" TYPE="ext2" PARTUUID="c6afd0ef-02"


10
Отредактировать системный файл fstab, находящийся в каталоге /etc системного  корневого каталога с помощью системного редактора «nano». В тексте указанного файла заменить системный идентификатор старого раздела — того, который примонтирован на /home, — на системный идентификатор нового раздела, который получили в предыдущем шаге. Сохранить изменения.

12
Перезапускаем компьютер.

Вуаля!!! У меня привычная среда! Даже все закладки браузера сохранились!

Чтобы убедиться, что в точке /home действительно теперь примонтирован раздел sda2 объемом 400 Гб, нужно опять выполнить команду:

lsblk

Результат выполнения виден на правой стороне картинки в начале статьи.





Примечание:

«Винчестер» — такое название HDD применяется только в России. Так повелось потому, что на первых жестких дисках, поступавших в СССР в составе первых персональных компьютеров, значилось имя фирмы-производителя «Винчестер». Помнится, в конце 80-х спрашивали: «А компьютер с винчестером?» — потому что многие 286-е поступали без винчестера и запускались ОС DOS 4.0 c гибкого диска объемом 720 Кб. С таких же дисков загружались и игры. Существуют аналоги: метрополитен, примус, кирогаз, патефон и дргугие. И всё работало, не висло!

Мне, не посвященному в программирование, вообще не понятно, почему и каким образом объемы нынешнего софта выросли до многих Гб, и кто эти Гб пишет, и где у него время на такую писанину — интересный познавательный вопрос! 1 Гб = 1000000000 б. Это примерно столько, сколько за нормальную человеческую жизнь происходит сердечных сокращений, включая беспомощную младость и немощную старость. Hello! = 6 байт. Одна нормальная сплошная страница латинского текста насчитывает около 2800 знаков, что соответствует в простом формате .ТХТ 2800 байт — это при сплошном заполнении. Текст объемом с «Войну и мир» в 1300 страниц потребует, таким образом, объема  3640000 байт = 3,64 Мб. Всего лишь в одном Гб может содержаться 275 таких 4-томных романов. Объем Windows10 более 20 Гб. Кто и за какое время может такой объем сочинить, даже если бить по клавиатуре не задумываясь, как это делают все герои голливудских блокбастеров? Понятно, что образные, и видео данные, в которых каждый пиксель описан знаками по яркости и градации цвета (1 знак  = 1 или 2 байтам), а в одном видео-кадре помещается, скажем, 1280 х 1024 пикселей, а кадры следую с частотой нескольких десятков в секунду — понятно, что такие данные требуют гигабайтовых объемов. Но сами операционные системы и программные приложения, состоящие из точных продуманных директив, — почему они занимают гигабайты. Сочинить такие объемы физически невозможно! Вот о чем стоит задуматься. Просто мистика какая-то!