June 17, 2025 at 8:18 PM, "Milos Nikic" <nikic.mi...@gmail.com 
mailto:nikic.mi...@gmail.com?to=%22Milos%20Nikic%22%20%3Cnikic.milos%40gmail.com%3E
 > wrote:



> 
> Hello folks,
> 
> Thanks for all the emails.

I've never really gotten the hang of "hacking" on the Hurd / GNU Mach / MiG, 
etc.

Sergey wrote these two guides on how to cross compile the Hurd.  Basically you 
run GNU/Linux
on bare metal.  Then you build the Hurd from your Linux box, and run the Hurd 
via qemu:

Maybe these guides will help you a little bit.  I'd link you to the website, 
but that
seems to be down at the moment...

https://lists.gnu.org/archive/html/bug-hurd/2024-09/msg00051.html

https://lists.gnu.org/archive/html/bug-hurd/2024-09/msg00052.html

> The flavor I'm running  is hurd-i386 which came with the pre-installed 
> debian-hurd-20230608.img.
> I am just cloning the repo. Trying to rebuild it for 32 bit, and stick it 
> inside the /boot folder, and then change grub.cfg minimally to take my (just 
> built and copied) gnumach.gz instead of the default one that comes 
> preinstalled with Debian. I don't touch anything else there!
> Basically this is all as pristine as it comes. Debian-hurd unaltered (except 
> from git, texinfo, and some other things installed). Unaltered gnumach repo, 
> and unaltered mig repo. 
> 
> As far as CFLAGS go on my host linux Arch and also on my Debian-Hurd:
> 
> $ echo $CFLAGS
> 
> (empty)
> Nothing prints out. They are not set, other than what the unaltered Makefile 
> sets them.
> 
> Here is the config.log https://justpaste.it/gg2af  from Debian-Hurd
> Here is the config.log https://justpaste.it/fya16  from Arch Host .
> 
> As far as that "n", I have no idea where that is coming from. It's not 
> happening when I try on the  Host, only inside Hurd.
> I see in the Makefile there is a line such as:
> MIGCOM = $(MIG) -n -cc cat - /dev/null
> 
> That looks a lot like:
> n -cc cat - /dev/null   -user ./tests/mig-out/device.user.c -header 
> ./tests/mig-out/device.user.h -list ./tests/mig-out/device.user.msgids < 
> ./tests/mig-out/device.user.defs
> That I see in logs.
> 
> So it would mean $(MIG) is evaluating to nothing.
> Yet there is this up there in the file:
> MIG = mig
> 
> And mig is present on the system.
> 
> I also tried rebuilding gnumach where i didn't pass anything into ./configure 
> while inside Hurd, it didn't change the outcome
> 
> Thanks for looking into this.
> 
> On Tue, Jun 17, 2025 at 5:48 AM <jbra...@dismail.de mailto:jbra...@dismail.de 
> > wrote:
> 
> > 
> > June 17, 2025 at 12:25 AM, "Milos Nikic" <nikic.mi...@gmail.com 
> > mailto:nikic.mi...@gmail.com  mailto:nikic.mi...@gmail.com 
> > mailto:nikic.mi...@gmail.com 
> > ?to=%22Milos%20Nikic%22%20%3Cnikic.milos%40gmail.com http://40gmail.com/ 
> > %3E > wrote:
> > 
> > > 
> > > Hello
> > > 
> > > Thanks folks, I appreciate any help you guys can provide.
> > > 
> > > Yes I used the pristine gnumach and mig. Just cloned and pulled again 
> > > today.
> > 
> > If you still can't figure it out, ask on #hurd.  I believe damo22 and 
> > solid_black
> > cross compile the Hurd.  They are two prominent hurd developers.
> > 
> > I believe our fearless leader developers the hurd the "Debian way".
> > 
> > > I compiled gnumach on my Linux Arch (cross compiled?).  With a script 
> > > from compile-scratch.sh 
> > > https://github.com/AlmuHS/gnumach_dev_scripts/blob/main/compile_scratch.sh
> > >  
> > > Then I ran 
> > > $ make tests/test-task.iso (from my build directory).
> > > The thing didn't even compile correctly:
> > > 
> > > /usr/bin/ld: /tmp/ccYq0CRM.o: in function `test_task':
> > > /home/user/Projects/hurd/gnumach/build/../tests/test-task.c:57:(.text+0x27e):
> > >  undefined reference to `__stack_chk_fail_local'
> > > 
> > > Full log: https://justpaste.it/k3rvq 
> > > 
> > > Mig is present:
> > > $ which mig
> > > /home/user/gnu/bin/mig
> > > $ mig --version
> > > i686-gnu-mig (GNU MIG) 1.8
> > > 
> > > And inside hurd it looked like this:
> > > 
> > > $ cd gnumach 
> > > $ git fetch origin
> > > $ git reset --hard origin/master
> > > $ autoreconf -i
> > > $ mkdir build
> > > $ cd build
> > > $ ../configure --host=i686-gnu CC='gcc -m32'
> > > $ make gnumach.gz
> > > $ make tests/test-task.iso
> > > Lots of errors, such as:
> > > ../tests/test-task.c:28:10: fatal error: gnumach.user.h: No such file or 
> > > directory
> > >    28 | #include <gnumach.user.h>
> > > 
> > > Full output https://justpaste.it/eug2i : 
> > > 
> > > Mig is present:
> > > $ which mig
> > > /usr/bin/mig
> > > $ mig --version
> > > mig (GNU MIG) 1.8
> > > 
> > > Apologize for the details, I highly suspect that I am doing something 
> > > wrong here.
> > > Thanks in advance.
> > > 
> > > On Mon, Jun 16, 2025 at 6:39 PM Diego Nieto Cid <dnie...@gmail.com 
> > > mailto:dnie...@gmail.com  mailto:dnie...@gmail.com 
> > > mailto:dnie...@gmail.com  > wrote:
> > > 
> > > > 
> > > > Hello,
> > > > 
> > > > On Mon, Jun 16, 2025 at 08:10:13AM -0700, Milos Nikic wrote:
> > > > > Hello,
> > > > > 
> > > > > Thanks for the email.
> > > > > The thing is I am not cross compiling. I am instead compiling from 
> > > > > inside
> > > > > Hurd (in Qemu).
> > > > > Yet cannot seem to get it quite right (even though it compiles
> > > > > successfully inside Hurd, when I copy it to /boot it panics on the 
> > > > > next
> > > > > reboot).
> > > > >
> > > > 
> > > > The pristine gnumach sources should work. You can check whether it's a 
> > > > bug or
> > > > just a configuration issue by running the test suit.
> > > > 
> > > > For instance, you can build the task tests with the following command 
> > > > from
> > > > your build tree:
> > > > 
> > > >     $ make tests/test-task.iso
> > > > 
> > > > You can then run the test from a GNU/Linux box (after copying over the 
> > > > iso file)
> > > > by running the ISO in quemu:
> > > > 
> > > >     $ qemu-system-x86_64 -m 2048 -nographic -no-reboot -boot d -cdrom 
> > > > test-task.iso
> > > > 
> > > > It will book QEMU and produce some output and the following line at the 
> > > > end:
> > > > 
> > > >     gnumach-test-success-and-reboot: test module-task exit code 0
> > > > 
> > > > Keep us updated of how it goes :)
> > > > 
> > > > Cheers,
> > > > Diego
> > > >
> > >
> >
>

Reply via email to