LINUX.ORG.RU

Вопросы по LFS

 


0

2

Всем привет. Заранее извиняюсь за возможные тупые вопросы. Решил я собрать LFS, и все таки, за один 20ти часовой присест я это дело осилил. Но, так как последние часов 7 я уже сидел не в особо адекватном состоянии, я решил закрепить пройденное и собрать его ещё разок. У меня появились некоторые вопросы, не знаю, насколько они глупые, но подозреваю, что достаточно. В общем, делал я всё из-за chroot и такой вопрос, как делать лучше: после установки компилятора и необходимых пакетов грузится по нормальному в lfs и продолжать из-под неё или можно всё целиком и полностью делать в chroot? Следовательно, если грузится из под лфс, то чтение инструкции уже не так удобно в браузере lynx. Я начал думать. Машина у меня одна, грузится параллельно с чего-то другого не очень удобно. И тут встал вопрос, как забутить лфс, который находится на отдельном ssd(один раздел) внутри основной системы? Я попробовал через virtualbox, создав диск с указателем на раздел с LFS, но vb определяет диск как с необнаруженным бут девайсом или что-то такое там было, ну вы поняли. Могу предположить, что это из-за отсутствия GRUB на этом диске, но очень в этом не уверен. Следующий вопрос по компиляции, как я понял, можно указать флаг -jx, где x - количество ядер, чтобы(как я понял) ускорить сам процесс. В моём случае это 8 ядер, 16 потоков. Ну так вот, что мне указывать? 8 или 16, потому что, как я заметил, во многих английских гайдах понятие ядра и потока очень размыты и иногда обозначают одно и тоже. И ещё вопрос, может ли увеличение значения -j привести к каким-то проблемам или кривой компиляции, не считаю случаев, когда необходимо использовать -j1 по гайду. Вроде бы все, помогите пожалуйста

тся ться не надо путать

В виртуалку надо пробрасывать диск целиком, а не раздел из него. Только следить чтобы списки смонтированных разделов в системе в виртуалке и в системе на хосте не пересекались (исключение: раздел можно смонтировать одновременно и там и там, если оба монтирования read-only; read-only + read-write - уже риск проблем, read-write + read-write - проблемы почти гарантированны).

-jN может привести к проблемам если makefile сделан не очень аккуратно, насколько часто такие встречаются - не знаю.

Какое число туда ставить - никаких строгих правил нет, можешь хоть -j100. Конкретное оптимальное число зависит от проца, от проекта, от количества памяти, от скорости работы диска на котором делается компиляция, обычно оно в указанных тобой пределах - от количества ядер до количества потоков. Ставить меньше, чем количество ядер (которые ты хочешь отдать компилятору) смысла обычно нет (но учти что потребление памяти тоже растёт и если у тебя её мало то может не хватить, начнётся свап и всё плохо). Если ставить больше - сначала будет становиться чуть быстрее, потом плавно перейдёт на спад.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)

можно всё целиком и полностью делать в chroot

Не можно, а нужно.

Ну так вот, что мне указывать? 8 или 16

  1. На самом деле, после -j8 разница будет на единицы процентов и в какой-то момент увеличение может стать регрессивным. Опытно подбери для себя «комфортное» значение от 8 до 16.

может ли увеличение значения -j привести к каким-то проблемам или кривой компиляции

При таких значениях - вряд ли, если достаточно оперативки и есть раздел подкачки. Насколько я помню LFS не требует сборки llvm, clang, spidermonkey, браузеров и т.п., требовательного к памяти при сборке.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)

Могу предположить, что это из-за отсутствия GRUB на этом диске

Я не настоящий сварщик (опыта с LFS не было, был опыт с гентой), но предполагаю, что для обсуждения этой темы было бы полезно рассказать, с чего у тебя грузится основная система. GRUB вообще присутствует на каком-нибудь диске, или ты напрямую с UEFI грузишься?

Так-то если GRUB в принципе есть, можно было бы настроить на него загрузку второй системы и обойтись без виртуалок. И это было бы более «спортивно», на мой взгляд. Но да, ценные данные с машины при этом обязательно надо забэкапить.

Следовательно, если грузится из под лфс, то чтение инструкции уже не так удобно в браузере lynx.

Я когда генту ставил, не поленился вообще хендбук на черновиках распечатать. :) Очень удобно оказалось. Не говорю, что это единственно верный вариант, но рассмотреть стоит.

может ли увеличение значения -j привести к каким-то проблемам или кривой компиляции

В общем случае может, если сам проект (исходники) кривой. Сталкивался с таким когда-то. Но что-то мне подсказывает. что с базовыми пакетами, входящими в состав LFS, настолько грубых косяков быть не должно. Но тут могу и ошибаться.

По остальным вопросам не подскажу, сам до LFS пока ещё не добрался. Единственно, я бы не стал это делать за один 20-часовой присест. Лучше немного отойти и подумать, потом может появиться свежий взгляд на проблему. Ты же не стахановский рекорд ставишь, а осваиваешь новую тему и (надеюсь) получаешь от этого удовольствие. :)

hobbit ★★★★★
()

Могу предположить, что это из-за отсутствия GRUB на этом диске

Ага, но для загрузки с отдельного диска, можно не ставить груб, а при старте основной системы войти в консоль груба и установить рут раздел:

set root=(hd[x],msdos1)

linux /vmlinuz root=/dev/sd[?] waitroot rw

boot //Естественно нужно ядро

Только не вижу смысла грузится в систему пока в ней нет Xorg. Вообще да, ты можешь установить все и в chroot.

В моём случае это 8 ядер, 16 потоков

Долго GCC собирал? У меня на 6 ядрах (старенький амд проц) где то часа 3))

