Upgrade from 32-bit to AMD-64?

Karl Denninger karl at denninger.net
Thu Feb 12 18:32:35 PST 2009


Xin LI wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Karl Denninger wrote:
>   
>> Xin LI wrote:
>>     
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> Hi, Karl,
>>>
>>> Karl Denninger wrote:
>>>  
>>>       
>>>> I have a machine that can run either (proved, I can boot the AMD-64
>>>> release disk)
>>>>
>>>> Can I SOURCE UPGRADE from one to the other?  That is, is it possible to
>>>> do a "make buildworld", "make buildkernel" and then "make installkernel"
>>>> and wind up with AMD64 instead of the 32-bit code?
>>>>
>>>> Or must I reinstall?
>>>>
>>>> It APPEARS I can run most 32-bit code on a 64-bit system.  Not all
>>>> works, but most does.
>>>>     
>>>>         
>>> This is sort of "doable" but "highly recommend you not to do that"
>>> thing.  The simplest way to do 32-bit to 64-bit upgrade would be to
>>> backup your data, install from scratch, then restore data; mixing 32-bit
>>> and 64-bit stuff together, especially without 32-bit stuff moved to the
>>> right place, is among the most terrible mess you wanted to avoid.
>>>
>>> Online "upgrade" can be done if you have your 64-bit world/kernel built
>>> and installed into a separate directory (i.e. make world kernel
>>> DESTDIR=/path/to/a/temp/place), then drop into single user mode, then
>>> tar then pipe to another tar to extract the whole thing to /, but this
>>> is really a "foot, gun, shoot" thing.
>>>
>>> Cheers,
>>> - --
>>> Xin LI <delphij at delphij.net>    http://www.delphij.net/
>>>
>>>   
>>>       
>> Hmmmm.... I was thinking something like this (I have the cvsup tree on
>> the machine)
>>
>> 1. Compile into /usr/robj for amd64 (if I can figure out how to get make
>> to do it - the obvious, MACHINE_ARCH=amd64, does not work - it barfs.)
>>
>> 2. Intentionally break the mirror (just in case) from the controller;
>> I've now got a clean bootable drive if something goes wrong.
>>
>> 3. "make installkernel" (install new amd64 kernel)
>>
>> 4. Reboot
>>
>> Now, the question - will the 32-bit executables RUN under the 64-bit
>> kernel under single-user so I can "make installworld"?
>>     
>
> Yes as long as you compiled COMPAT_FREEBSD32 you can run 32-bit
> executables under a 64-bit kernel, but, you need to be careful since the
> dynamic linker would have different name.
>   
>> Or do I get screwed instantly when I reboot?
>>     
>
> There is a reason we don't recommend doing that :)
>
> Cheers,
> - --
> Xin LI <delphij at delphij.net>	http://www.delphij.net/
>   
ROFL!  Ok, I get it.  I'm asking to get hosed as soon as I reboot.....

I CAN reload the machine but it would take the machine out of service 
for MUCH LESS TIME if I could do it this way; a full reload is going to 
take a couple of hours, where I can do it that way in ~5-10 minutes of 
downtime.

Of course if its going to blow up.....

I guess I need to schedule the 2-3 hours of downtime..... the reason for 
this, by the way, is that I have a dbms app on there that is getting too 
RAM hungry for its own good (its a Quadcore CPU) and I'm up against the 
RAM limit for 32-bit code.  The board will support more but 32-bit code 
won't; ergo, the only way to get beyond this is to go to 64-bit.

-- 
--
Karl Denninger
karl at denninger.net




More information about the freebsd-stable mailing list