dmz skrev:Konservburk skrev:
Men för att vara mer seriös... hur länge räknar bootcart? Från init startar, tills login-promten är framme?
Njae, det tror jag inte. Bootchart räknar från init tills alla moduler, processer och program som är definerat i startupscripten är "klara". Det är så jag har föreställt mig det hela och det är så det ser ut rent grafiskt på min bootchart iallafall. Dessutom, om man ändrar default runlevel till t.ex 5 så har du ju inte din 'vanliga' login-prompt.
Jag frågar eftersom jag inte vet hur bootchart fungerar och därför att jag inte kan komma på något enkelt och portablet sätt för bootchart att avgöra när "init är klar", just med tanke på att init inte blir klar förrän datorn stängs av.
När det gäller kärnmoduler så är det inte ens säkert att det finns några. Precis alla skulle kunna vara inbyggda i kärnan... och då blir ju det nya fastboot genast betydligt viktigare än om du har det mesta som moduler. Hur som helst så missar bootchart helt den biten.
Vad gör du och/eller bootchart för skillnad på processer och program? Enligt mig är det samma sak... eller i alla fall nästan. Processer är program som är igång. Även om vi bortser från sådana petitesser så är det fortfarande en gåta för mig hur bootchart kan veta något alls om mina startupscript? Hur vet den vilka script som kommer att bli klara och vilka som kommer att ligga kvar tills datorn stängs av?
Hur runlevels fungerar beror helt på vilken version av init man använder. På min filserver använder jag en init som inte ens har några runlevels alls. Betyder det att bootchart inte kommer att fungera där?
Jag förväntar mig inte att du ska svara på mina frågor. De är egentligen retoriska och mer ett sätt för mig att visa att jag inte förstår hur bootchart fungerar. Egentligen spelar det ingen roll hur länge den räknar. Man kan ju dra ett streck i grafen på egen hand där man själv anser att bootandet är klart. Men jag är nyfiken och vill veta när bootchart anser att den är klar.
README säger följande:
Once the boot process completes (denoted by the existence of specific processes)
Men vilka processer väntar den på?
README.logger ger lite mer info:
It will then run several logging functions in parallel and wait for the boot process to end (i.e. one of the predefined processes for runlevels 2, 3 or 5 is running)
Kräver den att det finns runlevels? Det är i så fall helkasst om du frågar mig.
Dokumentationen på hemsidan är något bättre:
The logger will try to detect the end of the boot process by looking for specific processes. For example, when in runlevel 5 (multi-user graphical mode), it will look for gdmgreeter, kdm_greet, etc. As soon as one of these processes is found running, the logger will stop collecting data, package the log files and store them to /var/log/bootchart.tgz.
Så den väntar i vanliga fall helt enkelt på gdmgreeter eller kdm_greet eller något liknande (frågan är vad?). Ingenting nämns om hur den gör om man använder runlevel 3 eller inte har någon runlevel alls.
Config-filen tar upp ett par andra processer den väntar på, men det saknas fortfarande en en komplett lista:
# Whether to automatically stop logging as the boot process completes.
# The logger will look for known processes that indicate bootup completion
# at a specific runlevel (e.g. gdm-binary, mingetty, etc.).
AUTO_STOP_LOGGER="yes"
Då återstår att vända sig till källkoden...
Tydligen letar den efter
initdefault i
/etc/inittab. Om den är 2 eller 3 så väntar den på någon av
mingetty,
agetty,
rungetty,
getty eller
fgetty. I annat fall väntar den på någon av
gdmgreeter,
gdm-binary,
kdm_greet eller
kdm.
Precis som jag misstänkte så räcker det med andra ord att dra upp login-prompten direkt (och starta resten efteråt) för att bootchart ska tro att bootandet gick jättefort.