ez7
()

распечатать инструкции на бумаге

burato ★★★★★
()
Ответ на: комментарий от hobbit

А просто загрузиться с диска? У автора же система на отдельном диске.

jhonathan
()
Последнее исправление: jhonathan (всего исправлений: 1)
Ответ на: комментарий от ez7

Долго GCC собирал? У меня на 6 ядрах (старенький амд проц) где то часа 3))

Собирал минут 30 вроде, но вот тесты очень долго проходили, больше часа. У меня i9-11900K

Lantsevrot
() автор топика
Ответ на: комментарий от hobbit

GRUB вообще присутствует на каком-нибудь диске, или ты напрямую с UEFI грузишься?

У меня 3 ssd в компе. На первом винда, на втором Debian с грабом. LFS на 3м ssd(половина диска размечена - sda1(с лфс), вторая половина не размечена). Проблем с загрузкой у меня нет, граб детектит лфс и загружает его. У меня проблема именно в буте параллельно с основной системой, например с помощью virtualbox

Lantsevrot
() автор топика
Ответ на: комментарий от firkax

В виртуалку надо пробрасывать диск целиком, а не раздел из него. Только следить чтобы списки смонтированных разделов в системе в виртуалке и в системе на хосте не пересекались (исключение: раздел можно смонтировать одновременно и там и там, если оба монтирования read-only; read-only + read-write - уже риск проблем, read-write + read-write - проблемы почти гарантированны).

То есть, у меня есть диск sda с одним разделом sda1 с ЛФС, и указатель в vb нужно делать на sda, а не на sda1. Понял, попробую. И, как я понял, в системе, желательно, полностью размонтировать этот диск перед запуском его в VB

Lantsevrot
() автор топика
Ответ на: комментарий от Lantsevrot

Размонтировать тот раздел, который будешь трогать из виртуалки. Если раздел всего один - значит да, полностью.

firkax ★★★★★
()

после установки компилятора и необходимых пакетов грузится по нормальному в lfs и продолжать из-под неё или можно всё целиком и полностью делать в chroot?

После установки компилятора ты ни загрузишся. Я в чруте все делаю, до сборки нормального браузера.

В моём случае это 8 ядер, 16 потоков. Ну так вот, что мне указывать?

Программно «поток» и «ядро» можно считать одно и тоже. -j17 если озу нормально.

И ещё вопрос, может ли увеличение значения -j привести к каким-то проблемам или кривой компиляции

Иногда при кривых мейкфайлах - да, но в лфс делают варнинг.

DMITRY
()
Ответ на: комментарий от Lantsevrot

тесты не нужны, кроме случаев когда есть подозрения что криво собралось. Для gcc, когда пробовал их гонять результата так и не дождался )

DMITRY
()
Ответ на: комментарий от anonymous

при компиляции тяжёлых проектов (например clang) если оперативы мало если упрётся в swap с -j8 будешь неделями/месяцами ждать на слабом/старом компе, а с -j1 — часы от силы дни. скоко потоков во стоко раз оперативы сожрётся

teod0r ★★★★★
()
Ответ на: комментарий от firkax

В виртуалку надо пробрасывать диск целиком, а не раздел из него

Сделал, но безрезультатно. Вот код виртуального диска:

# Disk DescriptorFile
version=1
CID=964b29af
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 937703088 FLAT "/dev/sda" 0

# The disk Data Base 
#DDB

ddb.virtualHWVersion = "4"
ddb.adapterType="ide"
ddb.geometry.cylinders="16383"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
ddb.uuid.image="7b61f2d5-8d14-44f4-94d7-992bcbeb5708"
ddb.uuid.parent="00000000-0000-0000-0000-000000000000"
ddb.uuid.modification="00000000-0000-0000-0000-000000000000"
ddb.uuid.parentmodification="00000000-0000-0000-0000-000000000000"

А вот вывод fdisk -l

Устр-во         начало     Конец   Секторы Размер Тип
/dev/nvme0n1p1    2048   1050623   1048576   512M EFI
/dev/nvme0n1p2 1050624 488396799 487346176 232,4G Файловая система Linux


Диск /dev/sda: 447,13 GiB, 480103981056 байт, 937703088 секторов
Disk model: SSD Smartbuy 480
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: 4864F58E-3499-11EA-AD70-709E2972BDA8

Устр-во       начало     Конец   Секторы Размер Тип
/dev/sda1       2048 459476991 459474944 219,1G Файловая система Linux
/dev/sda2  459476992 479956991  20480000   9,8G Linux своп

VB выдает это:

FATAL: No bootable medium found! System halted.

Еще раз уточню. На диске sda 2 раздела, swap(sda2) и LFS(sda1), остальное пространство не размечено

Lantsevrot
() автор топика
Ответ на: комментарий от teod0r

если оперативы мало

А мало - это сколько примерно? У меня 32гб, это мало или достаточно считается по меркам компиляции?

Lantsevrot
() автор топика
Ответ на: комментарий от firkax

Могу предположить, что это из-за отсутствия GRUB на этом диске, но очень в этом не уверен

Я в основном посте это написал, но никто на это ничего не ответил, я подумал, ну, значит и не надо.

А как он загрузится без загрузчика?

Кто его знает, мб в virtualbox есть какой-нибудь свой интегрированный шайтан загрузчик.

Спасибо за помощь, установлю

Lantsevrot
() автор топика
Ответ на: комментарий от Lantsevrot

Я в основном посте это написал, но никто на это ничего не ответил, я подумал, ну, значит и не надо.

Ты прокидывал раздел вместо диска, а в разделе загрузочной части grub и не могло быть, наверно поэтому восприняли как должное.

firkax ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.