Как предотвратить несоответствие UUID диска при клонировании машины?

Как и другие значения CONFIG_, CONFIG_HZявляется параметром конфигурации; вы найдете его вkernel/Kconfig.hzвместе с различными переопределениями, относящимися к архитектуре -, в других файлах Kconfig. Его значение определяется во время сборки и сохраняется в сгенерированном файле конфигурации include/generated/autoconf.h.

Последний включается командой сборки ядра. Чтобы увидеть это в действии, выберите файл, который включает в себя asm/param.h, и соберите его пост-обработанный эквивалент -, подробно; например

make drivers/atm/suni.i V=1

В какой-то момент сборки вы увидите

gcc -E -Wp,-MD,drivers/atm/.suni.i.d  -nostdinc \
    -isystem /usr/lib/gcc/x86_64-redhat-linux/8/include \
    -I./arch/x86/include -I./arch/x86/include/generated \
    -I./include -I./arch/x86/include/uapi \
    -I./arch/x86/include/generated/uapi -I./include/uapi \
    -I./include/generated/uapi \
    -include./include/linux/kconfig.h \
    -include./include/linux/compiler_types.h...
    -DMODULE  -DKBUILD_BASENAME='"suni"' -DKBUILD_MODNAME='"suni"' \
    -o drivers/atm/suni.i drivers/atm/suni.c

и вы можете увидеть результат в drivers/atm/suni.iс расширением HZи CONFIG_HZ.

Директива -include./include/linux/kconfig.hгарантирует, что конфигурация ядра всегда включена.include/linux/kconfig.hвключает generated/autoconf.h.

0
13.04.2021, 12:39
2 ответа

What can I do on the original machine BEFORE I capture an 'image' of it, so that when unpacked to another machine this problem is avoided?

вместо ссылки на диск, монтируемой по имени -, сделайте это по

  • устанавливается по -табличке
  • или установленный по имени -

# for example when mounted by-name it would look like this in /etc/fstab

/dev/sda3   /

# and When mounted by-label it would like this in /etc/fstab

LABEL=some_name   /

Выполнение этого с помощью -метки будет работать в новой системе без дополнительной работы.

Знайте, что выполнение этого по -имени будет работать в новой системе только в том случае, если это единственный диск в системе, для которого гарантируется ссылка на sda. Когда в системе есть другие диски или когда другое оборудование обрабатывается как /dev/sd?, вы не можете полагаться на то, что ваш клонированный диск всегда будет sda, и в этом проблема с именем -. Если все ваши ссылки /etc/fstabи grubимеют /dev/sda, но ваш диск указан как /dev/sdb, тогда загрузочное устройство не найдено .

Вы должны немного знать свою систему Linux, RHEL/CentOS, SLES/SUSE, Ubuntu или что-то еще, и найти, где находятся все ссылки на диски . Это не просто /etc/fstab.Загрузчик Grub , скорее всего, будет в других местах, так как он наиболее популярен среди Linux. История :Раньше я использовал SLES 11, который использовал ELILO... который был альтернативой grub, который я считал отличным... верните ELILO!... но для этого мне нужно было беспокоиться только о одном другом файле, кроме /etc/fstab, который был elilo.conf.

Как только ваш новый клонированный диск загрузится и заработает, среди ваших различных задач по настройке этой новой системы (имя хоста, IP-адрес и т. д. )просто обновите /etc/fstabи файлы grub, чтобы вернуться к монтированию от -uuid

Также помните, что при монтировании по -метке вы должны гарантировать, что другие диски не будут использовать ту же метку. Кажется достаточно просто, но это легко забыть; например, я всегда обозначаю раздел /bootпросто boot, а мой раздел /просто root. Если я пойду и клонирую диски, а затем попытаюсь подключить два из этих дисков и попытаюсь загрузиться, что выберет система, когда более одного раздела имеют одинаковую метку? Таким образом, метка -может вас укусить, если вы будете забывчивы... система может легко загружаться и работать, но вы не будете работать на том диске, о котором думаете.

Посмотрите под /dev/disk/и вы увидите

  • по -идентификатор/
  • по метке -/
  • по -частичной метке/
  • автор -партууид/
  • по -пути/
  • от -uuid/

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

ls -l /dev/disk/by-label

lrwxrwxrwx. 1 root root 10 Mar  2 15:46 boot ->../../sdc2
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 data ->../../sda1
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 root ->../../sdc3
lrwxrwxrwx. 1 root root 10 Mar  2 15:46 scratch ->../../sdb1

# Explanation of these 4 listings: when installing Linux I always do
    /boot    ==> /dev/sda2  labeled as 'boot'
    /        ==> /dev/sdc3  labeled as 'root'
   
  my other disks here on this specific system I labeled as data and scratch.
2
28.04.2021, 22:52
  1. Используйте blkid, чтобы узнать исходные UUID разделов.
  2. Для разделов ext2/ext3/ext4 используйте sudo tune2fs -U UUID /dev/partitionдля установки UUID, который вы получили в 1.
  • Для btrfs будетsudo btrfstune -U UUID /dev/partition
  • Для xfs будетsudo xfs_admin -U UUID /dev/partition

Имейте в виду, что не рекомендуется иметь разные разделы с одним и тем же UUID и вдвойне, если вы решите подключить два диска к одному ПК. Ваше ядро ​​и вы лично можете запутаться и может произойти что-то непреднамеренное.

1
28.04.2021, 22:52

Теги

Похожие вопросы