6

非常に単純なPCでは、実行中のプロセスの数を最小限に抑えるために、Ubuntu 12.04 / sbin/initを最も単純なbashスクリプトに置き換えたいと思います。明らかに、X、USB、新しいハードウェアの検出、アップグレード、apt、「なし」はありません。DHCPベースのWi-Fi IPアドレス(ssid、パスフレーズはすでに/etcに保存されています)を備えた動作するコンソールが必要です。 / network / interfaces)。それで全部です。現在、/ sbin/initの代わりにこれを試しました。

#!/bin/sh
mount -o rw,remount /
mount -t proc none /proc
udevd --daemon
mkdir /run/network
ifup -a &
while [ 1 ]; do
    /sbin/getty -8 115200 tty1 vt100
done

IPアドレスを取得しているので機能しており、ログインできますが、次のようになります。

  • A)シャットダウンの実行中に、「シャットダウン:システムをシャットダウンできません:」というメッセージが表示されます。
  • B)control-cがコンソールで機能していない
  • C)ログイン後、「bash:ターミナルプロセスグループを設定できません(-1):デバイスに不適切なioctl」が表示されます。
  • D)ログイン後、「bash:このシェルにはジョブ制御がありません」というメッセージが表示されます。

また、すべてのユーザースペースプロセスに「?」があることに気づきました。psavxを実行しているときのtty列。これらの問題をどのように修正できますか?PCで何が開始されるかを実際に制御し、最小限に抑えるために、upstartを使用したくありません。

4

2 に答える 2

1

私はBusyboxinitを使用することになりました。素晴らしい小さな初期化...

于 2013-03-08T22:54:44.717 に答える
1

あなたは活用することができrunlevels、あなたの質問に基づいてあなたrunlevel 3が使いたいものです。

開始したくないサービスがある場合は、そのランレベルでもそれらをオフにすることができます。

を起動するにrunlevel 3は、ブートローダーのカーネルにboot引数を追加するだけです。

<EXISTING_BOOT_CMD> 3

ディストリビューションがの代わりにを使用する場合systemdsysvinitそれらは代わりにと呼ばれtargetsます。runlevel 3inに相当するものは、systemd通常、次のように名前が付けられます。multi-user.target

この場合に渡す必要があるカーネルブート引数は次のとおりです。systemd.unit=multi-user.target

<EXISTING_BOOT_CMD> systemd.unit=multi-user.target

別の方法として、ブートローダーに触れたくない場合:

systemctl enable multi-user.target
于 2013-03-08T23:26:18.423 に答える