Date: Sun, 1 Jun 2014 15:23:37 -0400 From: Jason Hellenthal <jhellenthal@dataix.net> To: Alfred Perlstein <bright@mu.org> Cc: "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org> Subject: Re: Upgrading an i386 machine from amd64. Message-ID: <CAO2cuEM%2BNeZLT_xLLQ%2BhTsyy7-Eij2dtFRGi1x-TE8SK1kAF7A@mail.gmail.com> In-Reply-To: <538B7937.2030104@mu.org> References: <538B61EC.9000403@mu.org> <5B82C892-12A4-4251-B3D2-A6D3EAAF90F9@dataix.net> <538B6FCC.9090301@mu.org> <B007D0DE-EFC1-49D8-9E6A-F4A24B66DB8C@dataix.net> <538B761C.7060300@mu.org> <50E51CBE-7F7B-4093-86A5-320ACE81072E@dataix.net> <538B7937.2030104@mu.org>
next in thread | previous in thread | raw e-mail | index | archive | help
What about doing an install to DESTDIR on the amd64 machine then using either cpio(1) or if it was on its own device whether it be a mdconfig(8)'d file and then using dump(8) to just create a backup and restore file of the whole filesystem... truncate -s 4g /usr/mdroot mdconfig -v -f /usr/mdroot newfs -U -O2 /dev/md0 mount /dev/md0 /mnt/md0 make installkernel DESTDIR=/mnt/md0 make installworld DESTDIR=/mnt/md0 dump -h -0 -L -f /data/md0.backup /dev/md0 Then on the i386: cd / ; restore rvf /data/md0.backup Should keep your flags and everything else that may exist without the need for any install tools which can be replaced at a later point. On Sun, Jun 1, 2014 at 3:04 PM, Alfred Perlstein <bright@mu.org> wrote: > > On 6/1/14, 11:58 AM, Jason Hellenthal wrote: > >> >> On Jun 1, 2014, at 14:51, Alfred Perlstein <bright@mu.org> wrote: >>> >>> >>> 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? >>> >> Instructs the top-level Makefile to check if make(1) is up-to-date. Not >> sure if it really would have an effect on a cross build but worth a shot. >> make.conf(5) holds a better definition of it. >> >> 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? >>> >> rsync(1) can be build from ports with the chflags patch that should aid >> in preserving them. >> >> rsync --fileflags . . . >> > > Unfortunately I'm doing it over NFS and I don't think we support chflags > over NFS (not even with an extension). > > mount i386target:/ /mnt/target > rsync -avvH /mnt/target.local /mnt/target > > > So that wouldn't work... perhaps if I mounted from the i386 host and ran > rsync from the i386 host, however then I'm overwriting the running system... > > I figured out two other ways that might work: > > 1) make the "distribution tarballs" then dig through the installer to find > the part that knows about manifests enough to set chflags. > -or- > 2) give up and build it all under a i386 vm so the "installtools" are > i386, then somehow export that to the i386 machine. > > meh! > > -Alfred > >> >> -Alfred >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> -- >>>> Jason Hellenthal >>>> Voice: 95.30.17.6/616 >>>> JJH48-ARIN >>>> >>>> On Jun 1, 2014, at 14:24, Alfred Perlstein <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> 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 mailing list >>>>>>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>>>>>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@ >>>>>>> freebsd.org" >>>>>>> >>>>>> >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAO2cuEM%2BNeZLT_xLLQ%2BhTsyy7-Eij2dtFRGi1x-TE8SK1kAF7A>