22.03.2011 20:37
Pyatak
 
С целью более глубокого изучения и понимания работы данной ОС, решил попробовать создать свой малюсенький дистрибутив со своими скриптами инициализации. За основу, в которой компилирую и беру откомпилированные модули, взял Gentoo, которую поставил на второй диск.

И так, первая цель - просто залогиниться и получить командную строку.
На чистом диске создал структуру каталогов, положил ядро с встроенными необходимыми драйверами, в папку /lib скопировал необходимые библиотеки, которые требуются init, bash, login, passwd, useradd, mknod, mount, hostname, agetty, halt. Ну и сами эти программы разложил по соответствующим папкам. В папку /etc так же положил минимально необходимые файлы настроек для passwd и login (список будет ниже). Написал скрипт минимальной инициализации, прописал его в inittab. В общем всё почти хорошо, в систему chroot-юсь, создаю пароль root'а, добавляю пользователей, создаю для них пароли. Перезагружаюсь, во вновь созданную систему, вижу заветное приглашение, однако при любых учетных данных вижу одно: login incorrect. Перезагружаюсь в материнскую систему, chroot-юсь в эту, создаю пользователя, например user, вижу что соответствующая запись в /etc/passwd появляется, даю команду passwd user, ввожу простой пароль, судя по сообщению, пароль создан успешно. Тут же даю команду login user, на приглашение ввода пароля, ввожу только что созданный пароль. И опять получаю login incorrect. Что я не учел? Два дня гуглю, ничего полезного не нашел.

Вот некоторые данные, которые могут пригодиться:
Содержание /etc/inittab::

Код:
id:3:initdefault:
si:S:sysinit:/etc/init.d/rc.S
c1:12345:respawn:/sbin/agetty 38400 tty1 linux
c2:2345:respawn:/sbin/agetty 38400 tty2 linux


Содержание /etc/init.d/rc.S::

Код:
#!/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin

mount -n -t proc proc /proc -o noexec,nosuid,nodev
mount -n -t sysfs sysfs /sys -o noexec,nosuid,nodev

mount -n -t tmpfs -o exec,nosuid,mode=0755,size=10M udev /dev
mknod -m 600 /dev/console c 5 1
mknod -m 620 /dev/tty1 c 4 1
mknod -m 666 /dev/tty c 5 0
mknod -m 666 /dev/null c 1 3
mknod -m 660 /dev/kmsg c 1 11
mkdir -p /dev/pts /dev/shm
mount -t devpts /dev/pts
mknod /dev/zero c 1 5
mknod /dev/tty0 c 4 0
mknod /dev/tty2 c 4 2
hostname minilin
echo "HELLO!"
return 0


Содержание папки /etc:

Код:
drwxr-xr-x 2 root root  4096 Mar 21 18:16 default
-rw-r--r-- 1 root root   287 Mar 18 08:44 fstab
-rw-r--r-- 1 root root   523 Mar 21 18:17 group
-rw------- 1 root root   536 Mar 21 18:17 group-
drwxr-xr-x 2 root root  4096 Mar 21 17:20 init.d
-rw-r--r-- 1 root root   657 Mar 19 08:53 inittab
-rw-r--r-- 1 root root    30 Mar 21 19:41 issue
-rw-r--r-- 1 root root 10447 Mar 21 18:14 login.defs
-rw-r--r-- 1 root root    47 Mar 18 08:45 mtab
-rw-r--r-- 1 root root   568 Mar 22 16:37 nsswitch.conf
drwxr-xr-x 2 root root  4096 Mar 19 09:16 opt
drwxr-xr-x 2 root root  4096 Mar 16 12:04 pam.d
-rw-r--r-- 1 root root   832 Mar 21 18:17 passwd
-rw------- 1 root root   871 Mar 21 18:17 passwd-
-rw------- 1 root root   262 Mar 21 17:14 securetty
drwxr-xr-x 4 root root  4096 Mar 21 17:17 security
-rw------- 1 root root   532 Mar 22 16:52 shadow
-rw------- 1 root root   558 Mar 21 18:17 shadow-
drwxr-xr-x 2 root root  4096 Mar 21 18:16 skel
-rw-r----- 1 root root  1459 Mar 18 07:45 sysctl.conf
drwxr-xr-x 3 root root  4096 Mar  8 08:14 udev


