On Tue, 11 May 2010, pluknet wrote:

Hi,

That's sort of "for the record".
I faced with issue where I wasn't able to boot a box w/ kernel built
with subj scheme.

On build box with 7.3-amd64 installed:
1. prepare world/kernel in an existing chrooted 6.4-S environment =>
doesn't work (see below)
2. prepare world/kernel just cd'ing to 6.4-S src & change
MAKEOBJDIRPREFIX => PROFIT!
Both built with equal config and source.

Next, what does not work in 1.
System stops after printing "point_to_point" in /etc/rc.d/initrandom:
              # XXX temporary until we can improve the entropy
               # harvesting rate.
               # Entropy below is not great, but better than nothing.
               # This unblocks the generator at startup
               ( ps -fauxww; sysctl -a; date; df -ib; dmesg; ps -fauxww ) \
                   | dd of=/dev/random bs=8k 2>/dev/null

Here sysctl -a queries dev.cpu.0.freq -> cpufreq_curr_sysctl@/kern/kern_cpu.c
and locks up. As I understand, CPU doesn't return from sched_switch().

<118> ethernet
<118> point_to_point
KDB: enter: Line break on console

db> ps
 pid  ppid  pgrp   uid   state   wmesg     wchan    cmd
  68    66    51     0  R+      CPU 255             sysctl
  66    64    51     0  S+      wait     0xc82e6648 sh
  65    59    51     0  S+      piperd   0xc853f4c8 dd
  64    59    51     0  S+      wait     0xc82e6218 sh
  59    51    51     0  S+      wait     0xc82e6a78 sh
  51     1    51     0  Ss+     wait     0xc852ec90 sh

db> bt 68
Tracing pid 68 tid 100076 td 0xc8551820
sched_switch(c8551820,0,1) at sched_switch+0x143
mi_switch(1,0,c8551980,0,c0adf560,...) at mi_switch+0x1ba
sched_bind(c8551820,0) at sched_bind+0x52
cpu_est_clockrate(0,eebeead4,c84f3400,3,c84f3400,...) at cpu_est_clockrate+0xc1
cf_levels_method(c8214900,c85da000,eebeeb48) at cf_levels_method+0x303
cf_get_method(c8214900,c85cb000) at cf_get_method+0x12b
cpufreq_curr_sysctl(c8218cc0,c81ea000,0,eebeec04,c8218cc0,...) at cpufreq_curr_s
sysctl_root(0,eebeec74,4,eebeec04) at sysctl_root+0x107
userland_sysctl(c8551820,eebeec74,4,0,bfbfdbdc,0,0,0,eebeec70,0) at userland_sys
__sysctl(c8551820,eebeed04) at __sysctl+0x93
syscall(3b,3b,3b,4,bfbfdbdc,...) at syscall+0x2bf
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x2812650b, esp = 0xbfbfdb4c,

I was able to cross-build and install a 32 bit 8.0 kernel using an amd64 system as the build machine. I was never able to get installworld to work. I did this by NFS mounting the target system's fs on the build system.

I mixed the information in the following link
http://bsdimp.blogspot.com/2006/09/cross-building-freebsd.html with advice from others to get the kernel installed. I do not have access to my notes at the moment. If you would like details on what I tried let me know. It is unclear if cross-building is officially supported.
_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"

Reply via email to