Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Был создан файл autologin.c следующего содержания:
Проблема в том, что GRUB работать с UUID умеет, а ядро — нет, то есть напрямую монтировать корневую систему по UUID (не зная имени устройства) невозможно. Это не баг, а следствие идейных соображений Линуса Торвальдса, поэтому на такую возможность и в будущем надеяться не стоит.А что тогда вот это делает у меня в grub.cfg?
linux /boot/vmlinuz-2.6.38-8-generic root=UUID=fb44ba52-19a4-4a88-9ff2-a1c2b3c7083c ro
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> represents the device number
of partition — device number of disk plus the partition number
5) /dev/<disk_name>p — 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.
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.
А если заглянуть в LKML, то можно там разглядеть строки вида root=PARTUUID=99DE9194-FC15-4223-9192-FC243948F88B
Так что есть вменяемые решения, позволяющие обойтись убогого костыля, коим является initramfs.
root_device_name = saved_root_name;
if (!strncmp(root_device_name, "mtd", 3) ||
!strncmp(root_device_name, "ubi", 3)) {
mount_block_root(root_device_name, root_mountflags);
goto out;
}
ROOT_DEV = name_to_dev_t(root_device_name);
if (strncmp(root_device_name, "/dev/", 5) == 0)
root_device_name += 5;
}
if (strncmp(name, "PARTUUID=", 9) == 0) {
name += 9;
if (strlen(name) != 36)
goto fail;
res = devt_from_partuuid(name);
if (!res)
goto fail;
goto done;
}
464 subversion:
475 php:
482 povray:
483 polkit:
489 sbcl:
494 glib:
539 grub:
547 numpy:
560 wxGTK:
627 boost:
639 samba:
691 pygtk:
745 tar:
754 pango:
810 udev:
858 glibc:
956 fftw:
1025 gimp:
1070 gcc:
1094 gtk+:
1233 nano:
2103 avidemux:
2413 wine:
2893 ghc:
4689 chromium:
Делаем из Linux From Scratch свой универсальный дистрибутив