From fa52f90d8aa78864cab0fcd04d52ae17983f1018 Mon Sep 17 00:00:00 2001 From: kieron Date: Sun, 30 Oct 2016 16:03:03 +0000 Subject: [PATCH] Added an install script to setup the dev environment. git-svn-id: https://spexeah.com:8443/svn/Asuro@11 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c --- bin/kernel.bin | Bin 12516 -> 14784 bytes compile.sh | 2 +- install_dev_env.sh | 93 +++++++++++++++++++++++++++++++++++++++++++++ iso/boot/asuro.bin | Bin 12516 -> 14784 bytes lib/console.o | Bin 5840 -> 10796 bytes lib/console.ppu | Bin 14807 -> 14753 bytes lib/kernel.o | Bin 2168 -> 2992 bytes lib/kernel.ppu | Bin 1473 -> 1237 bytes lib/multiboot.o | Bin 2340 -> 3468 bytes lib/multiboot.ppu | Bin 2886 -> 2916 bytes lib/system.o | Bin 6368 -> 10720 bytes lib/system.ppu | Bin 7993 -> 9718 bytes lib/util.ppu | Bin 1854 -> 1793 bytes 13 files changed, 94 insertions(+), 1 deletion(-) create mode 100755 install_dev_env.sh diff --git a/bin/kernel.bin b/bin/kernel.bin index c68dc4a5934d188b12baed7882e644f6e51bb41d..4401a88bae24860033adc43580c706f8f0d939d3 100755 GIT binary patch literal 14784 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 XW3!E+r&v-eu}U`K8p}E)`Dy$K;t{e2 diff --git a/compile.sh b/compile.sh index 4b7e5ab4..ea303033 100755 --- a/compile.sh +++ b/compile.sh @@ -21,7 +21,7 @@ echo "=======================" echo " " echo "Compiling FPC Sources..." echo " " -fpc -Aelf -n -va -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -Rintel -Tlinux -FElib/ src/kernel.pas +fpc -Aelf -n -va -O3 -Op3 -Si -Sc -Sg -Xd -CX -XXs -Rintel -Pi386 -Tlinux -FElib/ src/kernel.pas if [ $? -ne 0 ] then echo "Failed to compile FPC Sources!" diff --git a/install_dev_env.sh b/install_dev_env.sh new file mode 100755 index 00000000..47ef3602 --- /dev/null +++ b/install_dev_env.sh @@ -0,0 +1,93 @@ +#!/bin/sh +ERRCOUNT=0 +echo " " +echo "===================================" +echo "== ASURO DEV ENVIRONMENT INSTALL ==" +echo "===================================" + +echo " " +echo "Installing Build Essentials..." +sudo apt-get install build-essential:i386 +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + +echo " " +echo "Installing NASM..." +sudo apt-get install nasm +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + +echo " " +echo "Installing Bin-Utils..." +sudo apt-get install binutils:i386 +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + +echo " " +echo "Installing FPC Sources..." +sudo apt-get install fpc-src:i386 +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + +echo " " +echo "Installing FPC..." +sudo apt-get install fpc:i386 +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + +echo " " +echo "Installing QEmu..." +sudo apt-get install qemu +if [ $? -ne 0 ] +then + echo "Failed to install!" + ERRCOUNT=$((ERRCOUNT+1)) +else + echo "Success." +fi + + + +echo " " +echo "WARNING: We assume you already have Grub installed." +echo " Asuro depends on grub-mkrescue." + +echo " " +echo "=======================" +echo " " +if [ "$ERRCOUNT" -ne "0" ] +then + echo "$ERRCOUNT Errors Occurred, please review." +else + echo "No errors." +fi +echo " " +echo "=======================" +echo " " + + diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index c68dc4a5934d188b12baed7882e644f6e51bb41d..4401a88bae24860033adc43580c706f8f0d939d3 100755 GIT binary patch literal 14784 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 XW3!E+r&v-eu}U`K8p}E)`Dy$K;t{e2 diff --git a/lib/console.o b/lib/console.o index eaa9ba08f303de1b9d5587430567bef91e939309..ead5d9989dceabc86ea27be90537abf6de43aedf 100644 GIT binary patch literal 10796 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 Gy#D}g8XcVg literal 5840 zcmc&&ZERat89q)NCtKVl9fn3M(5PH>6WcGMxN_0pxr9vssd+vK| zXR))1A8@2M&wbAGzUMvfIp<#Ao3Hyj_Bk95p_)TfiUJd&;r+I~@ih825eIF?y#VIY0WZQ1WNFD(VxtDmmZDMr{&VvWqnfQ!no%VJf{- zOv?%7dya|;Sr5+;4*zRjSPxa^7MgzS!VLb_&3*`f#gzNLacAG;7P_vRmF1~5vUR6p zT<>+rB8tnVdb2m&)>E1j3tnU8#y#3EXprk$rze~rp73Zg#Cqd#YXN+0F7wtTe6egb z*+ut)T(9hnCd7LX-(Vfr8pn0bJ*8{4*5#Z-JU92u7HfX>s`XmVr`0>IS6d5oAp+JL z@)-R3UgTQ6m7Q-H-)dbw_uEUCF0EcW|F=r(wdby6u1>&pY%c8#u-_iMv=RnmtYkBZI5TbG;nzdnC{j%)7I zVr^-9Z7%23#F|^1!gx+?QXay(S&!BhyE20^>SmXw8s9hhSt^OTRqxHIz1xN+Jx>l< zo{`bL+P38U-ca(4y8lnv?iX`o`$ZkDi?{>4dh|{x`KGKx9a3zRJG)rFK!NMpXsr;i zN|)|Un2Dsl#OzVkW=01NJKM~RQPrL_jJUJ)tC?tJ*cfzmWs<|D;p#I?Gci(i;7}}W zINOuaV^t=3yG-d`Ws<+sL_oD^M^u}3h|82Q)dPumDq$M`_x$xJxe_Lyen5KE(Zl5d zSPjeztAI7ZuwtSIb`NYnjBc4Aj2=1%VQ$zLVYD;Du=`+#V6?U$gE?Uj!|2IR8}EXB z5=M>kQqCqA&4v6ZhII0!c~DNuM{}S&2Vpcm<=U)KJ*qjy+jrG9;rd@L;#6&+RidZ3 zRmv&~J(aS$Vop^RTID-_`zo=j@*xeE55n%pYVRnxOHOq+!O}3&{mcQ9cLQf&l!^4? z%mI?01fGV`evp2aIY9CYz&V)GuQLZoofc>rrt~H(AaQCm-p9dLaIJKmxzdNgZx-p_ zWUln@fn%6_{Hx5B{(JEHBKfHlg4^HGN2KvLSA7!reZ-FmEf06Z&L+9{P>s)ewa58M^nNZ z3U-G&{1JtLU_e(6kyt#I-r(Ww@VAEZE(4|!O>Xe%_Uk_XzSf=&y;ax4fwmsquX*jwJCTHgKp!RvFNZe8G0DYh5}SlR~2S z)1}h{g1Xib3bq6DrOBXJeB%npJO@HypXO~1`vSq%j`cAkiR57EG&HG>V3~T%cnstC zO)M8m#nPO)*b>2mw4LR`?G4?$Xfs|eTJ7w+7G8b`xyA2ReED#DuQy)+s=wq2-cV;- zAn5moIzr)YO_!)({Xz~Tj`YXk#sIy#7M?lzhfYtIuT{r0s3+VV3X2FopCXyz!D!lu z3}lk2MBy2ej|v36VSlGTs7HDWF|qhS(l}zo(~-haD-qFGD&koFaONYrTle`(=1E0| zj7@W`k1Wc!KC(p4p#MMzmbEa$xG`d4^+Zp8TIy-t6%KXz!+OBqT|(sL)c1$|t-ded z!4v4#)d)iOs>?if`a476zLH8S9;&^9ejD=M_I8V~t_R*jUnI3FQOY-x*p(8Z8MkLz zG-J1;qPahn!llulc{(zbj2O`K6XF{4zYyOk#6Os?5`PGW-(;FkHL&8Nc=uqwjrb!%>|p*N@n+1IIOgdk z#Jsu~pW^-j=EID~ffb(?;>Uzd_%5jcVxDIiFB78wb;8dG@kj3eGxN6zQO7Oj4!q+~ z9WFxn?*h_1_AvSwpCEmg5Mkzhj04nj^TT1 zaF_3{c#V|par_;1+Sl}#?kj5aolL%1e%a>WvqBx*lplRh()+CPo58?E!{x`jA3jCl zg8Yh`irJ1%9MOCuzhQ{vPTv&dN4Xz_shqeJ_4pw9cF~wB7k$qb`<>b<#Fr?5oATQO uuC7U1gI{q|S^%B&KZtxoVGWotz4nt2&5zcDzLSgn8a(KL1Nl*X%I`lL_Xbh` diff --git a/lib/console.ppu b/lib/console.ppu index e340472a27dcf927f3c7b9ba2fbf9eeb1c5c75a6..08a27da2fdfd86ae53a252535ccc42a61107978d 100644 GIT binary patch literal 14753 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 V>2bu%I6mSi12)00+o(qz{~y6Wjt&3- literal 14807 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 S#yytBfPEMwg?N4ZKJEiFu#7YS diff --git a/lib/kernel.ppu b/lib/kernel.ppu index fc9dea6e61a82b2c6f64ec8ccf26bacd8a914113..97fea269a229c6df55e9cbd043bfdf3e7569c188 100644 GIT binary patch delta 451 zcmX@eeU(!tARyGx+=$@-BLg!-g8&o5S{4R|vX8ERnC!daCd!!99}pCa@MB8IVG7%`S~UFH(Ms;88=M?iLxi>=N0GYq4xD$203PGEVMcekNWARK}ud|Y&*zGR*-r|h8Tv)b6HgY D0UTVX literal 1473 zcmd^9&2JJ>5P$Pv`L-=uEFNmKg<`C2{D_GM529kS0k#B|MB{-#i)K?68lf>pZzdi! zCMKqTinks;s)-kmUcDI)P-<{~Z+C&#gMWaNytgyInKv_U=FOH$)hpMo`(KjqiT#ok zdzuhyA6{Eu-z3*(g%D9*pdc@zz;^RVyV>$Xr~-xw$%q55@6@~R-pcz1KwqHytlMka zdxtBZe!NP5hIQE9ZS|~1r_=lRZJ@8{zs>>;Zg$$;POI5id*A(;AAAAk-|bng+3)Fv zr(65a0i57PTF4F5ku1gm1!66$vE#yZBnBd+D=4J)u-YSP-%`7}6qOS!&?&eIR322! zTrpg%7EJy2#)fGUtKuX`gqZWOiH{iqBPZBZ7-(>yX;85=QOa`%#|gVU;Mel(KHET@6dOq5?SNM`c6vXLv) z^2Mxfq)Oxd)^y|EM$Js!$(HZxMz)}B+jXmrSaO_|>?{FO_1j6u6$*B@J(Y<tkP1i#2*Vmd zi$LA!<2fMZ!qK2~?yRv!QJ2I)>lj%OvTl(w@gnYU!*k30P3Cj13}3f+9lsz$ oio6Dn3k5@C$3DN{}KoNKq+L(X@#g$;X;*m5MN=?N)1(rlec2Ab8Qc z7w;ZC2zn3|@elCm-K&Ur@}T!ZeQ)-?>}0x4)FGR;E^eDgmo(mu?0eF>v!3BBH~v z?>2C!fq8y?bwtoYCRW5)7ZI_?=+Cv{{&B;;*TDT^A8FDc`(S(*H3qJ(n}m-mdqg}T zoKQF_-Vwg9aEJIp_>jW8#U|k+3U`WOD)^YfF)=|H^XP-|&JyldxLd3fKCkc|@r*D) zHNUS24=8(&_)Peq!Z7~EichYV*F?#2vNDmM$vN4{V$qR_goMpRPG_c^Y_TA(Wm4%( zNjj;?Tt+&?o}Qg{GI^v_+xMU2ohfmeQd`&FkI5Lh5#r^xOxY zNY>p-a-r;%lPfYLlNR&Tre~`u=71qN{(r!r^faUG65QT_>JXCFc5dssHI_x&BzPIL zsL9_tYnuPIf%V1EDtI%`om;;v7whG!E0Sv)Rk#R%^y}~9}M1Sz!iA7vA-Xn(EW`A;M)^&nKuA>oo54pGBz6X zrVL&MFs=!1%v&~i&jEAIkjuQM2Ja1EzUAq>j|T4(;BgMB`TK70Hh1tBhbs=48uQT$ zIIJ$`h{vHu0Egu_33~W7+5~`K5CF%Fw{jdWzF!ADuK|E!6bwHx5o-KeGI)n!Ay%{i z%)0|Ren%INo3B<48{WY5TNd($L5JT3y2bpkYYHBn_X3otM;_+QytfALHIQuL;cbw4 z-wfWS<`2Iu=3Rn8=y9U}hQW?;F+TI|8oUJXI6v&qy!QrgRP%@5Ec3n^yqx9_Z<);d E15Yd0JOBUy literal 2340 zcma)7O=uHA6rPx9+t_GZMI7kDG0-+-I{9Blw=F`AmYt~ zch0}_r3SMH$OW&b3dJ#3xz^TT1bUe zhbgr+(2AUI!i0({c1Qx@k%CuQ(G73OU#+d_vga;)b?v*Qil_Y@#AES)r;qSB+i4=K z6A(Vgj$y*lLUp6!ua;^xU$3sM)M$2ne6bNz)>=K4=pTzxDA4+jj<~GmAZrgZ9%Vek zIN8FXLbbNM(b~m;9UBz4)Wf{Gd@??lQ^LD;14)IdSFP1Ib=6&`y)bxeI2e|>Le}G# z`sR4eU58WFEAb8n&ss$N`qPOh<0KN_6%2!i4cY*~ z0m(kb+y?8dP*k$$+{{&kaeXZ~4uh0*mQ+xm$@Gih7z(0e>IX(~m6ZUQ9 zW$>Hmdzn9gO+MjIVEgD}9Df7*A^H^a_pslh(>iJVAFw|Jcm!Mg1^f`lPk{dhzrg%* z;1e`YU;9@{th){6%-iW?>Uz@7SVc!?7c!1Dlg~TK%2@%b3%GT3F+J;8`JA3dM%va+ zawe13jSX>`YE<2M(e0GQ#iEnW>e-~7vU15x&-B|1(^hUS-)GW20%NK@abwjz zaU;Kw&8HUnZdW^CWVHR}NK(kq7qaPW-d@z%WTD^sfN@;3gXgzw$; zRbtuoU6m*`8Zf=m#x1>4cdMRCG&ZYvR)BuJg=MkUYQC4al3O_2@ZF_5DpB_;ttvRT zkI+Ln@LP;e8J{yoalR=&#u#TDXFSa~#dwKvhH#%!SDD+4^bb0cy&6#r0j zJVIRkamI1>V_G|EDA#~Y2iS8n}*cAFI8)WD# V@FDgQe1q;akX{WMp5{mU@fV)VWW)df diff --git a/lib/multiboot.ppu b/lib/multiboot.ppu index 64c62ab84b195062c0a99f35edd9539aff2daeac..032ebdde03835e25f664b5e38dad0d53c13173ef 100644 GIT binary patch delta 621 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 UH4*;50l4wfOvoV;O~p+87dNWhPyhe` literal 7993 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 diff --git a/lib/util.ppu b/lib/util.ppu index 1f17b98ca7ba49268763dd5f45f49cc36446aa30..f01b557882c7bd8aaad899c776781a530a932e2f 100644 GIT binary patch literal 1793 zcmbVN&1+LZ5Z`%e(%4u@TT`SeM15W?3VP7u$&Uu|piPTOwADkbwzUspD<<^=!H<)O zSFaufPvT9XCoxw~p7k%OjS_#q$=l~k3nn@+yR*NUo!Ob$w{Lc~eDcgG(-0FgPt%V1 zmM~`K)8kuv^2=`rj4{JtQXDMOw_f+FeH6bOfshBmUOBX=6Pqz*;|a-uk2Eaj%Z5*`vG zCJ8i#RXh}k#u>%wqVMaXPsHii=qNgNc#H*M5ctnAGWHk)|AMM>4JJRe#Mc;DrA@-? zU>PSCCF+x?Tv96*)kNi1%h`wZ7%@o=u$h*ev2w|qs<>`N=e*}$m@nmA9sAj>%8Jh* zPIw$=Gu-<_HCt@T5!xK)LFEP-J=~5VdPitK3dR{xFp$%1XTwF7KtL|$p0b&M;aP5y z^xv|Xn%R*}b*=Yo^wJ}nM3~KS#sr-PN3wZ=rHu2woda8%gwRtqb1=NhU6Sd{#_i}$ z@rqZvn9mg^z4L`gUPIcY+I_!%b7g6D(O+2YJwtwZ>{tH*+plS!19TZ2$&ip}yJd@} zd>7;(QGFB8aZwL@6=z?AHz3sPrzXQ1*=q$=J6$o?0k;i!_O?NF4VAYB%Ycu9CBr9U zXUa&ynpR;zk|vKK?H5dVGmZSBdkL?yY;yg8*fx*R3?elKiA%E4c zw_5T92G3|DDMk;;NqGgY%b?k!D|a*egl3NtpC?1%cd`X;AaDKBaqXWv*6y($&L2@v9O1@&hVEp7=9#d0qd?8 SQOp-8Nz!CEDe7X|Ag$l(Y^{y} literal 1854 zcmbVN&uddb5Z-x7Uebipv`t!3D_UPYSQJDQ@f2+f4YakGL|Z-7)>ir;O$vz=@uuMa z;D6JT2TzK4@*sE;Jb4geQ;pv@??)bu(CENyX1|%8oo{E~W_h`ClP+M1nhLx-Pl!dop~vO5-_H89MF-K7}?a3iHzLUe4_%}F0Gcz zbBpI;%di+RDOfQ$;-Nt_!A-4W{PAP_c7lnGj-sO#*(74>Zs`aRG1WI10V1aQve7DH ze(4D6Qp*KP2L1)rf|YN#MCCpn*Fg|dN5G~(qJy?+4B z7!0wc=_s>ER&CQ=ul3K2 zpDp{7JRS6Bk^4jLLA%U|h;~;F7|AC_CWz|uf(DBw$SKY~`p-$|IYm#NXA|5axIC6( z9s%|OSh^Qbt@EkTtYV%3o`Oo=#@Ndk41&-q0w~gE8R9*LqW4UGF};L0S6ZC!5SwPe z8)zVJX;}Dzvih6_@X_A^ZI4@Xo1Kn)fcGOKB*VQaR=T)UEIax!bz_ffkhd1A+YU^* z$W!IR kzfJ^))icQ%&hz|_Nju@O^Q`?#GU4weZSEx{3_T*9Kjwa|;{X5v