Собираю LFS по http://multilinux.sakh.com/lfs/ v.4.0. русская.
И вот какая проблема. На 2-м этапе я вхожу в систему через chroot как root системы LFS. Далее предлагают mount proc /proc -t proc . Тут говорят могут быть ошибки, и proc все равно примонтируется, НО этот root не видит /proc базовой состемы. Далее идет создание символических ссылок ln -sf /proc/mounts /etc/mtab и ln -s /static/bin/bash /bin/bash, ln -s bash /bin/sh они заканчиваются ошибкой о невозможности найти директорию, и это нормально ведь мой (LFS) / это /mnt/lfs базовой системы которую из LFS не видно. Подскажите выход кто сталкивался. |
Уточняю, после mount proc /proc -t proc идет сообщение.
can't create lock file /etc/mtab~1213: No such file or directory (use -n flag to override). после ln -sf /proc/mounts /etc/mtab , ln -s /static/bin/bash /bin/bash, ln -s bash /bin/sh идет сообщение: No such file or directory. |
Я чето не понял. Запости свою структуру каталогов из /mnt/lfs.
Как я понял ты скомпилил не в /mnt/lfs/static, а в /static. У тебя к моменту входа в chroot должно быть что то вроде этого (точно не помню, давно это было): Код:
/mnt/lfs/static |
Скомпилил я все в /mnt/lfs/static , там у меня есть bin, include, info, lib, libexec, man, share, var, и src-то откуда я ставил.
Но /mnt/lfs/static/proc там нету и /mnt/lfs/static/etc тоже нету. Я пробовал создать /mnt/lfs/static/proc и /mnt/lfs/proc, но это не помогает. Может надо создать /mnt/lfs/static/etc и прописать там mtab на отсутствие которого она ругается. |
Что-то у вас какая-то ситуация не очень понятная... После какой именно команды
Цитата:
Что касается proc, то это же виртуальная файловая система. В LFS book написано, что она может быть подмонтирована сколько угодно раз в совершенно разные mount points. Если поддержка proc включена в ядро базовой системы (host system), то она должна совершенно свободно монтироваться и после chroot. Наконец - разве "она" ругается на отсутствие /mnt/lfs/static/etc/mtab? У вас в командах присутствуют только /proc/mounts, /static/bin/bash и bash. В какую директорию вы делаете chroot? В /mnt/lfs или /mnt/lfs/static? |
Я не читал этот перевод. Но когда я собирал по 4 версии книги на англицком все было ОК. Последовательность такая:
1. Компилим статически 2. Создаем дерево 3. chroot'имся 4. Компилим динамически 5. Настройка Как я понял ты пропустил пункт 2. Сначало нужно создать все на что ссылаешся (touch /mnt/lfs/etc/mtab например). |
Статически скомпилил в /mnt/lfs/static
Дерево создалось в /mnt/lfs/static и имеет вид bin include info lib libexec man share var src Далее делаю chroot $LFS /static/bin/env -i \ HOME=/root TERM=$TERM PS1='\u:\w\$ ' \ PATH=/bin:/usr/bin:/sbin:/usr/sbin:/static/bin \ /static/bin/bash --login получаю I have no name!#ls static I have no name!#chown -R 0:0 /static I have no name!#mount proc /proc -t proc can't create lock file /etc/mtab~1213: No such file or directory (use -n flag to override) I have no name!#ln -sf /proc/mounts /etc/mtab ln: creating symbolic link `/etc/mtab' to `/proc/mounts': No such file or directory и т.д. ln -s /static/bin/bash /bin/bash && ln -s bash /bin/sh : No such file or directory Добавлено: Может недостающие директории создать самому. Но с proc не получилось. Создавал в /mnt/lfs/static/proc и /mnt/lfs/proc . Или после создания их надо как-то подключать. |
А $LFS какое у вас имеет значение? Дерево ведь надо создать в $LFS, а не в $LFS/static. Ваша static должна быть одной из директорий, которые есть в корне (/).
|
echo $LFS
/mnt/lfs mkdir $LFS/static т.е. $LFS=/mnt/lfs |
И что ты хочеш?
Вникни в суть. Ты chroot'ишся не в /mnt/lfs/static, а в /mnt/lfs => /mnt/lfs должен содержать и bin,lib,sbin,proc,etc... |
Все делал в точности по книге!
Да и в раз'яснениях к установке везде указывается что надо ставить в */mnt/lfs/static. Но в / действительно должно быть что-то вроде bin,lib,sbin,proc,etc...(???) И как мне теперь поступить? - chroot'ится в другой каталог? - или скопировать содержимое директории /mnt/lfs/static в */mnt/lfs/ (я так понимаю ссылки статические и все должно работать)? Но в дереве созданного LFS у меня ни proc ни etc нет. Мне их надо создать или это что-то неверно пошло. Если надо создать то надо ли подключать proc и какие файлы должны быть в etc. Там точно должен быть mtab или fstab я так понимаю. Если так то какое должно быть содержимое mtab или fstab для LFS. [s]Исправлено: atomic, 11:56 26-12-2003[/s] |
В LFS book написано, что сначала нужно скомпилировать минимальный необходимый набор инструментов - что-то статически, что-то - динамически связанное с этим статическим, но всё равно, это все - инструменты. Их помещают в отдельный каталог в дереве LFS. В вашем случае, это $LFS/static. В LFS 5.0, который собирал я, это $LFS/tools. Без разницы. Далее, вы должны создать стандартное дерево каталогов в $LFS. Понятно, почему. Это будущий корень вашей системы, он должен содержать все стандартные каталоги. А $LFS/static - это всего лишь директория, содержащая временные, статически слинкованные инструменты, нужные для компиляции нормальной системы уже после chroot, когда у вас отсутствуют gcc, glibc, binutils и прочее из базовой системы.
В $LFS/static всё нужно ставить только в одной главе. Именно в той, в которой компилируются инструменты. В следующей уже нужно будет устанавливать, как полагается, в /usr. Сейчас вам нужно всего лишь создать дерево каталогов в $LFS. Чтобы вы там не успели натворить в $LFS/static на данный момент :), всё равно, это каталог - временный. После окончания установки нормальной системы его можно будет удалить. Копировать ничего не надо! Ни в коем случае! Пусть все статически слинкованные файлы остаются в $LFS/static. Что до /proc и /etc, то вам нужно их создать (равно как и /bin, и /sbin, и /tmp, и всего остального) в корне вашей будущей системы - в $LFS. На данный момент, никаких файлов в /etc быть не должно. |
Народ , а как вы пользуете LFS ?
Я зашел http://multilinux.sakh.com/lfs/ Я попробовал скачать по ссылкам , а они нерабочие : ftp://ftp.linuxfromscratch.org/ http://ftp.linuxfromscratch.org/ |
Зайдите на главный сайт: www.linuxfromscratch.org и качайте английскую версию книги.
Да, для версии книги 5.0 все необходимые пакеты можно найти, например, на ftp://gaosu.rave.org/pub/linux/lfs/lfs-packages/5.0/. А пользуем так же, как и любой другой дистрибутив, только с гораздо большим удовольствием :) |
Большое спасибо за объяснения. Хочу уточнить, вы говорите что, нужно создать дерево каталогов в $LFS.
Что, просто вручную создать пустые каталоги /proc, /etc, /bin, /sbin, /tmp, и все остальное в корне LFS ?? А качал я отсюда , ftp://ftp.at.linuxfromscratch.org/pu...ckages-4.0.tar потомучто перевод сейтчас только версии 4 есть, но в этом архиве по крайней мере один файл битый binutils. Взял недостающее из ftp://ftp.at.linuxfromscratch.org/pu...ckages-4.1.tar [s]Исправлено: atomic, 18:29 26-12-2003[/s] |
Да, просто создать дерево каталогов вручную. В той версии книги, которой пользовался я, даже команды приводятся:
Код:
mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc} Код:
chmod 0750 /root [s]Исправлено: antonym, 18:44 26-12-2003[/s] |
antonym
Незнаю как в русской версии, а английской точно есть. Сам собирал, все было нормально. |
Я извиняюсь :
А вообще с чего нужно начать ? Нужно создать системную дискету или системный сидюк ? Если , допустим , уже есть винт с созданными линуксовыми разделами - с чего запускаться ? А если нет разделов - создать вначале разделы ? Я скачал 5-ю версию с ftp://gaosu.rave.org/pub/linux/lfs/lfs-packages/5.0/. |
Сначала нужно прочитать книжку. Взять её можно... ну хотя бы здесь: http://www.hu.linuxfromscratch.org/l...nloads/stable/. Перед установкой нужно прочитать как минимум с первой по четвёртую главы. После этого уже всё должно быть ясным :-)
|
Спасибо за разъяснения.
Все прошло нормально. Продолжаю дальше. |
Не давно тоже начал собирать LFS 4.0. Не могу скомпелировать bash. Конфигуре проходит нормально, а когда делаю make выдает: ***********************************************************
* * * GNU bash, version 2.05a.0(8)-release (i686-pc-linux-gnu) * * *********************************************************** rm -f shell.o gcc -s -DPROGRAM='"bash"' -DCONF_HOSTTYPE='"i686"' -DCONF_OSTYPE='"linux-gnu"' -DCONF_MACHTYPE='"i686-pc-linux-gnu"' -DCONF_VENDOR='"pc"' -DSHELL -DHAVE_CONFIG_H -I. -I. -I./include -I./lib -g -O2 -c shell.c In file included from shell.h:41, from shell.c:48: externs.h:163: error: conflicting types for `gethostname' /usr/include/unistd.h:789: error: previous declaration of `gethostname' externs.h:196: error: conflicting types for `strncasecmp' /usr/include/string.h:298: error: previous declaration of `strncasecmp' make: *** [shell.o] Ошибка 1 |
Время: 22:30. |
Время: 22:30.
© OSzone.net 2001-