Содержание папки /bin:

Код:
-rwxr-xr-x 1 root root 781240 Mar 16 15:11 bash
-rwxr-xr-x 1 root root  38400 Mar 17 17:20 cat
-rwxr-xr-x 1 root root  87788 Mar 17 16:13 cp
-rwxr-xr-x 1 root root  21872 Mar 16 21:02 echo
-rwxr-xr-x 1 root root  17788 Mar 19 09:12 env
-rwxr-xr-x 1 root root  79732 Mar 17 16:47 grep
-rwxr-xr-x 1 root root   9540 Mar 17 16:48 groups
-rwxr-xr-x 1 root root   9544 Mar 21 17:08 hostname
-rwxr-xr-x 1 root root  38424 Mar 17 16:14 ln
-rwxr-xr-x 1 root root  34940 Mar 21 19:39 login
-rwxr-xr-x 1 root root  96168 Mar 17 15:23 ls
-rwxr-xr-x 1 root root  38344 Mar 17 16:17 mkdir
-rwxr-xr-x 1 root root  21948 Mar 16 21:28 mknod
-rwx--x--x 1 root root  59720 Mar 16 21:19 mount
-rwxr-xr-x 1 root root 153496 Mar 17 18:26 nano
-rwx--x--x 1 root root  32888 Mar 17 16:48 passwd
lrwxrwxrwx 1 root root      4 Mar 18 08:14 sh -> bash
-rws--x--x 1 root root  30940 Mar  8 09:18 su


содержание папки /sbin:

Код:
-rwxr-xr-x 1 root root  18236 Mar 16 15:10 agetty
-rwxr-xr-x 1 root root   5384 Mar  8 08:08 ctrlaltdel
-rwxr-xr-x 1 root root  13716 Mar 16 21:41 halt
-rwxr-xr-x 1 root root  35040 Mar  8 06:46 init
lrwxrwxrwx 1 root root      4 Mar 17 14:32 poweroff -> halt
lrwxrwxrwx 1 root root      4 Mar 16 21:41 reboot -> halt
-rwxr-xr-x 1 root root  22052 Mar 16 21:41 shutdown
-rwxr-xr-x 1 root root  18292 Mar 18 09:50 start-stop-daemon
-rwxr-xr-x 1 root root  13728 Mar 16 21:41 sulogin
lrwxrwxrwx 1 root root      6 Mar 17 14:34 swapoff -> swapon
-rwxr-xr-x 1 root root  22184 Mar 17 14:34 swapon
-r-xr-xr-x 1 root root  13640 Mar 18 07:45 sysctl
-rwxr-xr-x 1 root root 116372 Mar 17 14:57 udevadm
-rwxr-xr-x 1 root root 108284 Mar 17 14:57 udevd
-rwx--x--x 1 root root  30168 Mar 21 18:04 unix_chkpwd


содержание папки /lib:

