# Unable to use Synth inside a 32-bit jail



## stratact (May 30, 2022)

I'm trying to build 32-bit packages by using Synth in a dedicated FreeBSD i386 jail. I was trying to run `synth upgrade-system` inside the jail but I get the following error message:


```
raised REPLICANT.SCENARIO_UNEXPECTED : /sbin/mount -t tmpfs tmpfs /usr/obj/synth-live/SL09 => failed with code 1
```

After that, I experimented by using `mount -t tmpfs tmpfs /mnt` and then got this error:


```
mount: tmpfs: Operation not permitted
```

I'm not sure what else needs to be configured to solve this problem. This is what I currently have for /etc/jail.conf


```
freebsdx86 {
    host.hostname = "freebsdx86";
    path = "/usr/jails/${host.hostname}";
    allow.mount;
    allow.mount.tmpfs;
    mount.devfs;
    ip4.addr = "192.168.0.192";
    interface = "igb0";
    exec.start = "/bin/sh /etc/rc";
    exec.stop = "/bin/sh /etc/rc.shutdown";
}
```

I'm aware that Poudriere can handle this kind of task with a couple command flags but I prefer using Synth since I like how easy it is to configure and how it builds packages with its parallelism approach via N-workers times M-jobs.


----------



## rigoletto@ (May 31, 2022)

stratact said:


> I'm aware that Poudriere can handle this kind of task with a couple command flags but I prefer using Synth since I like how easy it is to configure and how it builds packages with its parallelism approach via N-workers times M-jobs.


I don't know the answer for your question, I never tried to use either Synth or Poudriere inside a jail but you probably would need to remove some restrictions jails have. IMO this is easier to just configure Pouriere to use a i386 jail than run something inside a i386 jail.

Poudriere can also configured to do the same:

`PARALLEL_JOBS
PREPARE_PARALLEL_JOBS`


----------



## stratact (May 31, 2022)

It seems you have answered the real need of my question. Your response motivated me to allocate a bit of time to study Poudriere through the handbook and its manpages. After getting a better picture of what it is capable of and how to take advantage of it, it started to seem less "intimidating" to me. As of now with me writing this reply, I'm currently using it to build the i386 packages I need within a `13i386` Poudriere jail that I created. After that, I will need to figure out how to make a repo configuration to have `pkg` see the i386 packages I generated for installing.

With that said, I don't know if I would feel comfortable marking this thread as "solved" just yet. Someone in the future looking at this thread may genuinely want an answer to running Synth or Poudriere inside a jail.


----------



## Geezer (May 31, 2022)

`synth configure` and then unset `tmpfs` in [K] and [L].


----------



## stratact (May 31, 2022)

Huh, interesting. Inside my `freebsdx86` jail, both [K] and [L] were already set to `false`. I didn't configure those, they were like that to begin with. However, when I was checking my Synth configuration on the host itself, both were already set to `true`. Synth probably detected I was in a jail and set both of those to `false` by the time I ran `synth configure`.


----------



## rigoletto@ (May 31, 2022)

stratact said:


> After that, I will need to figure out how to make a repo configuration to have `pkg` see the i386 packages I generated for installing.



If you are going to install the packages in the same machine, like in a x86 jail, you can use nullfs(5) to mount the necessary files inside the jail and point pkg(8) to it like done in the host.

Alternatively, you can just use the typical _http_ method. THIS is a good guide, slightly outdated but yet quite on point. There is also good information on the POUDRIERE page.


----------



## stratact (Jun 5, 2022)

rigoletto@ said:


> If you are going to install the packages in the same machine, like in a x86 jail, you can use nullfs(5) to mount the necessary files inside the jail and point pkg(8) to it like done in the host.
> 
> Alternatively, you can just use the typical _http_ method. THIS is a good guide, slightly outdated but yet quite on point. There is also good information on the POUDRIERE page.


Hey there, I just want to follow up with you.

The original point of needing to build my i386 packages was to solve the problem of installing i386 emulators/wine-devel inside ~/.i386-wine-pkg for Wine 32-bit compatibility because I was building my own packages using Synth and already disabled the FreeBSD repository.

What I decided to do was use my Poudriere-generated i386 packages inside my 32-bit jail by using pkg(8)'s `--rootdir` in order to install emulators/wine-devel and friends to /root/.i386-wine-pkg. I exit out and move that directory from my jail to my to user's home dir and then `chown -R $USER:$USER ~/.i386-wine-pkg` it.

This got it to work and finally solved my need for building i386 packages.


----------

