Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 01 Jun 2014 11:51:08 -0700
From:      Alfred Perlstein <bright@mu.org>
To:        Jason Hellenthal <jhellenthal@dataix.net>
Cc:        FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Upgrading an i386 machine from amd64.
Message-ID:  <538B761C.7060300@mu.org>
In-Reply-To: <B007D0DE-EFC1-49D8-9E6A-F4A24B66DB8C@dataix.net>
References:  <538B61EC.9000403@mu.org> <5B82C892-12A4-4251-B3D2-A6D3EAAF90F9@dataix.net> <538B6FCC.9090301@mu.org> <B007D0DE-EFC1-49D8-9E6A-F4A24B66DB8C@dataix.net>

next in thread | previous in thread | raw e-mail | index | archive | help

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@mu.org 
> <mailto:bright@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@mu.org 
>>> <mailto:bright@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@freebsd.org <mailto:freebsd-hackers@freebsd.org> 
>>>> mailing list
>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>>> To unsubscribe, send any mail to 
>>>> "freebsd-hackers-unsubscribe@freebsd.org 
>>>> <mailto:freebsd-hackers-unsubscribe@freebsd.org>"
>>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?538B761C.7060300>