Код:
-rwxr-xr-x 1 root root  117836 Mar 16 15:07 ld-2.11.3.so
lrwxrwxrwx 1 root root      12 Mar 16 15:06 ld-linux.so.2 -> ld-2.11.3.so
lrwxrwxrwx 1 root root      15 Mar 17 17:32 libacl.so.1 -> libacl.so.1.1.0
-rwxr-xr-x 1 root root   30240 Mar 17 17:32 libacl.so.1.1.0
lrwxrwxrwx 1 root root      16 Mar 17 17:32 libattr.so.1 -> libattr.so.1.1.0
-rwxr-xr-x 1 root root   17792 Mar 17 17:32 libattr.so.1.1.0
lrwxrwxrwx 1 root root      17 Mar 16 21:19 libblkid.so.1 -> libblkid.so.1.1.0
-rwxr-xr-x 1 root root  112792 Mar 16 21:19 libblkid.so.1.1.0
-rwxr-xr-x 1 root root 1331300 Mar 16 15:07 libc-2.11.3.so
lrwxrwxrwx 1 root root      14 Mar 16 15:05 libc.so.6 -> libc-2.11.3.so
lrwxrwxrwx 1 root root      17 Mar 17 17:54 libcrack.so.2 -> libcrack.so.2.8.1
-rwxr-xr-x 1 root root   30104 Mar 17 17:54 libcrack.so.2.8.1
-rwxr-xr-x 1 root root   38216 Mar 17 17:14 libcrypt-2.11.3.so
lrwxrwxrwx 1 root root      18 Mar 17 17:14 libcrypt.so.1 -> libcrypt-2.11.3.so
-rwxr-xr-x 1 root root    9604 Mar 16 21:07 libdl-2.11.3.so
lrwxrwxrwx 1 root root      15 Mar 16 21:07 libdl.so.2 -> libdl-2.11.3.so
lrwxrwxrwx 1 root root      15 Mar 16 15:04 libncurses.so -> libncurses.so.5
lrwxrwxrwx 1 root root      17 Mar 16 15:04 libncurses.so.5 -> libncurses.so.5.7
-rwxr-xr-x 1 root root  273816 Mar 16 15:04 libncurses.so.5.7
lrwxrwxrwx 1 root root      16 Mar 17 18:27 libncursesw.so -> libncursesw.so.5
lrwxrwxrwx 1 root root      18 Mar 17 18:27 libncursesw.so.5 -> libncursesw.so.5.7
-rwxr-xr-x 1 root root  314968 Mar 17 18:27 libncursesw.so.5.7
-rwxr-xr-x 1 root root   75440 Mar 17 17:42 libnsl-2.11.3.so
lrwxrwxrwx 1 root root      16 Mar 17 17:42 libnsl.so.1 -> libnsl-2.11.3.so
-rwxr-xr-x 1 root root   26260 Mar 17 17:40 libnss_compat-2.11.3.so
lrwxrwxrwx 1 root root      23 Mar 17 17:40 libnss_compat.so.2 -> libnss_compat-2.11.3.so
-rwxr-xr-x 1 root root   17796 Mar 17 17:40 libnss_dns-2.11.3.so
lrwxrwxrwx 1 root root      20 Mar 17 17:40 libnss_dns.so.2 -> libnss_dns-2.11.3.so
-rwxr-xr-x 1 root root   42428 Mar 17 17:40 libnss_files-2.11.3.so
lrwxrwxrwx 1 root root      22 Mar 17 17:40 libnss_files.so.2 -> libnss_files-2.11.3.so
-rwxr-xr-x 1 root root   17812 Mar 17 17:40 libnss_hesiod-2.11.3.so
lrwxrwxrwx 1 root root      23 Mar 17 17:40 libnss_hesiod.so.2 -> libnss_hesiod-2.11.3.so
-rwxr-xr-x 1 root root   38364 Mar 17 17:40 libnss_nis-2.11.3.so
lrwxrwxrwx 1 root root      20 Mar 17 17:40 libnss_nis.so.2 -> libnss_nis-2.11.3.so
-rwxr-xr-x 1 root root   46516 Mar 17 17:40 libnss_nisplus-2.11.3.so
lrwxrwxrwx 1 root root      24 Mar 17 17:40 libnss_nisplus.so.2 -> libnss_nisplus-2.11.3.so
lrwxrwxrwx 1 root root      11 Mar 17 16:50 libpam.so -> libpam.so.0
lrwxrwxrwx 1 root root      16 Mar 17 16:50 libpam.so.0 -> libpam.so.0.83.0
-rwxr-xr-x 1 root root   46556 Mar 17 16:50 libpam.so.0.83.0
lrwxrwxrwx 1 root root      16 Mar 17 16:50 libpam_misc.so -> libpam_misc.so.0
lrwxrwxrwx 1 root root      21 Mar 17 16:50 libpam_misc.so.0 -> libpam_misc.so.0.82.0
-rwxr-xr-x 1 root root    9484 Mar 17 16:50 libpam_misc.so.0.82.0
lrwxrwxrwx 1 root root      12 Mar 17 16:50 libpamc.so -> libpamc.so.0
lrwxrwxrwx 1 root root      17 Mar 17 16:50 libpamc.so.0 -> libpamc.so.0.82.1
-rwxr-xr-x 1 root root   13592 Mar 17 16:50 libpamc.so.0.82.1
-r-xr-xr-x 1 root root   50780 Mar 18 07:44 libproc-3.2.8.so
lrwxrwxrwx 1 root root      16 Mar 18 07:44 libproc.so -> libproc-3.2.8.so
-rwxr-xr-x 1 root root  112300 Mar 17 17:33 libpthread-2.11.3.so
lrwxrwxrwx 1 root root      20 Mar 17 17:33 libpthread.so.0 -> libpthread-2.11.3.so
-rwxr-xr-x 1 root root   71296 Mar 17 17:43 libresolv-2.11.3.so
lrwxrwxrwx 1 root root      19 Mar 17 17:43 libresolv.so.2 -> libresolv-2.11.3.so
-rwxr-xr-x 1 root root   30552 Mar 17 17:32 librt-2.11.3.so
lrwxrwxrwx 1 root root      15 Mar 17 17:32 librt.so.1 -> librt-2.11.3.so
lrwxrwxrwx 1 root root      17 Mar 17 18:16 libsysfs.so.2 -> libsysfs.so.2.0.1
-rwxr-xr-x 1 root root   42412 Mar 17 18:16 libsysfs.so.2.0.1
-rwxr-xr-x 1 root root    9612 Mar 21 17:48 libutil-2.11.3.so
lrwxrwxrwx 1 root root      17 Mar 21 17:48 libutil.so.1 -> libutil-2.11.3.so
lrwxrwxrwx 1 root root      16 Mar 16 21:20 libuuid.so.1 -> libuuid.so.1.3.0
-rwxr-xr-x 1 root root   13868 Mar 16 21:20 libuuid.so.1.3.0
lrwxrwxrwx 1 root root      13 Mar 17 17:54 libz.so -> libz.so.1.2.3
lrwxrwxrwx 1 root root      13 Mar 17 17:54 libz.so.1 -> libz.so.1.2.3
-rwxr-xr-x 1 root root   75148 Mar 17 17:54 libz.so.1.2.3
drwxr-xr-x 3 root root    4096 Mar  8 09:16 security
drwxr-xr-x 5 root root    4096 Mar  8 08:14 udev


