Linux From Scratch 9.0(LFS)独自のLinuxディストリビューションをカスタマイズする際の注意事項

0、この記事は同意しました

0.0。参照内容

LFSマニュアルの翻訳をして    くれたLinuxChina-LCTT-LFS翻訳チーム」に特に感謝します。グループの公式ウェブサイトはhttps://lctt.github.ioで、LFSマニュアルのURLはhttps://です。 lctt.github.io/LFS-BOOK


    この記事で使用されているLFSマニュアルは、Linux From Scratch(簡体字中国語版)-9.0-チームによって翻訳されたSysVHTMLバージョンです。


操作プロセスについては、HTMLバージョンのLFSマニュアルを参照することを強くお勧めします。理由は、この記事のセクション1.1を参照してください

0.1。入力および出力スタイル

    Linux環境で入力および出力されるコマンドは、次のスタイルで表されます(内容は端末の表示と一致しています)。

lfs@lfs-VirtualBox:~$ echo "hello world"

0.2。注意が必要な事項

    次のスタイルを使用して表現します。

ここに注意事項があります、

0.3。ホスト構成

    この記事で使用されている物理マシンは次のとおりです。

HP ZHAN 66 Pro 14 G3
CPU:i7-10510U
RAM:16GB
オペレーティングシステム:Windows10-64

    LFSコンパイル環境:

VirualBox-6.1&Ubuntu-Desktop-20.04(サーバーバージョンを使用する場合は、LFSマニュアルの第8.3章の「mount--bind / boot / mnt / lfs / boot」コマンドを実行し、ターミナルソフトウェアを使用してリンクしてくださいsshを介してホストに送信して注文を実行します)

    LFSコンパイル環境のソフトウェアバージョン:

bash、バージョン5.0.17(1)
-リリース/ bin / sh- > / usr / bin / bash
Binutils:GNU ld(GNU Binutils for Ubuntu)2.34
bison(GNU Bison)3.5.1
/ usr / bin / yacc-> /usr/bin/bison.yacc
bzip2、バージョン1.0.8、2019年7月13日。
Coreutils:8.30
diff(GNU diffutils)3.7
find(GNU findutils)4.7.0
GNU Awk 5.0.1、API:2.0(GNU MPFR 4.0.2、GNU MP 6.2.0)
/ usr / bin / awk- > / usr / bin / gawk
gcc(Ubuntu 9.3.0-17ubuntu1〜20.04)9.3.0
g ++(Ubuntu 9.3.0-17ubuntu1〜20.04)9.3.0
(Ubuntu GLIBC 2.31-0ubuntu9.2)2.31
grep(GNU grep)3.4
gzip 1.10
Linuxバージョン5.4.0-42-generic(buildd @ lgw01-amd64-038)(gccバージョン9.3.0(Ubuntu 9.3.0-10ubuntu2))#46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020
m4( GNU M4)1.4.18
GNU Make 4.2.1GNU
パッチ
2.7.6Perlバージョン= '5.30.0';
Python 3.8.5
sed(GNU sed)4.7
tar(GNU tar)1.30
texi2any(GNU texinfo)6.7
xz(XZ Utils)5.2.4
g ++コンパイルOK

1.LFSについて少し理解する

1.0.LFSクロスコンパイル環境について

    基本的に、ホストオペレーティングシステムでは、他のマシンで使用できる別のオペレーティングシステムがコンパイルされます。つまり、クロスコンパイルです。


    複雑なのは、コンパイル結果がホストの環境変数とソフトウェアバージョンの影響を受けて、コンパイル結果や環境変数などのリンクがホストを指すようにする必要があるため、コンパイル結果が他のマシンで通常使用されます。


    この状況(環境汚染)を回避するために、LFSマニュアルのすべての操作は実際には3つのステップに分かれています。

  • 最初のステップは、ツールのセットを注意深く構築することです(シンボリックリンク、コンパイルパラメーターなどを厳密に設定します)。
  • 2番目のステップは、環境汚染を引き起こさないこのツールセットを使用して、基本的なクロスコンパイル環境をコンパイルすることです。
  • 3番目のステップである基本的なクロスコンパイル環境が構築されると、LFSマニュアルは、chrootコマンドを使用してこの環境に切り替え、環境内の最も基本的なコンパイルツールを使用して必要な他のソフトウェアをコンパイルするようにガイドします。

