Comments 51
Был создан файл autologin.c следующего содержания:
А смысл создавать отдельный бинарник, если всё то же самое делается простейшим шелл-скриптом?
+1
mingetty поддерживает автологин, если прописать соответствующую опцию.
+3
Проблема в том, что GRUB работать с UUID умеет, а ядро — нет, то есть напрямую монтировать корневую систему по UUID (не зная имени устройства) невозможно. Это не баг, а следствие идейных соображений Линуса Торвальдса, поэтому на такую возможность и в будущем надеяться не стоит.А что тогда вот это делает у меня в grub.cfg?
linux /boot/vmlinuz-2.6.38-8-generic root=UUID=fb44ba52-19a4-4a88-9ff2-a1c2b3c7083c ro
0
Этот UUID передается в ядро, но ядро по нему смонтировать root не сможет. Именно для этого создается initramfs, которая монтируется, запускается init, который, в свою очередь, ищет по UUID имя, понятное ядру (например /dev/sda1) и уже по нему монтируется настоящая файловая система.
+3
А почему оно работает при init=/bin/sh?
0
Могу ошибаться, но, наверное потому, что /bin/sh существует в примонтированной временной initramfs?
+2
Возможно. Вообще, если заглянуть в /init/do_mounts.c, то можно там разглядеть следующую вещь:
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.
0
Парсер — лох
0
Смотрим в том же файле дальше. А именно:
Видим там name_to_dev_t. Смотрим исходник:
Это ванильное ядро 2.6.38. Всё давно уже есть. А Вы дальше читайте глупые книжки и используйте древние костыли.
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;
}
Видим там name_to_dev_t. Смотрим исходник:
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;
}
Это ванильное ядро 2.6.38. Всё давно уже есть. А Вы дальше читайте глупые книжки и используйте древние костыли.
0
магические константы, как же я их люблю!
0
Сам-то пробовал прежде чем кричать? PARTUUID работает только на GPT.
0
А флешку с единственным разделом в GPT форматнуть релилия не позволяет?
-2
Ребят, я же сейчас сделаю образ, который будет грузиться в консоль без initrd.
0
Я тоже могу сделать. Но там во-первых будет использоваться PARTUUID, а не UUID как сказано в вашем первом посте, а во-вторых GPT разметка вместо MBR. Да, GPT круче во всех отношениях, но о ней мало кто знает и её не умеет обычный fdisk.
+1
А ещё я совершенно не понимаю, зачем надо было использовать этот ваш LFS вместо создания минимального (нет, это не тот, что дают в debootstrap, тут поколдовать надо) образа той же убунты, наложив при этом пару патчей на ядро?
+1
Но ведь LFS is just for fun… ;)
+1
Та ведь и сам Linux Just For Fun. И кому это помешало?
+5
Денис Попов будет рад топику
-15
Спасибо за интересную статью. Мне интересен LFS, я как раз собираюсь с ним разобраться и установить на встраиваемую систему телемеханники. Интересует, почему вы остановились именно на RTLinux, хотя существует множество вариантов сделать из Linux real-time систему, такие как Xenomai, KURT, RTAI и может еще какие. У вас был осознанный выбор и если да, то какие преимущества и недостатки у остальных систем?
+3
umount -v /mnt/USBOSTmp/dev/pts
umount -v /mnt/USBOSTmp/dev/shm
umount -v /mnt/USBOSTmp/dev
umount -v /mnt/USBOSTmp/proc
umount -v /mnt/USBOSTmp/sys
for d in dev/pts dev/shm dev proc sys; do
unmount -v /mnt/USBOSTmp/$d;
done
umount -v /mnt/USBOSTmp/dev/shm
umount -v /mnt/USBOSTmp/dev
umount -v /mnt/USBOSTmp/proc
umount -v /mnt/USBOSTmp/sys
for d in dev/pts dev/shm dev proc sys; do
unmount -v /mnt/USBOSTmp/$d;
done
+3
а насколько сложно будет скомпилировать под LFS иксы и какой-нибудь WM? например xfce?
0
и сколько дней займет
0
Меньше, чем за сутки мой компьютер пересобирает все установленные на нём пакеты. Вот несколько самых «тяжёлых» вместе со временем в секундах:
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:
+1
Если собирать Gentoo с KDE-4.6.4 с обычным набором ПО (из бинарного разве что libreoffice-bin), то получаем 1 день 54 минуты на машине с AMD Phenom(tm) II X6 1035T (2.6 GHz) и 4-мя гигабайтами оперативной памяти.
% emerge -pe world | genlop --pretend
…
Estimated update time: 1 day, 54 minutes.
% emerge -pe world | genlop --pretend
…
Estimated update time: 1 day, 54 minutes.
+1
Есть проект Beyond Linux From Scratch (BLFS), который является продолжением LFS. Там тоже есть книга.
По поводу дней — все зависит от свободного времени, энтузиазма, скорости компьютера и желания разбираться.
LFS, например, я (параллельно с другими делами) первый раз собирал 3-4 дня. Потом, когда многое стало просто и понятно, следующая сборка (с более новыми библиотеками и софтом) заняла около 1 дня (тут все уперлось в производительность).
Если желания разбираться нет, то можно покопать в сторону Automated Linux From Scratch (ALFS) для автоматической сборки.
По поводу дней — все зависит от свободного времени, энтузиазма, скорости компьютера и желания разбираться.
LFS, например, я (параллельно с другими делами) первый раз собирал 3-4 дня. Потом, когда многое стало просто и понятно, следующая сборка (с более новыми библиотеками и софтом) заняла около 1 дня (тут все уперлось в производительность).
Если желания разбираться нет, то можно покопать в сторону Automated Linux From Scratch (ALFS) для автоматической сборки.
+4
Спасибо. Статью добавил в закладки.
0
Согласно моему опыту сборки читать нужно самый актуальный LFS на английском языке и никак иначе. Правила от версии к версии меняются, а русские варианты, тем более указанный Вами серьезно отстают от актуальной книги
0
Вы не рассматривали вариант загрузки по PXE/TFTP с последующей работой по NFS?
И я как-то не понял если честно зачем вам RT ядро? Пользовательский интерфейс у вас по каким протоколам работает?
И я как-то не понял если честно зачем вам RT ядро? Пользовательский интерфейс у вас по каким протоколам работает?
0
Тиражировать можно с помощью dd if=flashka of=/dev/flashka что я и делал для порядка 15 компов.
0
Не верю в универсальность дистрибутива, у которого нет swap по умолчанию.
0
Универсальность — понятие неоднозначное. В посте идет речь про «real-time»-систему, запускаемую с флешки. И, если применение swap-а в «real-time»-системе для меня лично сомнительно (хотя могу и ошибаться), то, что касается флешки — не думаю, что найдется много желающих использовать swap.
Тем более, что в моем случае «универсальность» подразумевает под собой применение специализированной для выполнения определенной задачи системы, не привязанной, однако, к конкретному компьютеру.
Тем более, что в моем случае «универсальность» подразумевает под собой применение специализированной для выполнения определенной задачи системы, не привязанной, однако, к конкретному компьютеру.
0
>Тем более, что в моем случае «универсальность» подразумевает под собой применение специализированной для выполнения определенной задачи системы.
То есть универсальность по Вашему, это заточенность под специализированную задачу? Я бы посоветовал Вам почитать словарь.
Свап для реалтайма — впринципе не нужно(в qnx если не ошибаюсь свапа тоже нет), а вот для универсальности это важно(IMHO) — до сих пор существует куча софта, который чисто принципиально использует своп и его отсутствие может негативно сказаться на определенной группе ПО и о универсальности, как таковой можно забыть.
То есть универсальность по Вашему, это заточенность под специализированную задачу? Я бы посоветовал Вам почитать словарь.
Свап для реалтайма — впринципе не нужно(в qnx если не ошибаюсь свапа тоже нет), а вот для универсальности это важно(IMHO) — до сих пор существует куча софта, который чисто принципиально использует своп и его отсутствие может негативно сказаться на определенной группе ПО и о универсальности, как таковой можно забыть.
0
Sign up to leave a comment.
Делаем из Linux From Scratch свой универсальный дистрибутив