Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   Сборка LFS (http://forum.oszone.net/showthread.php?t=13086)

atomic 24-12-2003 12:47 70008

Собираю 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 не видно.
Подскажите выход кто сталкивался.

atomic 24-12-2003 16:38 70009

Уточняю, после 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.


Zur0 24-12-2003 18:17 70010

Я чето не понял. Запости свою структуру каталогов из /mnt/lfs.
Как я понял ты скомпилил не в /mnt/lfs/static, а в /static. У тебя к моменту входа в chroot должно быть что то вроде этого (точно не помню, давно это было):
Код:

/mnt/lfs/static
/mnt/lfs/etc
/mnt/lfs/proc


atomic 25-12-2003 11:22 70011

Скомпилил я все в /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 на отсутствие которого она ругается.

antonym 25-12-2003 13:12 70012

Что-то у вас какая-то ситуация не очень понятная... После какой именно команды
Цитата:

ln -sf /proc/mounts /etc/mtab , ln -s /static/bin/bash /bin/bash,  ln -s bash /bin/sh
идёт сообщение о No such file or directory?

Что касается 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?


Zur0 25-12-2003 13:34 70013

Я не читал этот перевод. Но когда я собирал по 4 версии книги на англицком все было ОК. Последовательность такая:
1. Компилим статически
2. Создаем дерево
3. chroot'имся
4. Компилим динамически
5. Настройка

Как я понял ты пропустил пункт 2. Сначало нужно создать все на что ссылаешся (touch /mnt/lfs/etc/mtab например).

atomic 25-12-2003 14:33 70014

Статически скомпилил в  /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 . Или после создания их надо как-то подключать.

antonym 25-12-2003 15:45 70015

А $LFS какое у вас имеет значение? Дерево ведь надо создать в $LFS, а не в $LFS/static. Ваша static должна быть одной из директорий, которые есть в корне (/).

atomic 25-12-2003 23:52 70016

echo $LFS
/mnt/lfs
mkdir $LFS/static
т.е. $LFS=/mnt/lfs

Zur0 26-12-2003 09:10 70017

И что ты хочеш?
Вникни в суть. Ты chroot'ишся не в /mnt/lfs/static, а в /mnt/lfs => /mnt/lfs должен содержать и bin,lib,sbin,proc,etc...

atomic 26-12-2003 11:53 70018

Все делал в точности по книге!
Да и в раз'яснениях к установке везде указывается что надо ставить в */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]

antonym 26-12-2003 13:43 70019

В 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 быть не должно.

serg2002 26-12-2003 14:56 70020

Народ , а как вы пользуете LFS ?
Я зашел http://multilinux.sakh.com/lfs/  

Я попробовал скачать по ссылкам , а они нерабочие :
ftp://ftp.linuxfromscratch.org/
http://ftp.linuxfromscratch.org/

antonym 26-12-2003 16:26 70021

Зайдите на главный сайт: www.linuxfromscratch.org и качайте английскую версию книги.

Да, для версии книги 5.0 все необходимые пакеты можно найти, например, на ftp://gaosu.rave.org/pub/linux/lfs/lfs-packages/5.0/.

А пользуем так же, как и любой другой дистрибутив, только с гораздо большим удовольствием :)

atomic 26-12-2003 17:49 70022

Большое спасибо за объяснения. Хочу уточнить, вы говорите что, нужно создать дерево каталогов в $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]

antonym 26-12-2003 18:44 70023

Да, просто создать дерево каталогов вручную. В той версии книги, которой пользовался я, даже команды приводятся:
Код:

mkdir -p /{bin,boot,dev/{pts,shm},etc/opt,home,lib,mnt,proc}
mkdir -p /{root,sbin,tmp,usr/local,var,opt}
for dirname in /usr /usr/local
 * *do
 * *mkdir $dirname/{bin,etc,include,lib,sbin,share,src}
 * *ln -s share/{man,doc,info} $dirname
 * *mkdir $dirname/share/{dict,doc,info,locale,man}
 * *mkdir $dirname/share/{nls,misc,terminfo,zoneinfo}
 * *mkdir $dirname/share/man/man{1,2,3,4,5,6,7,8}
done
mkdir /var/{lock,log,mail,run,spool}
mkdir -p /var/{tmp,opt,cache,lib/misc,local}
mkdir /opt/{bin,doc,include,info}
mkdir -p /opt/{lib,man/man{1,2,3,4,5,6,7,8}}

И ещё следующее:
Код:

chmod 0750 /root
chmod 1777 /tmp /var/tmp

А в четвёртой версии этого нет?

[s]Исправлено: antonym, 18:44 26-12-2003[/s]

Zur0 27-12-2003 06:05 70024

antonym
Незнаю как в русской версии, а английской точно есть. Сам собирал, все было нормально.

serg2002 27-12-2003 19:48 70025

Я извиняюсь :
А вообще с чего нужно начать ?
Нужно создать системную дискету или системный сидюк ?
Если , допустим , уже есть винт с созданными линуксовыми разделами - с чего запускаться ?
А если нет разделов - создать вначале разделы ?
Я скачал 5-ю версию с  ftp://gaosu.rave.org/pub/linux/lfs/lfs-packages/5.0/.


antonym 28-12-2003 00:08 70026

Сначала нужно прочитать книжку. Взять её можно... ну хотя бы здесь: http://www.hu.linuxfromscratch.org/l...nloads/stable/. Перед установкой нужно прочитать как минимум с первой по четвёртую главы. После этого уже всё должно быть ясным :-)

atomic 29-12-2003 16:27 70027

Спасибо за разъяснения.
Все прошло нормально.
Продолжаю дальше.

Guest 11-03-2004 10:50 70028

Не давно тоже начал собирать 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


Время: 13:38.

Время: 13:38.
© OSzone.net 2001-