[erlang-questions] Reltool anyone?

Francesco Cesarini <>
Sun Aug 24 11:31:46 CEST 2014


We cover the contents of boot files and explain what happens. The purpose is trouble shooting when your system refuses to start. We are not suggesting anyone bypass sys tools and write their own, no matter how fun some might think it is :-)

F



> On 23 Aug 2014, at 20:51, Joe Armstrong <> wrote:
> 
> I think it might be a better idea if you explained how booting erlang works
> 
> *exactly* what happens when you do "erl -boot XYZ.boot"
> 
> examining a boot file is fun - for example, we can take a look at start.boot
> (the default boot file) - to see what it does we do the following:
> 
> $ cd /usr/local/lib/erlang/bin
> $ erl
> 
> 1 > {ok, B} = file:read_file("start.boot").
> 
> {ok,<<131,104,3,100,0,6,115,99,114,105,112,116,104,2,107,
> 
>      0,10,69,114,108,97,110,103,47,79,84,80,...>>}
> 
> 2 > binary_to_term(B).
> 
> {script,
> 
>    {"Erlang/OTP","17"},
> 
>    [{preLoaded,
> 
>         [erl_prim_loader,erlang,erts_internal,init,otp_ring0,
> 
>          prim_eval,prim_file,prim_inet,prim_zip,zlib]},
> 
>     {progress,preloaded},
> 
>     {path,
> 
>         ["$ROOT/lib/kernel-3.0/ebin","$ROOT/lib/stdlib-2.0/ebin"]},
> 
>     {primLoad,[error_handler]},
> 
>     {kernel_load_completed},
> 
>     {progress,kernel_load_completed},
> 
>     {path,["$ROOT/lib/kernel-3.0/ebin"]},
> 
>     {primLoad,
> 
>         [application,application_controller,application_master,
> 
>          application_starter,auth,code,code_server,disk_log,
> 
>          disk_log_1,disk_log_server,disk_log_sup,dist_ac,dist_util,
> 
>          erl_boot_server,erl_ddll,erl_distribution|...]},
> ...etc
> 
> Boot files are just tuples which are interpreted by the function eval_script -
> (Which on my system starts in line 812 of
> /usr/local/lib/erlang/lib/erts-6.0/src/init.erl)
> 
> The *reason* they
> are written as binaries and use binary_to_term to "see" them is
> because when the system
> is loaded the code to parse erlang terms has not yet been loaded -
> this code gets loaded
> by the boot loader a little bit later.
> 
> The stuff in systools and reltool basically takes the pain out of
> manipulating the boot files.
> Once you've understood the bootfile structure the rest is easy.
> 
> This is actually described in
> 
> http://www.erlang.org/documentation/doc-4.9.1/doc/system_principles/system_principles.html
> 
> But very few people seem to notice this - it might be an idea to
> emphasis how easy the
> start phases are. Once you hide what's really going on with tools you
> can get into deep
> waters if the tools stop working and you don't really understand whats
> happening under the
> covers ...
> 
> Anybody who really wants to understand how the system starts should
> write some simple
> bootscripts by-hand and see what happens when they are run :-)
> 
> Cheers
> 
> /Joe
> 
> 
> On Sun, Aug 17, 2014 at 6:07 PM, Francesco Cesarini
> <> wrote:
>> Hi,
>> 
>> I was wrapping up the chapter on release handling for the OTP book and never
>> having used it before, decided to take a look at reltool. Is anyone using
>> it? I am finding it counter intuitive and struggling to see how it
>> simplifies the task of creating releases.
>> 
>> Feel free to reply to the list or ping me privately.
>> 
>> Thanks,
>> F
>> 
>> --
>> Founder & Technical Director
>> Erlang Solutions Ltd.
>> 
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list