содержание /usr/sbin:

Код:
-rwxr-xr-x 1 root root 76728 Mar 21 17:23 useradd
-rwxr-xr-x 1 root root 51704 Mar 21 17:23 userdel
22.03.2011 21:12
OlegON
 
Не осилил все, извини. Но показалось, что pam у тебя есть в конфигах и только.
Я бы затею бросил :) Начал бы писать под Линукс, значительно больше даст, чем сборка одного из миллиона дистрибутивов :)
22.03.2011 22:11
Pyatak
 
PAM не только в конфигах, все его модули стоят и проверены с помощью ldd, что все библиотеки на месте. Пока PAM полностью не поставил, не работала команда passwd.
Я уже программировал, писал и графические приложения на lazarus'е и демоны на Си. К стати, было очень интересно изучать особенности системного программирования под Линукс.
По мимо более глубокого понимания, мне еще нужен дистрибутив для встроенной системы, где будет всего около 64 мб для ОСи, вот и решил совместить приятное с полезным.
22.03.2011 22:24
OlegON
 
syslog уже воткнул? dmesg, может? под вечер туго соображаю...
25.03.2011 10:21
7fox7
 
Цитата:
Pyatak skip
Если делается загрузочная флешка то обязательно sync перед ребутом. И логи нужно поднимать.
31.03.2011 18:53
Pyatak
 
Докинул в систему все файлы, которые содержались в пакетах shadow, pam, cracklib, nologin, которые изначально упустил, однако проблему не решило. Как бы не хотелось syslog втыкать, но видимо придется. Просто syslog потянет за собой logrotate, а тот, в свою очередь, cron. А вся эта фукциональность в конечной системе будет не нужна, разве что вот так вот ошибки выявлять.
Работаем дальше... Если у кого какая мысль в голове промелькнула, делитесь.
31.03.2011 22:30
OlegON
 
logrotate системе и сислогу не нужен (-logrotate, если Gentoo), крон тоже. А вот избавить от блуждания сислог может...
31.03.2011 23:57
Pyatak
 
Да, syslog помог, проблема была в банальном отсутствии файла /etc/shells
Блин, только почему это сопровождается надписью "login incorrect"?? Хоть бы про ошибку какую писал.

А у меня еще проскакивала мысль где-то на заднем плане о том, откуда login знает какой shell нужно запускать... Но так же на заднем плане проскочила мысль, что наверное где-то в иниттаб должно быть прописано. Но, так как я в эти моменты находился не за компьютером, проверить не мог, а потом забыл про эту мысль.
Часовой пояс GMT +3, время: 10:35.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.