ref: b795f27106bdf6107f95c3f3e9e8544626bf0252
dir: /fqa5.ms/
.\" This troff source is processed to create all forms of the .\" 9FRONT DASH 1 book and the http://fqa.9front.org website. .\" NOTE: Purely experimental. Methods employed may change. .\" troff -ms -mpictures fqa5.ms | page .\" htmlroff -u -ms -mhtml fqa5.ms >fqa5.html .de FG \" .FG <basename> .ie h .html - <img src="\\$1.\\$2" /> .el .BP \\$1.ps .br .. .po 1i \" page offset (from left) .fp 1 R LucidaSans .fp 2 I LucidaSansI .fp 3 B LucidaSansB .fp 4 BI LucidaSansI .fp 5 CW LucidaCW .paragraph 0 .margin 0 .HTML "FQA 5 - Building the System from Source .html - <style type="text/css">body{font-size:10pt}; a{font-size:10pt}</style> .html - <a href="fqa.html">FQA INDEX</a> | .html - <a href="fqa4.html">FQA 4 - 9front Installation Guide</a> | .html - <a href="fqa6.html">FQA 6 - Networking</a> .html - <hr /> .SH .LG .ihtml h1 <h1> FQA 5 - Building the System from Source .ihtml h1 .NL .R .html - <a href="fqa5.html">html</a> | .html - <a href="fqa5.pdf">pdf</a> | .html - <a href="fqa5.ms">troff</a> .FG thesource jpg .html - <a name="5.1" /> .ihtml h2 <h2> .SH 5.1 - Why should I build my system from source? .R .ihtml h2 Some reasons why you might actually wish or need to build from source: .ihtml ul <ul> .IP • Updates have been committed since you performed the installation. • Test or develop new features. .LP .ihtml ul .html - <a name="5.2" /> .ihtml h2 <h2> .SH 5.2 - Building 9front from source .R .ihtml h2 .html - <a name="5.2.1" /> .ihtml h3 <h3> .SH 5.2.1 - Update sources .R .ihtml h3 9front uses .ihtml a <a href="http://man.9front.org/1/hg"> hg(1) .ihtml a to synchronize the system with the .ihtml a <a href="https://code.9front.org/hg/plan9front/"> 9front repository: .ihtml a .P1 cd / bind -ac /dist/plan9front / hg incoming hg -v pull -u .P2 which is consolidated in the command: .P1 sysupdate .P2 If hg refuses to update due to conflicts (e.g. if you installed something locally which was later incorporated into 9front), this is a quick workaround which discards local changes: .P1 hg update -C --clean .P2 After the tree is updated, recompile/build the updated programs as needed. .html - <a name="5.2.1.1" /> .ihtml h4 <h4> .SH 5.2.1.1 - hgrc .R .ihtml h4 During installation, the 9front Mercurial repository is copied to .CW /dist/plan9front/.hg , is .CW chmod 775, .R and is owned by user .CW glenda and group .CW sys . To update the repository when logged in as a user other than .CW glenda , add that user to group .CW sys add then add the following to .CW $home/lib/hgrc : .P1 [trusted] users=glenda groups=glenda .P2 To use Mercurial with .ihtml a <a href="http://man.9front.org/4/webfs"> .CW webfs(4) .ihtml a instead of Python's built-in HTTP: .P1 [extensions] hgwebfs= .P2 .B Note: The .CW hgwebfs extension expects login credentials to be present in .ihtml a <a href="http://man.9front.org/4/factotum"> .CW factotum(4) , .ihtml a else Mercurial will abort when any attempt is made to access resources that require authentication. To add credentials to .CW factotum : .P1 echo\ \'key\ proto=pass\ realm=PAIN\ server=code.9front.org\ service=http \\ user=cinap_lenrek\ !password=FckG00gl!\'\ >>/mnt/factotum/ctl .P2 .B Note: Depending on who you are and the repository being used, your credentials may differ. Credentials may be saved permanently and loaded into .CW factotum at boot time using .ihtml a <a href="http://fqa.9front.org/fqa8.html#8.4.7"> .I FQA 8.4.7 - secstore. .R .ihtml a .html - <a name="5.2.2" /> .ihtml h3 <h3> .SH 5.2.2 - Building from source .R .ihtml h3 .B Note: A minimum of 512MB RAM is needed to link some programs. If less than 512MB is available, be sure to turn on swap before building (Read: .ihtml a <a href="http://man.9front.org/8/swap"> .CW swap(8) ). .ihtml a .P1 # create any missing directories needed for the build cd / \&. /sys/lib/rootstub # build everything cd /sys/src mk install mk clean # build manpage indices cd /sys/man mk # build the papers and html (optional) cd /sys/doc mk mk html .P2 Build the kernel for 386: .P1 cd /sys/src/9/pc mk install .P2 Build the kernel for amd64: .P1 cd /sys/src/9/pc64 mk install .P2 Build the kernel for arm / Raspberry Pi: .P1 cd /sys/src/9/bcm mk 'CONF=pi' install mk 'CONF=pi2' install .P2 Build the kernel for arm64 / Raspberry Pi 3: .P1 cd /sys/src/9/bcm64 mk install .P2 Read: .ihtml a <a href="fqa7.html#7.2.5"> .I FQA 7.2.5 - How do I install a new kernel? .R .ihtml a .html - <a name="5.2.2.1" /> .ihtml h4 <h4> .SH 5.2.2.1 - Cross compiling .R .ihtml h4 To cross compile, simply set the .CW objtype environment variable prior to running the build. For example, to build all the amd64 binaries on a 386 system: .P1 # create any missing directories needed for the build cd / \&. /sys/lib/rootstub cd /sys/src objtype=amd64 mk install .P2 .html - <a name="5.3" /> .ihtml h2 <h2> .SH 5.3 - Building an ISO .R .ihtml h2 The 9front ISO is a livecd that also serves as install media. .B Note: Currently, only the 386 architecture is built for the ISO. Read: .ihtml a <a href="fqa8.html#8.9"> .I FQA 8.9 - Bootstrapping architectures not included on the ISO .R .ihtml a for more information on booting other architectures. .P1 # put your root file system into /n/src9 bind /root /n/src9 # put your hg repository there bind -ac /dist/plan9front /n/src9 # build the iso cd /sys/lib/dist mk /tmp/9front.$objtype.iso .P2 .html - <a name="5.4" /> .ihtml h2 <h2> .SH 5.4 - Common Problems when Compiling and Building .R .ihtml h2 Most of the time, problems in the build process are caused by not following the above directions carefully. People who complained about this section of the FQA have so far not submitted anything better. Good luck. ./" 5.4 should mention that sometimes you end up with a .8 file in a bad ./" state which can usually be resolved by deleting the .8 file or mk clean .html - <a name="5.4.1" /> .ihtml h2 <h2> .SH 5.4.1 - Updating compilers .R .ihtml h2 Changes to the compilers may necessitate updating the compiler before rebuilding the rest of the system: .P1 cd /sys/src/cmd/cc; mk install # choose the appropriate compiler for your architecture cd /sys/src/cmd/6c; mk install .P2 .html - <hr /> .html - <a href="fqa.html">FQA INDEX</a> | .html - <a href="fqa4.html">FQA 4 - 9front Installation Guide</a> | .html - <a href="fqa6.html">FQA 6 - Networking</a>