最後の図は、理解を容易にするためのものです。
ここに画像の説明を挿入

1.1。操作手順について

    LFSマニュアルのシェルコード部分(下図を参照)は、コピーして貼り付けて実行するだけです。ただし、参照するLFSマニュアルがPDFバージョンの場合、以下のコード部分に改行がないか(つまり、Linuxでは\ n、Windowsでは\ r \ n)、一部の記号に改行がない場合があることに注意してください。コピーされました(一部の章の英語記号など)。繰り返しになりますが、操作プロセスについては、HTMLバージョンのLFSマニュアルを参照することを強くお勧めします

ここに画像の説明を挿入
    LFSマニュアルの操作プロセス全体については、次の図のように大まかに理解できます。

ここに画像の説明を挿入

2.LFSマニュアルで注意すべきいくつかの場所

2.0。ソフトウェアバージョンチェックについて

    LFSマニュアルの「2.2。ホストシステム要件」の章で、指定されたソフトウェアバージョンチェックスクリプトは、ubuntu20.04の下のBinutilsのバージョンを正しく表示できません。スクリプトの内容を変更し、次の図の黄色のハイライターを削除する必要があります。それだけです(つまり、元の| cut -d "" -f3-を削除します)。それ以外の場合、Binutilsの出力バージョンは「Binutils:GNU」であり、変更後の出力バージョンは「Binutils:GNU ld(GNU Binutils for Ubuntu)2.34」です。

ここに画像の説明を挿入

2.1。パーティションについて

    LFSマニュアルの「2.4。新しいパーティションの作成」の章では、LFSシステムの構築に新しいパーティションを使用することをお勧めします。また、スワップパーティション、/ bootパーティション、およびその他のパーティションを作成することをお勧めします。これは行いませんが、50GBの新しいハードディスク/ dev / sdbをマウントし、プライマリパーティション/ dev / sdb1全体を作成してから、ext4形式でフォーマットします。

2.2。パッケージのコンパイルとインストールについて

