CLFS(1.1.0-Sparc64-Pure64)-準備(1)
2010年11月 3日(水) 20:28 JST
閲覧数 3,008
今回はx86環境でクロスコンパイル環境を構築し、Sparc64用のLFSを作成する。
ディスクを差し替える気は無いので、最後はtarで固めて実機に持っていくとします。
◆ファイルシステムの準備
CLFSの場合、CLFSビルド時に使ったHDDを利用しない場合もあるので、パーティションを切る意味が無い場合もありますが、今回はホストOSインストール先がVMwareESXiでシン・プロビジョニングでディスクを確保している為、シック・プロビジョニングのディスクを用意し、パーティション作成/フォーマットを実施しています。
◆ファイルシステムのマウント
◆ソースパッケージの取得と展開
ソースパッケージ/パッチ一式を取得する。
wget.lstは事前に準備しておく、CLFSのドキュメントに記載のあるものをすべて取得すれば、どんな方法でも良いが、面倒なので僕はwgetで一気に取得しました。
◆toolsとcross-toolsディレクトリの作成
一時的に使用する開発環境を配置するためのディレクトリを作成します。
toolsにはsparc用の基本的な環境が構築され、cross-toolsにはtoolsを構築する為のクロスコンパイル環境が構築されます。
◆作業用ユーザの追加
作業用ユーザclfsを追加する。toolsを作成する間はこのユーザで作業する。
◆環境の設定
clfsユーザの環境を設定する。
ディスクを差し替える気は無いので、最後はtarで固めて実機に持っていくとします。
◆ファイルシステムの準備
CLFSの場合、CLFSビルド時に使ったHDDを利用しない場合もあるので、パーティションを切る意味が無い場合もありますが、今回はホストOSインストール先がVMwareESXiでシン・プロビジョニングでディスクを確保している為、シック・プロビジョニングのディスクを用意し、パーティション作成/フォーマットを実施しています。
[root@clfs ~]# fdisk /dev/sdb [root@clfs ~]# mke2fs /dev/sdb1 [root@clfs ~]# debugfs -R feature /dev/sdb1 debugfs 1.41.4 (27-Jan-2009) Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
◆ファイルシステムのマウント
[root@clfs ~]# mkdir -p /mnt/clfs [root@clfs ~]# export CLFS=/mnt/clfs [root@clfs ~]# mkdir -pv ${CLFS} [root@clfs ~]# mount -v /dev/sdb1 $CLFS mount: /dev/sdb1 へのファイルシステムタイプの指定がありません タイプ ext2 を試してみます /dev/sdb1 on /mnt/clfs type ext2 (rw)
◆ソースパッケージの取得と展開
ソースパッケージ/パッチ一式を取得する。
wget.lstは事前に準備しておく、CLFSのドキュメントに記載のあるものをすべて取得すれば、どんな方法でも良いが、面倒なので僕はwgetで一気に取得しました。
[root@clfs ~]# mkdir -v ${CLFS}/sources mkdir: ディレクトリ `/mnt/clfs/sources' を作成しました [root@clfs ~]# chmod -v a+wt ${CLFS}/sources `/mnt/clfs/sources' のモードを 1777 (rwxrwxrwt) に変更しました [root@clfs ~]# cd /mnt/clfs/sources [root@clfs sources]# wget -i wget.lst [root@clfs sources]#
◆toolsとcross-toolsディレクトリの作成
一時的に使用する開発環境を配置するためのディレクトリを作成します。
toolsにはsparc用の基本的な環境が構築され、cross-toolsにはtoolsを構築する為のクロスコンパイル環境が構築されます。
[root@clfs sources]# install -dv ${CLFS} [root@clfs sources]# install -dv ${CLFS}/tools install: ディレクトリ `/mnt/clfs/tools' を作成中 [root@clfs sources]# ln -sv ${CLFS}/tools / `/tools' -> `/mnt/clfs/tools' [root@clfs sources]# install -dv ${CLFS}/cross-tools install: ディレクトリ `/mnt/clfs/cross-tools' を作成中 [root@clfs sources]# ln -sv ${CLFS}/cross-tools / `/cross-tools' -> `/mnt/clfs/cross-tools'
◆作業用ユーザの追加
作業用ユーザclfsを追加する。toolsを作成する間はこのユーザで作業する。
[root@clfs sources]# groupadd clfs [root@clfs sources]# useradd -s /bin/bash -g clfs -d /home/clfs clfs [root@clfs sources]# mkdir -pv /home/clfs [root@clfs sources]# chown -v clfs:clfs /home/clfs `/home/clfs' の所有者は clfs:clfs のまま保留されました [root@clfs sources]# passwd clfs Changing password for user clfs. New UNIX password: BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@clfs sources]# chown -v clfs ${CLFS}/tools `/mnt/clfs/tools' の所有者を clfs に変更しました [root@clfs sources]# chown -v clfs ${CLFS}/cross-tools `/mnt/clfs/cross-tools' の所有者を clfs に変更しました [root@clfs sources]# chown -v clfs ${CLFS}/sources `/mnt/clfs/sources' の所有者を clfs に変更しました
◆環境の設定
clfsユーザの環境を設定する。
[root@clfs sources]# su - clfs [clfs@clfs ~]$ cat > ~/.bash_profile << "EOF" > exec env -i HOME=${HOME} TERM=${TERM} PS1='\u:\w\$ ' /bin/bash > EOF [clfs@clfs ~]$ cat > ~/.bashrc << "EOF" > set +h > umask 022 > CLFS=/mnt/clfs > LC_ALL=POSIX > PATH=/cross-tools/bin:/bin:/usr/bin > export CLFS LC_ALL PATH > EOF [clfs@clfs ~]$ source ~/.bash_profile clfs:~$ unset CFLAGS clfs:~$ unset CXXFLAGS clfs:~$ echo unset CFLAGS >> ~/.bashrc clfs:~$ echo unset CXXFLAGS >> ~/.bashrc clfs:~$ export CLFS_HOST="$(echo $MACHTYPE | \ > sed "s/$(echo $MACHTYPE | cut -d- -f2)/cross/")" clfs:~$ export CLFS_TARGET="sparc64-unknown-linux-gnu" clfs:~$ echo export CLFS_HOST=\""${CLFS_HOST}\"" >> ~/.bashrc clfs:~$ echo export CLFS_TARGET=\""${CLFS_TARGET}\"" >> ~/.bashrc clfs:~$ export BUILD64="-m64 -mcpu=ultrasparc -mtune=ultrasparc" clfs:~$ export GCCTARGET="-mcpu=ultrasparc -mtune=ultrasparc" clfs:~$ echo export BUILD64=\""${BUILD64}\"" >> ~/.bashrc clfs:~$ echo export GCCTARGET=\""${GCCTARGET}\"" >> ~/.bashrc clfs:~$