Почему я не могу указать свою корневую фс с UUID?

Можно также попробовать это в командной строке.

for i in `cat textfile` ; do yum -y install $i; done

Для каждого я в текстовом файле это делает конфетку-y установка.

30
07.10.2013, 22:30
3 ответа

Параметр, который необходимо передать начальной загрузке от UUID, PARTUUID. Таким образом, это должно быть root=PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e.

Документация объясняет, почему она возвращается с unknown-block(0,0):

kernel-parameters.txt:

    root=       [KNL] Root filesystem
            See name_to_dev_t comment in init/do_mounts.c.

init/do_mounts.c:

/*
 *  Convert a name into device number.  We accept the following variants:
 *
 *  1) device number in hexadecimal represents itself
 *  2) /dev/nfs represents Root_NFS (0xff)
 *  3) /dev/<disk_name> represents the device number of disk
 *  4) /dev/<disk_name><decimal> represents the device number
 *         of partition - device number of disk plus the partition number
 *  5) /dev/<disk_name>p<decimal> - same as the above, that form is
 *     used when disk name of partitioned disk ends on a digit.
 *  6) PARTUUID=00112233-4455-6677-8899-AABBCCDDEEFF representing the
 *     unique id of a partition if the partition table provides it.
 *     The UUID may be either an EFI/GPT UUID, or refer to an MSDOS
 *     partition using the format SSSSSSSS-PP, where SSSSSSSS is a zero-
 *     filled hex representation of the 32-bit "NT disk signature", and PP
 *     is a zero-filled hex representation of the 1-based partition number.
 *  7) PARTUUID=<UUID>/PARTNROFF=<int> to select a partition in relation to
 *     a partition with a known unique id.
 *
 *  If name doesn't have fall into the categories above, we return (0,0).
 *  block_class is used to check if something is a disk name. If the disk
 *  name contains slashes, the device name has them replaced with
 *  bangs.
 */

Последний бит в конце говорит, что, если он не может понять значение, он возвращается (0,0), следовательно Ваша ошибка.

16
27.01.2020, 19:38
  • 1
    FTP, Это только частично корректно. Раздел UUID полностью отличается от UUID файловой системы, таким образом, PARTUUID=666c2eee-193d-42db-a490-4c444342bd4e не работает. Однако я смог использовать PARTUUID=SSSSSSSS-02 (где SSSSSSSS является дисковой подписью NT, показанной незадолго до сообщения об ошибке). –  cjm 06.10.2013, 08:42
  • 2
    Таким образом, я предполагаю, что реальный ответ - то, что ядро не поддерживает root=UUID, только root=PARTUUID. Если Вы хотите использовать файловую систему UUID, я предполагаю, что Вам нужен initramfs, который может обработать монтирующиеся файловые системы UUID. –  cjm 06.10.2013, 08:48
  • 3
    @cjm мой grub начальные загрузки вполне счастливо с root=UUID. –  terdon♦ 06.10.2013, 17:30
  • 4
    @terdon, я буду держать пари, что у Вас есть initramfs или initrd. (Это могло быть связано в Ваше ядро вместо того, чтобы быть отдельным файлом.) –  cjm 06.10.2013, 17:59

Для пояснения UUID - это единственный надежный способ для ядра идентифицировать жесткие диски. Есть два типа: UUID, который хранится в файловой системе и недоступен для ядра во время загрузки, и PARTUUID, который хранится в таблице разделов и доступен во время загрузки. Таким образом, вы должны использовать

root=PARTUUID=SSSSSSSS-PP

, поскольку / dev / sd ?? может изменяться с подключенными / отключенными устройствами.

Не забудьте использовать заглавные буквы в шестнадцатеричном числе SSSSSSSS-PP , которое вы получаете из blkid !

Более простой в использовании

root=LABEL=
root=UUID=

работает только с initramfs , который извлекает эти идентификаторы.

Итак, если вы используете непустой initramfs , у вас могут быть все три! С пустым initramfs у вас есть только PARTUUID .

22
27.01.2020, 19:38

Этой теме 5 лет. Но все же это имхо не полностью ответил. Не хватает небольшого примера. Вот он:

В этом примере:

/dev/sda3 = /
/dev/sda2 = swap

...используя раздел GPT. С разделом MBR (dos )PARTUUID короче, но процедура такая же...

получить PARTUUID с помощью blkid:

blkid -s PARTUUID -o value /dev/sda3 # root
77fd7830-faa2-4e99-a48b-337ad9eded28
blkid -s PARTUUID -o value /dev/sda2 # swap
5b63167a-6fd2-4e72-948c-90832372956c

/boot/grub/grub.cfg:

search --no-floppy --part-uuid --set=root 77fd7830-faa2-4e99-a48b-337ad9eded28

menuentry "GNU/Linux, KERNEL 4.12.7-lfs-8.1" {
  linux /boot/vmlinuz-4.12.7-lfs-8.1 root=PARTUUID=77fd7830-faa2-4e99-a48b-337ad9eded28 net.ifnames=0 ipv6.disable=1 ro rootwait rootfstype=ext4
}

/etc/fstab/:

PARTUUID=77fd7830-faa2-4e99-a48b-337ad9eded28 / ext4 noatime,nodiratime,errors=remount-ro 0 1
PARTUUID=5b63167a-6fd2-4e72-948c-90832372956c swap swap pri=1 0 0

Известно, что это РАБОТАЕТ с lfs8.1 (ядром 4.12.7 )Но я думаю, что это должно работать и с большинством других ядер (старых и новых...)

4
27.01.2020, 19:38

Теги

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