特に重点を置いて

  • ソフトウェアパッケージをコンパイルしてインストールするときは、最初に$ LFS / sourcesディレクトリに入る必要があります。

  • ソフトウェアをコンパイルするたびに、最初にtarコマンドを使用してターゲットソフトウェアを解凍します(xzファイルの場合はtar -xf、bz2ファイルの場合はtar -jxf、gzファイルの場合はtar -zxf)。

  • 次に、cdコマンドを使用してソフトウェアのソースコードディレクトリに入ります。

  • 次に、LFSプロンプトに従います。

  • 最後に、操作が完了したら、cd…またはcd…/…コマンドを使用して$ LFS / sourcesディレクトリに戻り、rm -rfコマンドを使用してソフトウェアのソースコードディレクトリを削除します(LFSマニュアルに明示的に記載されていない場合)それを維持する必要があります)。

  • clearコマンドは、画面表示をクリアします(そうしないと、コンテンツが多すぎるために端末がクラッシュする可能性があります

  • LFSのマニュアルページめくり

  • 「6.7.Linux-5.2.8APIヘッダーファイル」の章から始めて、cdコマンドを使用して操作のために$ LFS / sourcesディレクトリに入ります。

  • 「6.80。クリーンアップ」の章の次のコマンドは正しく実行できないことがわかっています。

logout

chroot "$LFS" /usr/bin/env -i          \
    HOME=/root TERM="$TERM"            \
    PS1='(lfs chroot) \u:\w\$ '        \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

これは、この記事ではubuntu-desktopのデスクトップシステムログインを使用し、デスクトップシステムでターミナルを開いてコマンドを実行するためです。現在コマンドを実行しているシェルはログインシェルではないため、エラーが報告され、終了に失敗すると、さらに$ LFS環境変数とそれに対応するディレクトリの検索に失敗します。

(lfs chroot) root:/usr/lib# logout
bash: logout: not login shell: use `exit'
(lfs chroot) root:/usr/lib# 
(lfs chroot) root:/usr/lib# chroot "$LFS" /usr/bin/env -i          \
>     HOME=/root TERM="$TERM"            \
>     PS1='(lfs chroot) \u:\w\$ '        \
>     PATH=/bin:/usr/bin:/sbin:/usr/sbin \
>     /bin/bash --login
chroot: cannot change root directory to '': No such file or directory

したがって、logoutコマンドの代わりに「exit」コマンドを使用する必要があります。変更されたコマンドは次のとおりです。

exit

chroot "$LFS" /usr/bin/env -i          \
    HOME=/root TERM="$TERM"            \
    PS1='(lfs chroot) \u:\w\$ '        \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

2.3.Linuxヘッダーファイルのインストールについて

    LFSマニュアルの原文の「5.6.Linux-5.2.8APIヘッダーファイル」および「6.7.Linux-5.2.8APIヘッダーファイル」の章では、準備手順は説明されていません(図を参照)。未満)。

ここに画像の説明を挿入


    実際、これはこの記事のセクション2.2と同じです。まず、Linuxカーネルソースパッケージを解凍し、次に入力してから実行します。コードは次のように表示されます。
lfs@lfs-VirtualBox:/mnt/lfs/sources$ tar -xf linux-5.2.8.tar.xz
lfs@lfs-VirtualBox:/mnt/lfs/sources$ cd linux-5.2.8

2.4。「7.7.Bashシェル起動ファイル」の章のローカル文字セットのサポートについて

サポートされている文字セットを表示するには、次のコマンドを使用します。

locale -a

この記事ではzh_CN.gb18030しか表示できないため、元のLFSマニュアルで/ etc / profileを作成するためのスクリプトは次のように変更されています。

cat > /etc/profile << "EOF"
# Begin /etc/profile

export LANG=zh_CN.gb18030

# End /etc/profile
EOF

2.5。「8.2。/etc/ fstabファイルの作成」の章でfstabファイルを作成します。

この記事では単一のパーティションを使用しているため、セクション8.2のfstabファイルを作成するためのスクリプトは次のように変更されています。

cat > /etc/fstab << "EOF"
# Begin /etc/fstab

# file system  mount-point  type     options             dump  fsck
#                                                              order

/dev/sdb1     /            <fff>    defaults            1     1
proc           /proc        proc     nosuid,noexec,nodev 0     0
sysfs          /sys         sysfs    nosuid,noexec,nodev 0     0
devpts         /dev/pts     devpts   gid=5,mode=620      0     0
tmpfs          /run         tmpfs    defaults            0     0
devtmpfs       /dev         devtmpfs mode=0755,nosuid    0     0

# End /etc/fstab
EOF

2.6。「8.3.Linux-5.2.8」の章

linux-5.2.8.tar.xz圧縮パッケージを/ sourcesディレクトリに解凍し、cdして入力し、最初にmake mrproperコマンドを実行し、次にmake defconfigコマンドを実行し、次にmakemenuconfigコマンドを実行してから次の手順を実行します。カーネル構成を完了するためのLFSの推奨事項。

次のコマンドchroot環境では実行しないように注意することが重要です。

mount --bind /boot /mnt/lfs/boot

元のテキストは非常に明確であり、ホストの下で実行する必要があります。この記事のホストはubuntu-desktop環境であり、ターミナルを開いて実行します。


この章で注意すべきもう1つのポイントは、次のコマンドを変更する必要がないことです(X86_64システムを使用している場合でも、変更する必要はありません)。

cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.2.8-lfs-9.0

その理由は、arch / x86_64 / boot / bzImageファイルが実際にはリンクであり、ポイントされるパスが... /.../ x86 / boot / bzImageであるためです。ここでコマンドを変更すると、アーチがポイントされます。 / x86_64ディレクトリ。これにより、後続の起動が失敗します。

2.7。「8.4.GRUBを使用して起動プロセスを設定する」の章の起動設定

まず、この記事ではコマンドgrub-install / dev / sdaは実行されません。
次に、次のコマンドを実行する前に、/ boot / grub /grub.cfgを/boot/grub/grub.cfg.bakにバックアップします。
最後に、LFSマニュアルの説明によると(以下に示すように)
ここに画像の説明を挿入

この記事で使用する/ dev / sdb1は、grubでは(hd1,1)に設定する必要があり、ルートは/ dev / sdb1を指します。

/boot/grub/grub.cfgファイルを作成するための元のスクリプトは次のように変更されます。

cat > /boot/grub/grub.cfg << "EOF"
# Begin /boot/grub/grub.cfg
set default=0
set timeout=5

insmod ext2
set root=(hd1,1)

menuentry "GNU/Linux, Linux 5.2.8-lfs-9.0" {
        linux   /boot/vmlinuz-5.2.8-lfs-9.0 root=/dev/sdb1 ro
}
EOF

2.8。テストスイートの失敗について

2.8.1。「6.9.Glibc-2.30」の章

    LFSのコンパイルについては、この記事を参照してください。LFSマニュアル「6.9.Glibc-2.30」の章で操作すると、LFS inet / tst-idna_name_classifyおよびmisc / tst-ttynameで説明されている既知のテスト失敗項目が見つかり、表示されます。同時にLFSマニュアルに記載されていないテストはnptl / tst-mutex10に失敗します。しかし、フォローアップの実際の操作では、致命的な影響はありませんでした。これは、後遺症を確認するためにここで提案されています。

具体的なテスト結果は次のように出力されます。

UNSUPPORTED: elf/tst-audit10
UNSUPPORTED: elf/tst-avx512
UNSUPPORTED: elf/tst-ldconfig-bad-aux-cache
UNSUPPORTED: elf/tst-pldd
XPASS: elf/tst-protected1a
XPASS: elf/tst-protected1b
FAIL: inet/tst-idna_name_classify
UNSUPPORTED: math/test-double-libmvec-alias-avx512
UNSUPPORTED: math/test-double-libmvec-alias-avx512-main
UNSUPPORTED: math/test-double-libmvec-sincos-avx512
UNSUPPORTED: math/test-float-libmvec-alias-avx512
UNSUPPORTED: math/test-float-libmvec-alias-avx512-main
UNSUPPORTED: math/test-float-libmvec-sincosf-avx512
UNSUPPORTED: misc/tst-pkey
FAIL: misc/tst-ttyname
UNSUPPORTED: nptl/test-cond-printers
UNSUPPORTED: nptl/test-condattr-printers
UNSUPPORTED: nptl/test-mutex-printers
UNSUPPORTED: nptl/test-mutexattr-printers
UNSUPPORTED: nptl/test-rwlock-printers
UNSUPPORTED: nptl/test-rwlockattr-printers
FAIL: nptl/tst-mutex10
UNSUPPORTED: nss/tst-nss-db-endgrent
UNSUPPORTED: nss/tst-nss-db-endpwent
UNSUPPORTED: nss/tst-nss-files-hosts-long
UNSUPPORTED: nss/tst-nss-test3
UNSUPPORTED: resolv/tst-resolv-ai_idn
UNSUPPORTED: resolv/tst-resolv-ai_idn-latin1
Summary of test results:
      3 FAIL
   6070 PASS
     23 UNSUPPORTED
     17 XFAIL
      2 XPASS
make[1]: *** [Makefile:412: tests] Error 1
make[1]: Leaving directory '/sources/glibc-2.30'
make: *** [Makefile:9: check] Error 2

2.8.2。「6.21.GCC-9.2.0」の章

LFSマニュアル「6.21.GCC-9.2.0」では、この記事で6つの既知の障害と8つの障害について説明していますが、その後の検証で正しい検証結果が得られました[プログラムインタープリターの要求:/ lib64 / ld-linux- x86-64 .so.2]、LFSの説明やその他の情報によると、これらの障害は言語環境、時間の問題、CPU命令セットの問題などが原因である可能性があるため、この問題は当面調査されません。また、この章の所要時間は合計4時間ですので、しばらくお待ちください。テストレポートは次のとおりです。

(lfs chroot) root:/sources/gcc-9.2.0/build# ../contrib/test_summary
gawk: cmd. line:36: warning: regexp escape sequence `\=' is not a known regexp operator
cat <<'EOF' |
LAST_UPDATED: Obtained from SVN: tags/gcc_9_2_0_release revision 274275

Native configuration is x86_64-pc-linux-gnu

		=== g++ tests ===


Running target unix

		=== g++ Summary ===

# of expected passes		134787
# of expected failures		527
# of unsupported tests		5921
/sources/gcc-9.2.0/build/gcc/xg++  version 9.2.0 (GCC) 

		=== gcc tests ===


Running target unix
FAIL: gcc.target/i386/pr57193.c scan-assembler-times movdqa 2
FAIL: gcc.target/i386/pr90178.c scan-assembler-times xorl[\\\\t ]*\\\\%eax,[\\\\t ]*%eax 1

		=== gcc Summary ===

# of expected passes		139439
# of unexpected failures	2
# of expected failures		527
# of unsupported tests		2151
/sources/gcc-9.2.0/build/gcc/xgcc  version 9.2.0 (GCC) 

		=== libatomic tests ===


Running target unix

		=== libatomic Summary ===

# of expected passes		54
		=== libgomp tests ===


Running target unix

		=== libgomp Summary ===

# of expected passes		2316
# of expected failures		2
# of unsupported tests		210
		=== libitm tests ===


Running target unix

		=== libitm Summary ===

# of expected passes		42
# of expected failures		3
# of unsupported tests		1
		=== libstdc++ tests ===


Running target unix
FAIL: 22_locale/time_get/get_time/char/2.cc execution test
FAIL: 22_locale/time_get/get_time/char/wrapped_env.cc execution test
FAIL: 22_locale/time_get/get_time/char/wrapped_locale.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/2.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/wrapped_env.cc execution test
FAIL: 22_locale/time_get/get_time/wchar_t/wrapped_locale.cc execution test
FAIL: experimental/net/internet/resolver/ops/lookup.cc execution test
FAIL: experimental/net/internet/resolver/ops/reverse.cc execution test

		=== libstdc++ Summary ===

# of expected passes		12892
# of unexpected failures	8
# of expected failures		78
# of unsupported tests		380

Compiler version: 9.2.0 (GCC) 
Platform: x86_64-pc-linux-gnu
configure flags: --prefix=/usr --enable-languages=c,c++ --disable-multilib --disable-bootstrap --with-system-zlib
EOF
Mail -s "Results for 9.2.0 (GCC) testsuite on x86_64-pc-linux-gnu" [email protected] &&
mv /sources/gcc-9.2.0/build/./gcc/testsuite/g++/g++.sum /sources/gcc-9.2.0/build/./gcc/testsuite/g++/g++.sum.sent &&
mv /sources/gcc-9.2.0/build/./gcc/testsuite/gcc/gcc.sum /sources/gcc-9.2.0/build/./gcc/testsuite/gcc/gcc.sum.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libatomic/testsuite/libatomic.sum /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libatomic/testsuite/libatomic.sum.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.sum /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.sum.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libitm/testsuite/libitm.sum /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libitm/testsuite/libitm.sum.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.sum.sent &&
mv /sources/gcc-9.2.0/build/./gcc/testsuite/g++/g++.log /sources/gcc-9.2.0/build/./gcc/testsuite/g++/g++.log.sent &&
mv /sources/gcc-9.2.0/build/./gcc/testsuite/gcc/gcc.log /sources/gcc-9.2.0/build/./gcc/testsuite/gcc/gcc.log.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libatomic/testsuite/libatomic.log /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libatomic/testsuite/libatomic.log.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.log /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.log.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libitm/testsuite/libitm.log /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libitm/testsuite/libitm.log.sent &&
mv /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.log /sources/gcc-9.2.0/build/./x86_64-pc-linux-gnu/libstdc++-v3/testsuite/libstdc++.log.sent &&
true

検証結果は以下のとおりです。

(lfs chroot) root:/sources/gcc-9.2.0/build# echo 'int main(){}' > dummy.c
(lfs chroot) root:/sources/gcc-9.2.0/build# cc dummy.c -v -Wl,--verbose &> dummy.log
(lfs chroot) root:/sources/gcc-9.2.0/build# readelf -l a.out | grep ': /lib'
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

3.実際の動作環境の構築と注意事項

3.0。仮想マシンのオペレーティングシステムのインストール

  • OracleVitrualBoxをインストールします
  • ubuntu20.04-desktopのISOファイルをダウンロードします
  • VXBOXは、新しい仮想マシンubuntu20.04、メモリ設定8GB、CPU 4コア、最初のハードディスク10GB、2番目のハードディスク50GBを追加します
  • インストールする英語を選択します(後で表示される可能性のある言語に関するすべてのシステムエラー回避するため
  • 最小限のインストールを選択します(システムエラーを引き起こすために不要なソフトウェアを回避するようにしてください
  • システムを10Gハードディスク(/ dev / sda)にインストールします
  • ubuntuのインストールが完了しました
  • 使用可能なハードディスクを表示するためのfdisk-l(50GBのハードディスクは/ dev / sdbであり、現時点ではファイルシステムはありません)
  • fdisk / dev / sdbでパーティションを作成します(nを入力し、Enterキーを押してデフォルト値まで入力し、完了したらEnterキーを押して保存して終了します)
  • mkfs.ext4 / dev / sdb1フォーマットパーティション
  • / mnt / lfsディレクトリを作成します
  • / etc / fstabファイルを変更し、マウント情報を追加して、50Gハードディスク/ dev / sdb1を/ mnt / lfsにマウントします。
  • gcc、make、perl、およびその他の必要な依存ソフトウェアをインストールして、VXBOX拡張機能をインストールします
  • VXBOX拡張機能をインストールします(インストールする必要があります。仮想端末の使用時にさまざまな不明な状況が発生する可能性があります。この記事では、仮想マシンでコンパイルプロセスを直接操作して、再起動、ttyの切断、その他の干渉がないことを確認します。同時に、LFSマニュアルはホストの物理オープンにあり、VXBOXの拡張機能を使用して、物理ホストのコマンドを仮想マシンのターミナルに貼り付けます
  • 物理マシンのコントロールパネル->ハードウェアとサウンド->電源オプション->プラン設定の変更->電源をオンにする->ディスプレイをオフにしない、スリープしない->詳細な電源設定を変更する->電源ボタンと蓋->閉じるふた操作->電源オン->何もしない-> OK->変更を保存
  • ubuntu虚拟机->設定->プライバシー->画面ロック->空白の画面遅延->決して
  • コンパイルを一時的に中断する必要がある場合は、現在のソフトウェアパッケージのコンパイルまたはインストール手順が完了するのを待って、VXboxのミラーリング機能を使用し、最初に現在のミラーをバックアップしてから、ubuntu仮想の右上隅にある閉じるボタンをクリックしてください。再起動によって引き起こされる可能性のある障害のリスクを回避するために、ポップアップ確認ページでサスペンド機能が選択されます。

3.0。仮想マシンのバックアップ

次の章が完了したら、vxboxのスナップショット機能を使用して現在のコンパイル環境をバックアップすることをお勧めします。

  • 「2.2。ホストシステム要件」の章の要件に合格した後
  • 「5.10.GCC-9.2.0-セカンドパス」の章が完了した後
  • 「5.36。所有者の変更」の章が完了した後
  • 「6.21.GCC-9.2.0」の章が完了した後
  • 「6.77.Eudev-3.2.8」の章が完了した後
  • 「7.9./etc/shellsファイルの作成」の章が完了したら、ここにバックアップする必要があります。これは、後続のgrub構成が一度に正しく構成されない可能性があるためです。

4.LFS運用プロセス記録

LFSマニュアルでは、CTRL + C
をubuntu環境に切り替え、CTRL + Vを押す
と、結果は次のようになります。
ここに画像の説明を挿入
ここに画像の説明を挿入

5.追記

いくつかの小さな問題があるかもしれません。たとえば、仮想マシンにデュアルネットワークカードがあります。クロスコンパイル中にこれを忘れたので、後で調整する必要があります。
ネチズンが操作時にLFSの元の説明に疑問がある場合は、メッセージまたはプライベートメッセージを残して、一緒に勉強することができます。
さらに、このLFSカスタムリリースのビルドプロセス全体は、参照用として約12時間です。

おすすめ

転載: blog.csdn.net/crazy_rays/article/details/112647592