buildroot: シェルの選択とユーザの作成

再度buildrootの設定について

シェルの選択をしてみたかったので,下記で設定.

 

シェルの選択ができるらしい項目があったが,先にBusyBoxの設定をしないとならない.

menuconfigのTarget packeagesから
[ * ]Show Packages that are also provided by busybox

にチェックを入れる.

 

f:id:l-expanse:20220207120349p:plain

 

そうすると,System configuration-> /bin/shの項目からシェルが選べるようになる.

 

f:id:l-expanse:20220207120513p:plain

 

次にユーザの作成について.

 

System configurationのところのPath to the users tableのところに,ユーザの情報を書き込むファイルを指定する.ここでは,下記のように設定し,tableというファイルを作ることとする.

 

f:id:l-expanse:20220207120717p:plain

 

/(buildroot-v86の場所)/board/v86/tableのファイルの中身はたとえば

f:id:l-expanse:20220207121034p:plain

とする.塗りつぶしているところはパスワード.ここでは/bin/bashを選択.これで起動するとuserが作成されていてログインができる.

 

追加:
起動してuserでログインしたときに,alias が使いたかったが,うまく設定ができなかった./(buildroot-v86の場所)/board/v86/rootfs_overlay/etc/init.dの下に用意したスクリプトに下記を追加で記述した.

cat > /home/user/.profile <<EOF

alias XXXXXXXXXX

EOF

これでログインしたときに,aliasの設定が使えるようになる.

 

 

 

 

 

 

 

CentOS7 kickstartファイルからのiso作成(最小のパッケージ構成や起動用スクリプトの作成)

CentOS7 の32bit版のブータブルCDのイメージファイルを作りたかったので,そのときのメモです.(試したものはkernelplusのものです)
●稼働中のシステムからkickstartファイルを作成するツールのインストール
yum install system-config-kickstart 
コマンド例
# system-config-kickstart --generate ks.cfg
作成されたks.cfgの中身を見ると,ルートのパスワードが暗号化されていたり,後からインストールしたツール(パッケージ)も入っている.(稼働中のシステムをもとにkickstartのファイルができている)

●ks.cfgの書き換え
レポジトリを追加が必要

f:id:l-expanse:20220206103915p:plain

 

kickstart内に記述する最小限のパッケージ
何度か試して,下記が最小限の構成?
firewalldを外すと,firewallを止められない?といったような?エラーが出てしまうので入れている.

%packages
kernel
bash
passwd
firewalld
%end


kickstart内に記述する起動スクリプトの例(rc.localの作成例)
色々と試して下記でできることを確認.別の記事で書いたkernelplusを使っていて,
9pファイルシステムに対応させたいのでその記述をしている.また「user」も作っている.(コマンドには特に「;」は使う必要は無いのかも..)

最後にファイル属性の変更もする.

%post

cat > /etc/rc.d/rc.local << 'EOF_livesysconf'
#!/bin/bash

( /bin/mount -t 9p -o trans=virtio host9p /mnt  ; lsmod | grep 9p ; df )  &
(/sbin/useradd user ; /bin/passwd -d user  ) &

exit 0

EOF_livesysconf

chmod u+x /etc/rc.d/rc.local

%end

 

●ライブCD作成ツールのインストール

yum install livecd-tools
次のコマンドを実行

f:id:l-expanse:20220206104354p:plain

 

自分の場合,なぜか gpg-publickeyでエラーする.一旦「#」でコメントアウトした.

 

●isoファイルイメージが作成される.

 

インストールするパッケージの選択方法が分かり,起動スクリプトを作る方法もわかり,自在に起動イメージを作る方法は分かりました.自分で使いたくて作成したisoイメージは,ツールを削っても400MBでした(buildrootはカスタマイズして10MBにできました)

 


下記のサイトも参考にしました.

 

CentOS6ベースでカスタムLiveCDを作る – OSAKANA TAROのメモ帳

 

 

CentOS7の32bit版のkernelplusインストール

CentOS7の32bit版のkernelplusを試したかったので,そのときのメモです.

 

元になるcentos7 32ビット版を,最小構成でインストール.isoはここ

http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos-altarch/7.9.2009/isos/i386/

 

www.dvlv.co.uk

上記にkernelplusのインストール方法(sudo yum --enablerepo centosplus install kernelplus)があるが,32bit版のrpmファイルは探しても見当たらない(どのサーバにもない?)

下記に,

http://ftp.jaist.ac.jp/pub/Linux/CentOS-vault/7.9.2009/centosplus/Source/SPackages/

 

f:id:l-expanse:20220206102932p:plain

 

kernelplus のrpmのソースを見つけることができたので,それをコンパイルすることにする.
コンパイルではファイル容量が多く必要なので注意する(途中容量オーバーになりました・・).
コンパイル時にエラーしたので,Makefile をみるとgit関係のコマンドがない?ことが原因のようでした.git関係のツールもインストールして解決.
コンパイル後に,
yum install rpmbuild
を実行.足りないファイル(依存関係)がたくさん出てきたので,それらも順次インストールして,依存関係をつぶしていく.依存関係で,perl関連でもインストールしないとならないものが出てくるが,
# yum install perl-ExtUtils-Embed
で解決.
その後,インストール

f:id:l-expanse:20220206103606p:plain

uname -r を実行するとkernelplusのものになっている.


 

 

 

 

 

buildrootのカスタマイズの続き

buildrootのイメージはできあがりましたが,いくつか不具合があったので設定をしました.そのメモです.
不具合は
・キー入力の不具合(日本語キーボードの記号が対応しない,パイプとバックスラッシュの文字が打てない)
「crng random init done」のメッセージが表示される

 

キーについては,
再度Docker内のmake menuconfigを実行する.メニューの中に

Target packages
->Hardware handling
  [ ]kbd

 

f:id:l-expanse:20220206003532p:plain

[kbd]にチェックを入れる.

 

起動用のスクリプト内に
loadkeys jp106
を書けば日本語キーボードの記号に対応する.
(makeを実行,イメージを作成することも)

ただ,それでもパイプの記号「|」とバックスラッシュ「\」に対応するキーがありませんでした.特に「|」は頻繁に使うので不便.いろいろと調べてみたところ,

f:id:l-expanse:20220206010432p:plain

で一覧をみると,

f:id:l-expanse:20220206004810p:plain

となっていました(自分のPCでは,keycode 124がどこかわからないままですが..).今回は,起動用スクリプト内で
loadkeys jp106
を実行したあと,
loadkeys XXX.map
を実行することとした.XXX.mapファイル内は

f:id:l-expanse:20220206005015p:plain

と書いた(後日追記:keycode 43は"]"と"}"の文字が既に割り当てられていたため,後日さらに別のキーコード(f10など)に割り当てることになりました).これで無事に「|」と「\」が表示できるようになった.
なお,割り当てたいキーのkeycodeを調べるために,下記のshowkeyを用いました.実行してキーを押すと,そのkeycodeが表示されます.

f:id:l-expanse:20220206005949p:plain


次に,「crng random init done」への対応ですが,menuconfig内のMiscellaneousにhavegedの選択があって,それをインストールすることで解決(後日追記:別のメニューオプションか設定を直書きすることでもできそう(別記事参照)).

f:id:l-expanse:20220206005328p:plain


havegedについては,下記を参考にしました.

pipiron3.blogspot.com