Upgrading an i386 machine from amd64.
Alfred Perlstein
bright at mu.org
Sun Jun 1 18:50:47 UTC 2014
On 6/1/14, 11:42 AM, Jason Hellenthal wrote:
> That would be nice. Could've swore there was something similar to that
> but memory escapes me as I haven't done backwards cross compiles in
> awhile.
>
> Curious have you done a svn status on your src tree in a while to see
> if there are any stale depends laying around that may affect the
> compilation ?
I use git. :) But the build tree was completely clean.
>
> Also ALWAYS_CHECK_MAKE=YES defined in make.conf ?
No, what does that do?
I think once I get this sorted I will make a blog post on it, right now
that blog post is basically:
export TARGET=i386
make buildworld -j36
make buildkernel -j36
mkdir -p /mnt/target.local /mnt/target
make installkernel installworld DESTDIR=/mnt/target.local
mount i386target:/ /mnt/target
rsync -avvH /mnt/target.local /mnt/target
I thought though there was a way to get this to work, obviously there is
a bug here that we lose "chflags" bits on install. I wonder if there's
a way to restore or preserve them?
-Alfred
>
> --
> Jason Hellenthal
> Voice: 95.30.17.6/616
> JJH48-ARIN
>
> On Jun 1, 2014, at 14:24, Alfred Perlstein <bright at mu.org
> <mailto:bright at mu.org>> wrote:
>
>>
>> On 6/1/14, 10:34 AM, Jason Hellenthal wrote:
>>> What if you just NFS mount the obj directory from the 386 to the
>>> amd64 build world for 386 the mount the src on the i386 and just
>>> rebuild strip and friends ?
>>>
>>> A little more of a hack i know but would get the job done.
>>
>> I tried that using install(1), then it broke with strip(1), then I
>> basically was like, "this is a rabbit hole, forget it" and used rsync.
>>
>> I was really looking for a "buildinstalltools" or something target
>> (as you suggest), but I couldn't find one.
>>
>> Is there an "buildinstalltools" target?
>>
>> -Alfred
>>>
>>> --
>>> Jason Hellenthal
>>> Voice: 95.30.17.6/616
>>> JJH48-ARIN
>>>
>>> On Jun 1, 2014, at 13:25, Alfred Perlstein <bright at mu.org
>>> <mailto:bright at mu.org>> wrote:
>>>
>>>> Hello hackers.
>>>>
>>>> Is there a way to build on amd64 and then mount over nfs the build
>>>> and src and installworld from an i386 machine?
>>>>
>>>> The problem seems to be that "install" and "strip" and etc are
>>>> built as amd64 binaries so that the installworld will fail.
>>>>
>>>> Below I have a solution I was going to do a blog post about, but
>>>> then realized maybe I'd be leading people down the wrong path.
>>>>
>>>> Can someone verify that I need to use rsync as opposed to
>>>> installworld for this to work?
>>>>
>>>> I have an old i386 based soekris geode box called "soekris":
>>>> CPU: Geode(TM) Integrated Processor by AMD PCS (499.91-MHz
>>>> 586-class CPU)
>>>> Origin = "AuthenticAMD" Id = 0x5a2 Family = 0x5 Model = 0xa
>>>> Stepping = 2
>>>> Features=0x88a93d<FPU,DE,PSE,TSC,MSR,CX8,SEP,PGE,CMOV,CLFLUSH,MMX>
>>>> AMD Features=0xc0400000<MMX+,3DNow!+,3DNow!>
>>>> real memory = 536870912 (512 MB)
>>>> avail memory = 502792192 (479 MB)
>>>>
>>>> Building on this machine is difficult because of the speed and lack
>>>> of space, so I decided to use my more powerful amd64 machine "spigot":
>>>> CPU: Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz (3392.37-MHz K8-class CPU)
>>>> Origin="GenuineIntel" Id=0x206a7 Family=0x6 Model=0x2a Stepping=7
>>>> ...
>>>> real memory = 17179869184 (16384 MB)
>>>> avail memory = 16585228288 (15816 MB)
>>>> FreeBSD/SMP: 1 package(s) x 4 core(s) x 2 SMT threads
>>>>
>>>> So I've built an 10-stable on the amd64 machine using:
>>>>
>>>> spigot % TARGET=i386
>>>> spigot % make -j24 buildworld
>>>> spigot % make -j24 buildkernel
>>>>
>>>> Works great, I get an i386 object tree under /usr/obj/i386.386/...
>>>>
>>>> Then I go to install this over NFS and this is where I get stuck.
>>>>
>>>> If I mount the i386 machine like so and install I get errors on
>>>> libc and other libraries:
>>>>
>>>> spigot % mount soekris:/ /usr/soekris
>>>> spigot % cd /usr/src && make installworld
>>>> .....
>>>> ===> lib/libcrypt (install)
>>>> install -C -o root -g wheel -m 444 libcrypt.a /usr/soekris/usr/lib
>>>> install -C -o root -g wheel -m 444 libcrypt_p.a /usr/soekris/usr/lib
>>>> install -s -o root -g wheel -m 444 -fschg libcrypt.so.5
>>>> /usr/soekris/lib
>>>> install: /usr/soekris/lib/libcrypt.so.5: Input/output error
>>>> *** Error code 71
>>>>
>>>> Stop.
>>>> make[5]: stopped in /usr/trees/freebsd.git/lib/libcrypt
>>>> *** Error code 1
>>>>
>>>> OK, so that doesn't work...
>>>>
>>>> Maybe if I mount the amd64 build host under the soekris box, no
>>>> that breaks because the bootstrap tools (install(1), strip(1)) are
>>>> built for amd64 so the install fails.
>>>>
>>>> So what I finally did on the amd64 box was:
>>>>
>>>> spigot % mkdir /use/soekris.local
>>>> spigot % make installworld DESTDIR=/usr/soekris.local
>>>> spigot % mount soekris:/ /usr/soekris
>>>> spigot % rsync -avvH /usr/soekris.local/ /usr/soekris/
>>>>
>>>> That hung at the end forever at the end:
>>>> var/unbound/
>>>> var/yp/
>>>> var/yp/Makefile
>>>> var/yp/Makefile.dist
>>>> ....
>>>>
>>>> but after giving it an hour I just hit ^C and rebooted and
>>>> everything was more or less fine.
>>>>
>>>> Is there a better way to do this? Was the "installworld to NFS"
>>>> breaking because of NFS bugs? Should I get those to Rick? I'm
>>>> just confused.
>>>>
>>>> -Alfred
>>>> _______________________________________________
>>>> freebsd-hackers at freebsd.org <mailto:freebsd-hackers at freebsd.org>
>>>> mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>>> To unsubscribe, send any mail to
>>>> "freebsd-hackers-unsubscribe at freebsd.org
>>>> <mailto:freebsd-hackers-unsubscribe at freebsd.org>"
>>
More information about the freebsd-hackers
mailing list