Thanks Gerwin!

I’m happy to report that I have been able to build and run seL4 test on two 
Apple silicon macs using Docker.  I’m sure Ivan’s work can provide a better 
long term solution.  But, in case my quick hacks are useful to anyone else, 
here’s a summary of what I did:

Building: The docker build that caused the error in my previous message was 
failing because it was looking for an arm version of the extras image, instead 
of the x86_64 version that had already been built.  To fix this, I just changed 
Line 9 in dockerfiles/user.Dockerfile (i.e., the line highlighted in the error 
message), from “FROM $EXTRAS_IMG” to "FROM --platform=linux/amd64 $EXTRAS_IMG” 
(new part highlighted in green).  After that, I’m able to run ninja to build 
seL4test.

Running: Alas, ./simulate fails when I try to run seL4test in the container (a 
qemu issue).  But I can just use ./simulate -n, to output the required qemu 
command, and then copy, paste, and run that command in a regular terminal 
outside the container.  This works because I already have qemu installed on the 
mac (courtesy of homebrew).

As I understand it, both steps are emulating x86_64 code under qemu, so it’s 
not as fast as it could be ... but still enough to be see the message that "All 
is well in the universe” :-)

Best wishes,
Mark



> On Apr 11, 2024, at 4:48 PM, Gerwin Klein <kle...@unsw.edu.au> wrote:
> 
> Hi Mark,
> 
> the Docker setup is currently only really supported on Intel. We've tried to 
> get M1 working, but have so far only succeeded for the base sel4 image, not 
> for the larger containers on top (e.g. CamkES), although Ivan has make some 
> progress here: https://github.com/seL4/seL4-CAmkES-L4v-dockerfiles/pull/65 
> which might be worth trying.
> 
> I believe there is an option to make Docker emulate x64 on M1, but it is slow 
> (it uses qemu).
> 
> We'd be quite interested in a proper multi-arch image that does both x64 and 
> aarch64, so if you have any success in making progress, please do let us know.
> 
> Cheers,
> Gerwin
> 
>> On 12 Apr 2024, at 04:48, Mark Jones <m...@pdx.edu> wrote:
>> 
>> [Some people who received this message don't often get email from 
>> m...@pdx.edu. Learn why this is important at 
>> https://aka.ms/LearnAboutSenderIdentification ]
>> 
>> Dear All,
>> 
>> I’m trying to use the instructions on 
>> https://docs.sel4.systems/projects/dockerfiles/ to set up an seL4 docker 
>> build environment on an Apple Silicon Mac.  I’ve actually tried this on two 
>> different machines (with small variations in the versions of macOS Sonoma, 
>> Apple Silicon, and Docker between each of the machines), but get the same 
>> result on each one.  I’m hoping that other folks on this list might know how 
>> to fix this.
>> 
>> I start by running:
>> 
>> git clone https://github.com/seL4/seL4-CAmkES-L4v-dockerfiles.git
>> cd seL4-CAmkES-L4v-dockerfiles
>> make user
>> 
>> But the make command fails with the output appended below.
>> Any hints (including other places to post this question) would be much 
>> appreciated!
>> 
>> Best wishes,
>> Mark
>> 
>> ______________
>> 
>> scripts/utils/check_for_old_docker_imgs.sh
>> WARNING: Unable to check if your trustworthysystems docker images are 
>> getting a bit old!
>>         The date command did not behave as expected. Skipping the check.
>> docker build --force-rm=true \
>>                --build-arg=USER_BASE_IMG=trustworthysystems/camkes \
>>                -f dockerfiles/extras.Dockerfile \
>>                -t extras \
>>                .
>> [+] Building 109.7s (6/6) FINISHED                                           
>>                               docker:desktop-linux
>> => [internal] load build definition from extras.Dockerfile                   
>>                                              0.0s
>> => => transferring dockerfile: 602B                                          
>>                                              0.0s
>> => [internal] load metadata for docker.io/trustworthysystems/camkes:latest   
>>                                              1.4s
>> => [internal] load .dockerignore                                             
>>                                              0.0s
>> => => transferring context: 153B                                             
>>                                              0.0s
>> => [1/2] FROM 
>> docker.io/trustworthysystems/camkes:latest@sha256:29206d51ef1d09bb5e1934b11a1946a13d13333ab0ff7c2ff2645ea
>>   96.3s
>> => => resolve 
>> docker.io/trustworthysystems/camkes:latest@sha256:29206d51ef1d09bb5e1934b11a1946a13d13333ab0ff7c2ff2645ea2
>>   0.0s
>> => => 
>> sha256:e943b5afb84223c55b5dfdbe2f383970021765c345c51b08fa8b9b0d4d69ccd7 
>> 9.97kB / 9.97kB                             0.3s
>> => => 
>> sha256:46cbb6e89f5727950fb43b0c4b18a28073c18ad928ccf16c6e2a9f6d708ccb35 
>> 80.82MB / 80.82MB                           6.9s
>> => => 
>> sha256:29206d51ef1d09bb5e1934b11a1946a13d13333ab0ff7c2ff2645ea2e12c65f2 
>> 1.79kB / 1.79kB                             0.0s
>> => => 
>> sha256:678186f76064904e561bbec5cc0fb200e1c7d0435dbeeaf2433d050631a132ab 
>> 6.82kB / 6.82kB                             0.0s
>> => => 
>> sha256:99046ad9247f8a1cbd1048d9099d026191ad9cda63c08aadeb704b7000a51717 
>> 31.36MB / 31.36MB                           3.0s
>> => => 
>> sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B 
>> / 32B                                   0.8s
>> => => 
>> sha256:be52171dda4a5d045a589cf92b25fe60ac5b74dac75bb03997d5a049d47b361e 
>> 1.15GB / 1.15GB                            53.1s
>> => => extracting 
>> sha256:99046ad9247f8a1cbd1048d9099d026191ad9cda63c08aadeb704b7000a51717      
>>                             1.2s
>> => => 
>> sha256:460c68d68ad3efcc4c324e3da3ea9a8d7ebee818d87643e78fa551c90106c218 
>> 1.19GB / 1.19GB                            65.4s
>> => => extracting 
>> sha256:e943b5afb84223c55b5dfdbe2f383970021765c345c51b08fa8b9b0d4d69ccd7      
>>                             0.0s
>> => => extracting 
>> sha256:46cbb6e89f5727950fb43b0c4b18a28073c18ad928ccf16c6e2a9f6d708ccb35      
>>                             3.0s
>> => => extracting 
>> sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1      
>>                             0.0s
>> => => extracting 
>> sha256:be52171dda4a5d045a589cf92b25fe60ac5b74dac75bb03997d5a049d47b361e      
>>                            20.1s
>> => => extracting 
>> sha256:460c68d68ad3efcc4c324e3da3ea9a8d7ebee818d87643e78fa551c90106c218      
>>                            22.7s
>> => [2/2] RUN apt-get update -q     && apt-get install -y 
>> --no-install-recommends         cowsay         sudo             11.8s
>> => exporting to image                                                        
>>                                              0.1s
>> => => exporting layers                                                       
>>                                              0.1s
>> => => writing image 
>> sha256:29bf5499ec09fe5c0398c5023deb519373d25d2c8ea0d3d0d964759317511415      
>>                          0.0s
>> => => naming to docker.io/library/extras                                     
>>                                              0.0s
>> 
>> View build details: 
>> docker-desktop://dashboard/build/desktop-linux/desktop-linux/ohi6vc8w1dj06hmvvu5ocypjs
>> 
>> What's Next?
>>  1. Sign in to your Docker account → docker login
>>  2. View a summary of image vulnerabilities and recommendations → docker 
>> scout quickview
>> docker build --force-rm=true \
>>                --build-arg=EXTRAS_IMG=extras \
>>                --build-arg=UNAME=user \
>>                --build-arg=UID=502 \
>>                --build-arg=GID=20 \
>>                --build-arg=GROUP=staff \
>>                -f dockerfiles/user.Dockerfile \
>>                -t user_img-user .
>> [+] Building 0.7s (2/2) FINISHED                                             
>>                               docker:desktop-linux
>> => [internal] load build definition from user.Dockerfile                     
>>                                              0.0s
>> => => transferring dockerfile: 353B                                          
>>                                              0.0s
>> => ERROR [internal] load metadata for docker.io/library/extras:latest        
>>                                              0.6s
>> ------
>>> [internal] load metadata for docker.io/library/extras:latest:
>> ------
>> user.Dockerfile:9
>> --------------------
>>   7 |     ARG EXTRAS_IMG=extras
>>   8 |     # hadolint ignore=DL3006
>>   9 | >>> FROM $EXTRAS_IMG
>>  10 |
>>  11 |     # Get user UID and username
>> --------------------
>> ERROR: failed to solve: extras: pull access denied, repository does not 
>> exist or may require authorization: server message: insufficient_scope: 
>> authorization failed
>> 
>> View build details: 
>> docker-desktop://dashboard/build/desktop-linux/desktop-linux/q25mw2voldchjfgf3ybhy2q0d
>> make: *** [build_user] Error 1
>> 
>> _______________________________________________
>> Devel mailing list -- devel@sel4.systems
>> To unsubscribe send an email to devel-leave@sel4.systems
> 

_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to