From 676782bc3af8d266b67bbc35b7d791cd8c703aee Mon Sep 17 00:00:00 2001 From: Aaron Griffin Date: Wed, 30 Aug 2006 05:32:35 +0000 Subject: [PATCH] Initial import git-svn-id: http://phraktured.net/archiso@1 00a9fe69-e71b-0410-bb23-df0e5024db41 --- archlive_hook | 64 ++++++ archlive_install | 11 + base.packages | 90 ++++++++ default-config/boot/grub/help.lst | 14 ++ default-config/boot/grub/menu.lst | 22 ++ default-config/boot/grub/more.lst | 21 ++ default-config/boot/help/bootexisting | 23 +++ default-config/boot/splash.xpm.gz | Bin 0 -> 8371 bytes default-config/etc/arch-release | 1 + default-config/etc/archiso/getshell | 8 + default-config/etc/fstab | 9 + default-config/etc/group | 19 ++ default-config/etc/inittab | 16 ++ default-config/etc/issue | 2 + default-config/etc/pam.d/su | 6 + default-config/etc/passwd | 7 + default-config/etc/rc.conf | 22 ++ default-config/etc/rc.d/archiso | 66 ++++++ default-config/etc/shadow | 7 + default-config/etc/sudoers | 2 + mkarchiso | 285 ++++++++++++++++++++++++++ mkarchiso.conf | 11 + mkinitcpio.conf | 54 +++++ modules.ARCH | 9 + modules.beyond | 7 + other.packages | 0 26 files changed, 776 insertions(+) create mode 100644 archlive_hook create mode 100644 archlive_install create mode 100644 base.packages create mode 100644 default-config/boot/grub/help.lst create mode 100644 default-config/boot/grub/menu.lst create mode 100644 default-config/boot/grub/more.lst create mode 100644 default-config/boot/help/bootexisting create mode 100644 default-config/boot/splash.xpm.gz create mode 100644 default-config/etc/arch-release create mode 100644 default-config/etc/archiso/getshell create mode 100644 default-config/etc/fstab create mode 100644 default-config/etc/group create mode 100644 default-config/etc/inittab create mode 100644 default-config/etc/issue create mode 100644 default-config/etc/pam.d/su create mode 100644 default-config/etc/passwd create mode 100644 default-config/etc/rc.conf create mode 100644 default-config/etc/rc.d/archiso create mode 100644 default-config/etc/shadow create mode 100644 default-config/etc/sudoers create mode 100755 mkarchiso create mode 100644 mkarchiso.conf create mode 100644 mkinitcpio.conf create mode 100644 modules.ARCH create mode 100644 modules.beyond create mode 100644 other.packages diff --git a/archlive_hook b/archlive_hook new file mode 100644 index 0000000..d0c31f0 --- /dev/null +++ b/archlive_hook @@ -0,0 +1,64 @@ +# vim: set ft=sh: +run_hook () +{ +#Big Fat TODO... we need to add possible boot 'cheatcodes' +# as is common in most livecds. However, most of these can be handled +# in real userspace (early userspace only needs to load the squashfs +# image. That is _all_. Others will be handled in a custom rc.local/rc.conf + + #This is going to get brutal... + + if [ "x${ramdisk_size}" = "x" ]; then + ramdisk_size="75%" + fi + msg -n ":: Mounting tmpfs, size=${ramdisk_size}..." + mount -t tmpfs -o "size=${ramdisk_size}" tmpfs /tmpfs + mkdir /tmpfs/bootcd + msg "done." + + squashfound=0 + msg -n ":: Scanning for boot cdrom device..." + for cdrom in /dev/cd/*; do + if mount -r -t iso9660 "${cdrom}" /tmpfs/bootcd >/dev/null 2>&1; then + if [ -e /tmpfs/bootcd/archlive.sqfs ]; then + squashfound=1 + msg "${cdrom}" + break + fi + fi + [ $squashfound -eq 0 ] && umount /tmpfs/bootcd >/dev/null 2>&1 + done + + if [ $squashfound -eq 0 ]; then + echo "ERROR: cannot find booted cdrom device, cannot continue..." + exit 1 + fi + + msg -n ":: Mounting squashfs image..." + /bin/modprobe -q squashfs >/dev/null 2>&1 + mkdir -p /tmpfs/squashfs_root + if ! losetup /dev/loop0 /tmpfs/bootcd/archlive.sqfs; then + echo "ERROR: Cannot mount loop device /dev/loop0...aborting" + exit 1 + fi + mount -r -t squashfs /dev/loop0 /tmpfs/squashfs_root + #mount.full -r -t squashfs -o loop /tmpfs/bootcd/squashfs_image /tmpfs/squashfs_root + msg "done." + + msg -n ":: Mounting root (union) filesystem..." + /bin/modprobe -q unionfs >/dev/null 2>&1 + mount -t unionfs -o dirs=/tmpfs=rw:/tmpfs/squashfs_root=ro,debug=0 none /real_root + msg "done." + + if [ -d /proc/sus/dev/cdrom ]; then + echo 0 > /proc/sys/dev/cdrom/lock + echo 1 > /proc/sys/dev/cdrom/autoeject + fi + + msg ":: Stopping udevd" + udevpid=$(/bin/minips -C udevd -o pid=) + [ "x${udevpid}" != "x" ] && /bin/kill -9 $udevpid + #Yep, we're bailing out here. We don't need kinit. + msg ":: Passing control to Archlinux Initscripts..." + exec /bin/run-init -c /dev/console /real_root /sbin/init ${CMDLINE} +} diff --git a/archlive_install b/archlive_install new file mode 100644 index 0000000..be2f5cc --- /dev/null +++ b/archlive_install @@ -0,0 +1,11 @@ +# vim: set ft=sh: +install () +{ + MODULES="cdrom ide-cd ide-core ide-generic unionfs squashfs iso9660 $(all_modules '/kernel/fs' | grep -v "nls") " + BINARIES="" + FILES="" + add_binary /bin/mount /bin/mount.full + add_dir /real_root + add_dir /tmpfs + SCRIPT="liveiso" +} diff --git a/base.packages b/base.packages new file mode 100644 index 0000000..1564e49 --- /dev/null +++ b/base.packages @@ -0,0 +1,90 @@ +bash +bin86 +binutils +bzip2 +coreutils +cpio +cracklib +db +dcron +dhcpcd +dialog +e2fsprogs +ed +elinks +file +filesystem +findutils +gawk +gcc +gettext +glibc +grep +groff +grub-gfx +gzip +initscripts +iputils +jfsutils +kbd +less +lftp +libpcap +libusb +licenses +lilo +lshwd +lsof +lzo2 +mailx +man +man-pages +mktemp +module-init-tools +nano +ncurses +net-tools +netcat +netkit-telnet +nmap +openssh +openssl +pacman +pam +parted +pciutils +pcmciautils +pcre +perl +popt +ppp +procinfo +procps +psmisc +python +raidtools +readline +reiserfsprogs +rp-pppoe +sed +shadow +squashfs +sysfsutils +syslog-ng +sysvinit +tar +tcp_wrappers +tcpdump +udev +unionfs +unrar +unzip +usbutils +util-linux +vim +wget +which +wireless_tools +wpa_supplicant +xfsprogs +zlib diff --git a/default-config/boot/grub/help.lst b/default-config/boot/grub/help.lst new file mode 100644 index 0000000..4018a27 --- /dev/null +++ b/default-config/boot/grub/help.lst @@ -0,0 +1,14 @@ +# Help files must be exactly 23 lines long. +timeout 60 +default 0 + +title Back to main menu +configfile /boot/grub/menu.lst + +title HOW-TO: Boot an existing system +cat /boot/help/bootexisting +pause Press enter to continue... + +title HOW-TO: Do some other shit +cat /boot/help/bootexisting +pause Press enter to continue... diff --git a/default-config/boot/grub/menu.lst b/default-config/boot/grub/menu.lst new file mode 100644 index 0000000..4650a92 --- /dev/null +++ b/default-config/boot/grub/menu.lst @@ -0,0 +1,22 @@ + +#TODO add options + graphical stuff +timeout 30 +default 0 +color light-blue/blue black/light-grey +splashimage=/boot/splash.xpm.gz + +title Boot ArchLive +kernel /boot/vmlinuz26 lang=en locale=en_US.UTF-8 ramdisk_size=75% +initrd /boot/archlive.img + +title Shutdown the Computer +halt + +title Reboot the Computer +reboot + +title View Help... +configfile /boot/grub/help.lst + +title More Options... +configfile /boot/grub/more.lst diff --git a/default-config/boot/grub/more.lst b/default-config/boot/grub/more.lst new file mode 100644 index 0000000..1fe37fc --- /dev/null +++ b/default-config/boot/grub/more.lst @@ -0,0 +1,21 @@ +timeout 60 +default 0 + +title Boot Existing Linux Install +root (hd0,2) +kernel /vmlinuz26 root=/dev/hda1 ro + +title Boot Existing Windows Install +rootnoverify (hd0,0) +makeactive +chainloader +1 + +title Install GRUB to HD0 +root (hd0,0) +setup (hd0) + +title Run Ranish Partition Manager +kernel /boot/ranish/part.exe + +title Run memtest86+ +kernel /boot/memtest86+/memtest.bin diff --git a/default-config/boot/help/bootexisting b/default-config/boot/help/bootexisting new file mode 100644 index 0000000..1c27625 --- /dev/null +++ b/default-config/boot/help/bootexisting @@ -0,0 +1,23 @@ +This is a helpfile + +Hopefully grub will make this happy.... + + + + + + + + + + + + + + + + + + + + diff --git a/default-config/boot/splash.xpm.gz b/default-config/boot/splash.xpm.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f128bf9132a70f660f141227f5fc1c59c1f6f41 GIT binary patch literal 8371 zcmc(i^yN#I@;mwW*f$>KJpH& zT6ra0-DjPrUvOe-8^_w0*Spd>he*Q@Lg+K#KY9#_@)RT>I{&kzO!sl@9Zv$=!&ddV zah=J@mpbFaEpXXLv+JdsJ^1aC`k%dkv*pwF>vMe1eMd3k#=9FUS`h^49gYwXtx61#vKMo$C`Rmg7<@LqJEB|X< zW4qPKxL>zdT^m)alew#t@V3k2g{oiuWt3hg8*rKHgCk3?lV`@)SA!d`0q40uwVxAnX$-^{%QaLkklC+;74H}5?GQu ziS589M-$QAyj1I8f_%a-<3FRYH}pcCB&iTURpmBv?`vFoXc8`&ka^=9g7mwvT{Q$e zgfRj1_p3uOy<_Cuk&fi}VvhSlM)(y0_tdZJ#t4BpEVTx=mEcEzgBN%Jr3u1>7+S%(GlIB-gWs`qU>&1-{jPQBmLA|txD}EF!6X+100yUk+mrws z5kg2zq)vlOahy1u@q8aMbNWSN3O;nccO0LJp@9+E5avWAL1M?lJ34mEvk@gPg?FICP=t)&Xi{k1 z08_XKlpZ-FY;F?6h@I&`4`#jP?mBpfNu0Hg67j`zbj;s+Ewm59;jZe)6&YoM%OtIO zebo5@xqWVdJ=|~4Dp9HhM_++moNq67V~jd@qZ2Zuew7b~|9B0ntLUo@+I$+jRtgzP zGY!U#8jWK^3Rmu&^+<>S^y)E)6Bl$R@YjWe@Y7rz^TF&y8evB(wh-?S z1l>Sn5~@MV3dKn*x~dJS{0Nm3`gdp*rvftLPJhVd?6|hce6eJNiow`KvJ%y<@j)tG znTxv^T_C{pd+Ld$EK~@_=DC1|kc}EH&r7}QTrv-`@$4M(`Aa+|DC2nx#%3p9?;df< z!+Gqazej}{<~Vs5XI+a=OrB>2Om7R(@dYKqjLNzg$Wqabkjl!gpr8<>^x`NBm>)(RLXGI7S&5=PAc5%}p{9gR z?m_IyI~F>=m`-SL5LY1|pts`~V_ztx;yhxWM#Qa;AVzI!zMg(Se6AUd*{KbBqeeoO zsvr!h)O(>yeqV(Z;w=xQ<4X~N9&aiLaXsgIirieHr{hbbfgbA*(rUo_akwaX+UE;AcQVx7_)C4$bXJ{Mmg(Q4pHTn-dK?ej9$` zmuE6+@jFkw)6`&}Xmtlc*Fx4PvH67n-yHiqz62vfA$;+mQce{in6 zl()f6$$#)v35TE~B8>GIaY;_|`d1b7@!7c6`vVugkS>_iyP)X0!LBil#0%1ULrW0n zTm{VQc^a2eB5l?gYer`MhOh$I@o%?Uy9h7dk2a*W@w#LgYf1dU7#LqGoK@tsSi5SE zU)y+WLcPK$)@@|G!U(_^G0bSIbQsuJsg`%s8^|w3LAURc2u?q7)xxGeV<#8k@Qrx_ zo6j=|ZC7XGv7gjg`pMs8tq&r7wWb6_?I|W(h_V*%2y^%*5WxU@36{1W_{?1xlGaFPpZ{> zf2cY?FgdJH0sSoCNdMrt#NiYtN1tzHB(=fJs7~~73R#A(8C%dGMcYH3*ST%s)-5T7 z(BtTO)qCZWtH%}>FD~^bLl8mx#LJS!YMg%?Ugf0dtDWokCaO>p^1e2i4Cp)mJ)z#r zy)3zjVi<5W2$f#6TC*yWU4<*ORzma^roEmDD>p=JLcFtO6CEB*32#Q9N{mBKT`#`h zHdgeMYZZDyv#j z%JR`frgLADJD*T~kkJ1t++;9BF{ar#nd+p7+{unAU$SF=7g{FoR=uynN3TGe?a&g3 zDq8(Z;pD+g4d0gaBFUMhA!4ee8ox_ZThaYRYFW5Xa`DyDFuqcGn0$`o!0K0ow>eXm zPm8=fP_MlVE_$u1I2LnxraI|Hqho0*cZws^Epr=8m z3FY&5Z_=If0Ur(zUGNW7bCZ_bm`y){mkF|%9; z_412_FPR)j*A)8oNzrcWc<31E6wQ^}bFw#^Mm_9Vhdn!Xtj3b<2vb9kp=+;SM(n7Z zJ>il5T6Sy{RbEl1o?agt9CJUmehTg7iMmM=jNXUj7ib`Cq_Njes?EaJdtTHq> z@hfjnrzLy7!3x!NW14~|&@ZdR_4cG;DB1LZS?vVPskTa|t}?g$o6^=%UTAXA>5O_S zGDxydO-PKpAtI8;y5`AF^M%Uk0~NWC{0@fv`NrEJZJw%*fcj{BUu3EIehF4zaY%=p z*f0gdc2X=+)6FnrBD_PJ50knzMRme0e-$vLOR0(dEa(d4VK5cBwr=S>#vi`sHU(KKxFL@;o>9R z$Kyt};pj%2{2#JB^mboJ?qM?hf9Qa=P0lys8F;)Z!?)~CIQo0=$}FfQb!o>Rk<5i|Tz{se9zze0=Bf0z1TcQ)XW?$}(p4wQ zM_ty!so02%NVjlr%{0Ipu7+has^4(BeycK5KRW9_F;ji@syE#NZQ@cHz{l|kRQwUT z@l3?xy@)akNwY_p!WK6l#;HfJ6g#g8q|NvWF=|xyaafh?3;Vzz-e8w~DdFOuW>Hcz z=tnUy&ySy6U4`$z^`w^#S-p8rOEZK$>duogZ*{YpN~@Hp{!#8a^0LNW<@2p&TA~Rg zhnpk}#SNXWj(D)r4PB^hW)ov0I@-h1&<>6K;xBZ+QvphrCVFOo2666lYTX0U2 zjU+=Bsu}_&3Lku%M#_CcNF_}-dYH*j30&$&?foX_^ZRh>Ha7>m^6mW!9g@GNY~-@| z3_-}vG>4FA5;uqerzF{0?wP^IUxP2()7b15KofnhgP$>0Nx)d4QZK*;z@+1T30-Yu zX-{Zz!gas&1m?Xu9Q(673AW(P7f&)ICcSvoxNnACa*i=p>UC!%0Y)CZIc-B%(&EjxE_E@D%#Q{CDoA96D_y<8>{i~iZqTMu2hAm{yBj>yD+9E~-b-^UW`GXa1J_Mv$!0?RcODHy7<7Mj7a>7Y zo%9moonq$7VUlqtwuk|&h|hm0pNKsZ<&A_uj^9or9?0-Y2ELkJbZ!ERim<+U5vI&L zpB>)@ibI%D@zKnplg+AsK<=LDG_K!FQl?=R0|hHj^}xEb2^bdtd^(KVUsS_7eUn+W znk%3gi6xWl!R$aj&=FGJ`OfsN-#ReUu;b!d?mKap0sLPLldua_7aI3u0NU+Hb#`~n zgMoLHj#Pzj;xN31d?rXxi{~u%Wa~ehzS;U<8>SJ7m7sQ^`pDo(J^Y^w7nE#h;v>If zD7O4B10O(J|3x;GGlXI~;?iJ7%zOC{@N?wLzWM)Q!hb9UjNT_y{}2O=CgQ1oSVPO`sq(Ox_UO;<!$_Kf~@p2ppDC;U$bX#X`Sxr*tAu+AV2k$GdOs zIJVL3F0%OLVwJu72EXbco`ZXv<+9PtlB4iG=h$V#-7YAgL?yE;xXxnA6*O+p7_bbY zx&ykS`rb&IPnh8b1%Qne2ny6PyNh$3$KI950G5;~9segVRR2v<12#T^mJs`IiZCv{ z(f^5dOcEM&x3CW^D}$}u!2f^2G?dNNcVtNUM2&>ind*$D6I+4^#&o1nK}u&k5}c441TBbqLn?qPx@#4z zAF{9)bZQD+Rj27hSA$tqI&%Fl9!6t$K)@tJlBfyG?yu|Ce}vL8!>z(lq9jLQf|e74 zo8ximWQ?s*%xH2Tm&C0r#r>85L4h!54dQ%e-x)7*urRScC+>1cmX(8CRJ@@0?6Jf@ z5Awp|=dPz77GL>PRrSq~ZQzQT3LfG!nUPn=cAR>w{K|fd?nD)r3d4;;FnWp?)5N%E zKTeJPwWia*u;*deNk@~7pj+_PIT}7eZeT4W)2BBc!n0fMag;e4IL^*&;@#{)vS=Zu z%OBnpGf5~MB!RSw6-Ko1l;VwNo~XwH4u2dt@n@6hOkq%{AX>PMB|7|YPVd!H?zYlE z-u@$26WBa@or86#qWQi-y^r2IAN=Me-24b%HO4zM)Q$cQ1v0x*w7YtUzgF=Ge{I9- zo}6TH+Q??_6X7-@k=?AtQ-AjD^|?U{+~+_yA|NHW3A#ejrAE1RG~Aut`10rUQ`{8b%itVz$i4VWBh&V+8Ex7rkYmakhb-Z4P7 z_tMQDd#W_Nzj2w1TWtS%{^Q3TClZq#oc>9MUbVixE>3n@R&nr)fQ1qi_!4}tDUp`- z=#SdlfU}t6o0|7v@cezL1n56BvGiYq*fhJ^FSCCVwuy^C&1XxjsFRq9%U4jvmT#1z zs7+_X4|nR?SC(>{!d&=P-=c!(51`sKW2p$xzfU(6<M`wmZrg%Ve z_tE-@(yKA!_GZbe9R$WJJq^zL3FEB64Ye(}_N5}+J1Zh8Nb+||39R3>+o#op(P=7$ zV5)A(@d5V!KQW7!Ys1eExEfJ5#|}xS`&^$fVrgh4jac%$DA^_rzX#= zfsXmW$m%nA0Ex)TtCwN-t7ST{@57x{g`OtyJ0E^iZkPN>Zq7AUp)eyuE3NJeWI$=n zK1(Rp`L_njwSTPfX-C+&n$4>%OL7-kSx}kjxT)Q>S9_Qt@pfr7QV5TUUpU4(M+08} z1g#dATSd_EZw;qRD3 z|LM0x@~MVTRf+y-d+$%O%y$oL6vQ8f(s#?vu3+e3b)35}xD6jp=I0t}?4+K?!ItwD z0`d(EB!2b0Sazi^V-3z2(HajvixL~Yay#?SkR2FWA2KfBpujqGr91}-(? z*fz3r2Eb0N@{%t&qz2crJ*EySj;gl2m~@uTtL1plQUkt00J-i@I(<#)LN7Abr+>*d zTl|Cy$#8PTI%_K%}MbtnIZberTwr(QJ@w9|-vn|z&Iy>H@ z26agn@4G}+ZOc3g%ay-MZq5ct8FgG}09+i&0ZHlQvmp2!SNxaLkKP|FtD1>aT|~|j zAcv%+yR1?#k`hAuH!IVmW=~5cm$_zB$`r-0w9u_QtE-~Zm(?3xE_7>e&#HIaI{)an zOuX%SGi~Km|a=NzO0Fp?5(IVECZRr+A=%LC`gQ_dcXIB*8Q=Bwi3XeijvVkxE zeI;ue4CZ_ury&kwC&WOF>&ZbbG}UT2oEGYlqhgm0m@>uJ{109JkdnnUja;L*Sa%$_ z=KxaqAYV>rjlAxmccp_?`)?N_q=I1_thz%(g5O0`jky; zB2S?Wr&5!u*FQQHRPj?SDaWCl`1DFEd48AS6sKG~R53B~Q|m2pyTU!?-p;R6lDrEk z+mMP@m#?q>*|>}0>{uI2^Q8lQqrh7vx3Tu&uu}Yw*ZX1c8C&J35PtDgr^RfLRKgFe z{l-njuaA~gI-E_7#V?}|r2KM{1-@FFHNt<#Y@GE`cZCb!IaC-c>&wH_2GB<=oPswh ztJ|o{(UgtFo|(};)kQa~D)hR}*CO5fHy&g6D^f91&*wwE0ewP+E+ej-&Hkvb+l^Qy zZ`Lo|s@#pe%2T{W6Yy2o)((HZ`@AAVxs~Nb;0Z^bL2tVtUZcMl?JFy$QbA$4uGYF_ z$Q1TIw@{|yMUw7l@!MMG_~avPp2eo*2YbU`4&AmB-uZHTk8bi|x$LRk{8Yk3n(bNG zTQHi|w?Zv2n~tkfgSv4{P7+{}W}KU)1(N4wb?z=r>gK}ZR| zEfw=pIyN3^ZDwI>B=&ZWz|T)CEt?H~gL3FPP=AWs*?FO8G>FA%A}^6|q%2jAkUJKv zI*Ado&FAof%!do3xl5eTTZ6_~=RU|x7y7<)appWWT+>s__BNk*VxuPPYUjvNh?^1V zsZW=Kckk}s}P@}jb zwdc=L;cyL;uzFDV6Md~LIm65iExbO}8VjiZUd0GR&}iH^{bA{`%dGH@X(ja7%S^zy zd#L`yB|Xm)PO8ol(YX$B?Y+Je0s3GPn3DOeOxI;w@mB?ZAb|FeW4Sr zr0+sPvHR+|nl1Ua6~XGxe+nWQmW~GrR|+u;6o>emNtj3MCtYfiXP)VUV}?$eznpr| z);#+QB|qGZAwT_OEA5vMHv|4;%$L7zZnFNm)$6GlRTPd_w3fC>IcgXS6VEbUJtTqr z6bHW64?X`jb!+ z0ZF96Z=FVQ5_gTo-i%bu)vdhRjot`LaK`LlB2lz#*U|BhI?Uh_q_nYnX=QEOWY_lG zsq?+gxXq*Px9>lB&^75%bG!- zQe|glySEpW+*7PepmrYyfyBF=+(ynNAJwezAkr}4^OJdcs^H5-*Na2wfF>oo8`6JLi9$7h3~k zv*L?0yM5LDw(>;ngh_mXr6DOIwMrTvf zR75jn)}lA>J|XIo4B~FO+2iNraZgG#M6y`eS-X2y_Y<7I?JKQO{p5Y|%V}-G6RTe* ziHDs0qAPR|>#Xb7zafsCEDP7=^!4+l3X<-#6zJmf_U+$gIAd^SG#OumF8l$ELainw~IeOiTmL8a82K(+n|nCsTRyDcdbQ;q`JWehyK z!baWbc;UMikOUGm(SeRPj};7}1m7K!o={ DQj@TU literal 0 HcmV?d00001 diff --git a/default-config/etc/arch-release b/default-config/etc/arch-release new file mode 100644 index 0000000..20ba0f6 --- /dev/null +++ b/default-config/etc/arch-release @@ -0,0 +1 @@ +Arch Linux Live ISO 0.X (Sniklefritz) diff --git a/default-config/etc/archiso/getshell b/default-config/etc/archiso/getshell new file mode 100644 index 0000000..c61c56c --- /dev/null +++ b/default-config/etc/archiso/getshell @@ -0,0 +1,8 @@ +#!/bin/sh + +. /etc/archiso/functions +shell="$(cmdline_param shell)" +[ -n "${shell}" ] && shell="/bin/bash" +[ ! -e "${shell}" ] && shell="/bin/sh" + +exec ${shell} diff --git a/default-config/etc/fstab b/default-config/etc/fstab new file mode 100644 index 0000000..74c69fd --- /dev/null +++ b/default-config/etc/fstab @@ -0,0 +1,9 @@ +# +# /etc/fstab: static file system information +# +# +none /dev/pts devpts defaults 0 0 +none /dev/shm tmpfs defaults 0 0 +tmpfs /tmp tmpfs defaults 0 0 + +/dev/cdrom /bootcd iso9660 ro,user,noauto 0 0 diff --git a/default-config/etc/group b/default-config/etc/group new file mode 100644 index 0000000..bab2ef8 --- /dev/null +++ b/default-config/etc/group @@ -0,0 +1,19 @@ +root::0:root +bin::1:root,bin,daemon +daemon::2:root,bin,daemon +`sys::3:root,bin +adm::4:root,daemon +tty::5: +disk::6:root,arch +lp::7:daemon +mem::8: +kmem::9: +wheel::10:root,arch +ftp::11: +mail::12: +smmsp::25: +audio::92:arch +optical::93:arch +nobody::99: +users::100:arch +slocate:x:21: diff --git a/default-config/etc/inittab b/default-config/etc/inittab new file mode 100644 index 0000000..d222983 --- /dev/null +++ b/default-config/etc/inittab @@ -0,0 +1,16 @@ +id:4:initdefault: + +rc::sysinit:/etc/rc.sysinit +rs:S1:wait:/etc/rc.single +rm:2345:wait:/etc/rc.multi +rh:06:wait:/etc/rc.shutdown +su:S:wait:/sbin/sulogin -p + +c1:2345:respawn:/sbin/agetty 38400 vc/1 linux +c2:2345:respawn:/sbin/agetty 38400 vc/2 linux +c3:2345:respawn:/sbin/agetty 38400 vc/3 linux +c4:2345:respawn:/sbin/agetty 38400 vc/4 linux +c5:2345:respawn:/sbin/agetty 38400 vc/5 linux +c6:2345:respawn:/sbin/agetty 38400 vc/6 linux + +ca::ctrlaltdel:/sbin/shutdown -t3 -r now diff --git a/default-config/etc/issue b/default-config/etc/issue new file mode 100644 index 0000000..e90c245 --- /dev/null +++ b/default-config/etc/issue @@ -0,0 +1,2 @@ +Arch Linux Live ISO 0.X (Snicklefritz) (\n) (\l) +Default user: arch diff --git a/default-config/etc/pam.d/su b/default-config/etc/pam.d/su new file mode 100644 index 0000000..1bac343 --- /dev/null +++ b/default-config/etc/pam.d/su @@ -0,0 +1,6 @@ +#%PAM-1.0 +auth sufficient pam_rootok.so +auth sufficient pam_wheel.so trust use_uid +auth required pam_unix.so +account required pam_unix.so +session required pam_unix.so diff --git a/default-config/etc/passwd b/default-config/etc/passwd new file mode 100644 index 0000000..6f69ed0 --- /dev/null +++ b/default-config/etc/passwd @@ -0,0 +1,7 @@ +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/bin: +daemon:x:2:2:daemon:/sbin: +mail:x:8:12:mail:/var/spool/mail: +ftp:x:14:11:ftp:/home/ftp: +nobody:x:99:99:nobody:/: +arch::1000:100::/home/arch:/bin/bash diff --git a/default-config/etc/rc.conf b/default-config/etc/rc.conf new file mode 100644 index 0000000..ea21295 --- /dev/null +++ b/default-config/etc/rc.conf @@ -0,0 +1,22 @@ +# +# /etc/rc.conf - Main Configuration for Arch Linux + +LOCALE="en_US.UTF-8" +HARDWARECLOCK="UTC" +TIMEZONE="America/Chicago" +KEYMAP="us" +CONSOLEFONT= +CONSOLEMAP= +USECOLOR="yes" + +MOD_AUTOLOAD="yes" +MODULES=() +USELVM="no" + +HOSTNAME="archlive" +lo="lo 127.0.0.1" +INTERFACES=(lo) +ROUTES=() + +#TODO add more auto-daemons here, especially the live-cd specific stuff +DAEMONS=(syslog-ng network crond) diff --git a/default-config/etc/rc.d/archiso b/default-config/etc/rc.d/archiso new file mode 100644 index 0000000..6acf18a --- /dev/null +++ b/default-config/etc/rc.d/archiso @@ -0,0 +1,66 @@ +# vim: set ft=sh: +cmdline_param () +{ + while param do; + case "${param}" in + $1=*) echo "${param##*=}"; break ;; + *) continue ;; + esac + done < read /proc/cmdline +} +. /etc/rc.conf +. /etc/rc.d/functions +. /etc/archiso/functions # above goes in this file... + +do_mounts () +{ + #iterate over all block devices + stat_busy "Scanning local block devices" + for dev in $(echo /sys/block/*/dev /sys/block/*/*/dev); do + + devname="/dev/$(echo ${dev} | cut -d'/' -f3,4 | cut -d'/' -f1)" + mountpt="/mnt/$(basename '${devname}')" + mkdir -p "${mountpt}" 2>/dev/null + mount ${options} "${devname}" "${mountpt}" >/dev/null 2>&1 + + fstype=$(awk '{ if ($1=="${devname}") { print $3" "$4;q }}' /proc/mounts) + fstype="${fstype%%,*}" + case "${fstype%% *}" in + *fat*|ntfs|*dos) options="user,exec,uid=0,gid=100,umask=00070" ;; + *) options="users,defaults,exec" ;; + #TODO handle 'sync' on usb devices... + esac + + echo "${devname} ${mountpt} ${fstype} ${options} 0 0 #configured by archiso" >>/etc/fstab + done + stat_done +} + +do_locale () +{ + #copy from rc.sysinit - use cmdline_param locale (or lang ?) +} + +do_swap () +{ + #Archie finds a pagefile.sys for windows/dos machines... may add later + stat_busy "Finding existing swap partitions" + swapdev="$(fdisk -l 2>/dev/null | grep swap | cut -d' ' -f1)" + if [ -e "${swapdev}" ]; then + swapon ${swapdev} + echo "${swapdev} swap swap defaults 0 0 #configured by archiso" >>/etc/fstab + fi + stat_done +} + +do_homedir () +{ + stat_busy "Scanning for existing HOME directory" + user="$(cmdline_param homeuser)" + for hdir in $(find /mnt -name "home/${user}" 2>/dev/null); do + mkdir -p "/home/arch/" + # break after the first success... + mount --bind "${hdir}" "/home/arch/" && break + done + stat_done +} diff --git a/default-config/etc/shadow b/default-config/etc/shadow new file mode 100644 index 0000000..39e1da7 --- /dev/null +++ b/default-config/etc/shadow @@ -0,0 +1,7 @@ +root::99999:::::: +bin:x:0:::::: +daemon:x:0:::::: +mail:x:0:::::: +ftp:x:0:::::: +nobody:x:0:::::: +arch::12922:0:99999:7::: diff --git a/default-config/etc/sudoers b/default-config/etc/sudoers new file mode 100644 index 0000000..7121a22 --- /dev/null +++ b/default-config/etc/sudoers @@ -0,0 +1,2 @@ +root ALL=(ALL) ALL +%wheel localhost=(ALL) NOPASSWD: ALL diff --git a/mkarchiso b/mkarchiso new file mode 100755 index 0000000..219147f --- /dev/null +++ b/mkarchiso @@ -0,0 +1,285 @@ +#!/bin/sh + +CONFIG="$(pwd)/mkarchiso.conf" +CPIOCONFIG="$(pwd)/mkinitcpio.conf" +DEF_CONFIG_DIR="$(pwd)/default-config" +QUIET="y" + +SKIP_INSTALL="n" +SKIP_SQUASHFS="n" +SKIP_BOOTIMG="n" +SKIP_ISO="n" + +PKGDIR="." + +APPNAME=$(basename "${0}") +ALL_ARGS="${@}" + +usage () +{ + echo "usage ${APPNAME} [options] working-directory imagename.iso" + echo " -c CONFIG Use CONFIG file. default: /etc/archlive/mkarchiso.conf" + echo " -i CPIO CONFIG Use CONFIG file for mkinitcpio. default: /etc/archlive/mkinitcpio.conf" + echo " -s a,b,c Skip creation section. Valid sections are:" + echo " install : This section installs all packages." + echo " squashfs: This section creates a squashfs root image" + echo " bootimg : This section creates a boot image." + echo " iso : This section builds the final iso." + echo " -v Verbose output. Default: no" + echo " -h This message." + exit 1 +} + +skipopts () +{ + for i in $@; do + case $i in + install) SKIP_INSTALL="y" ;; + squashfs) SKIP_SQUASHFS="y" ;; + bootimg) SKIP_BOOTIMG="y" ;; + iso) SKIP_ISO="y" ;; + *) echo "invalid section '$i'"; usage ;; + esac + done +} + +while getopts 'c:i:n:s:pvh' arg; do + case "$arg" in + c) CONFIG="$OPTARG" ;; + i) CPIOCONFIG="$OPTARG" ;; + s) OLDIFS=$IFS; IFS=, + skipopts $OPTARG + IFS=$OLDIFS ;; + v) QUIET="n" ;; + h|?) usage ;; + *) echo "invalid argument '$arg'"; usage ;; + esac +done +shift $(($OPTIND - 1)) + +if [ $# -ne 2 ]; then + usage +else + work_dir=${1} + isoname=${2} +fi + +if [ -e "${work_dir}" -a "${SKIP_INSTALL}" != "y" ]; then + echo "Working dir '${work_dir}' already exists, aborting..." + exit 1 +fi + +if [ -e "${isoname}" -a "${SKIP_ISO}" != "y" ]; then + echo "ISO Image '${isoname}' already exists, aborting..." + exit 1 +fi + +if [ -e "${CONFIG}" ]; then + source "${CONFIG}" +else + echo "Config '${CONFIG}' does not exist, aborting..." + exit 1 +fi + +if [ -e "${CPIOCONFIG}" ]; then + source "${CPIOCONFIG}" +else + echo "mkinitcpio config '${CPIOCONFIG}' does not exist, aborting..." + exit 1 +fi + +isoroot="${work_dir}/iso" +instroot="${work_dir}/install" + +if [ -z $FAKEROOTKEY ]; then + echo "Switching to fakeroot environment" + fakeroot ${0} ${ALL_ARGS} + exit $? +fi + +_kversion () +{ + echo $(pacman -Ql -r "${instroot}" "${kernelpkg}" |\ + grep "/lib/modules/[^/]*/$" |\ + sed "s|.*/lib/modules/\([^/]*\).*/$|\1|") +} + +#Work-arounds for depmod core dumps.... I guess we could just ulimit for now... +_safepacman () +{ + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! pacman -Sf --noconfirm -r "${instroot}" $* >/dev/null 2>&1; then + echo "pacman failed to install '$*', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV +} +safe_install_pkgfile () +{ + if [ -e "${1}" ]; then + toinstall="" + echo " Installing packages:" + while read pkg; do + #skip packages listed in IGNOREPKGS + echo $ignorepkgs | grep "\<$name\>" >/dev/null 2>&1 && continue + + echo " ${pkg}" + toinstall="${toinstall} ${pkg}" + done < ${1} + _safepacman "${toinstall}" + fi +} + +_pacman () +{ + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! fakechroot pacman -Sf --noconfirm -r "${instroot}" $* >/dev/null 2>&1; then + echo "pacman failed to install '$*', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV +} + +install_pkgfile () +{ + if [ -e "${1}" ]; then + toinstall="" + echo " Installing packages:" + while read pkg; do + #skip packages listed in IGNOREPKGS + echo $ignorepkgs | grep "\<$name\>" >/dev/null 2>&1 && continue + + echo " ${pkg}" + toinstall="${toinstall} ${pkg}" + done < ${1} + _pacman "${toinstall}" + fi +} + +if [ "${SKIP_INSTALL}" = "n" ]; then + mkdir -p "${isoroot}" + mkdir -p "${instroot}" + + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! pacman -Sy -r "${instroot}" 2>&1 | grep -v "cannot open logfile"; then + echo "Error, failed to sync pacman... aborting." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV + + echo "Installing 'base' packages..." + install_pkgfile "${PKGDIR}/base.packages" + + echo "Installing _required_ packages..." + _pacman "memtest86+ unionfs unionfs-utils usbutils libusb pciutils squashfs-tools" + + echo "Installing custom packages..." + for fil in ${package_files}; do + #TODO search for file if not absolute... + echo " Installing packages from file '$fil'" + install_pkgfile "${fil}" + done + for pkg in ${additional_packages}; do + echo " Installing package '${pkg}'" + _pacman "${pkg}" + done + + echo "Installing kernel '${kernelpkg}'" + # fakechroot and depmod don't get along well. We'll do that stuff + # manually... + # TODO: fix fakechroot instead of working around it like a jackass + FAKEROOTSAV=$FAKEROOTKEY; unset FAKEROOTKEY + if ! _safepacman "${kernelpkg}" ; then + echo "pacman failed to install '${kernelpkg}', aborting..." + exit 1 + fi + FAKEROOTKEY=$FAKEROOTSAV + kernelver=$(_kversion) + kernelsuffix=${kernelver##*-} + echo "Kernel Version ${kernelver} (${kernelsuffix}) installed - installing modules..." + safe_install_pkgfile "modules.${kernelsuffix}" + + echo "Updating module dependancies" + [ "${kernelsuffix}" == "ARCH" ] && kernelsuffix="" + depmod -a -b "${instroot}" -v "${kernelver}" -F "${instroot}/boot/System.map26${kernelsuffix}" >/dev/null + find "${instroot}/boot" -name *.img -delete + + echo "Applying default configuration for the Arch ISO." + cp -rf ${DEF_CONFIG_DIR}/* "${instroot}" + + echo "Copyright (C) 2006, Arch Linux (Judd Vinet)" > "${instroot}/etc/copyright" + + echo "Creating initial device nodes " + rm -f "${instroot}/dev/console" "${instroot}/dev/null" "${instroot}/dev/zero" + mknod -m 644 "${instroot}/dev/console" c 5 1 + mknod -m 666 "${instroot}/dev/null" c 1 3 + mknod -m 666 "${instroot}/dev/zero" c 1 5 + + echo "Creating default home directory" + mkdir -p "${instroot}/home/arch" + + # Cleanup + echo "Cleaning up ISO root files..." + find "${instroot}" -name *.pacnew -name *.pacsave -name *.pacorig -delete + + kill_dirs="var/abs var/cache/man var/cache/pacman var/log/* var/mail tmp usr/include initrd" + for x in ${kill_dirs}; do + if [ -e "${instroot}/${x}" ]; then + rm -rf "${instroot}/${x}" + fi + done + + find "${instroot}/lib" -name *.a -delete + find "${instroot}/usr/lib" -name *.a -delete + + # this actually takes up alot of space... + for d in ${instroot}/var/lib/pacman/*; do + [ "$(basename ${d})" != "local" ] && rm -rf "${d}" + done + + if [ -e "${instroot}/boot" ]; then + rm -rf "${isoroot}/boot" + mv "${instroot}/boot" "${isoroot}" + fi +fi + +if [ "${SKIP_SQUASHFS}" = "n" ]; then + if [ -e "${isoroot}/archlive.sqfs" ]; then + echo -n "Removing old squashfs image..." + rm "${isoroot}/archlive.sqfs" + echo "done." + fi + + echo -n "Creating squashfs image. This may take some time..." + start=$(date +%s) + mksquashfs "${instroot}" "${isoroot}/archlive.sqfs" -root-owned > /dev/null + echo "done in $(echo $start $(date +%s) | awk '{ printf "%0.2f",($2-$1)/60 }') minutes." +fi + +if [ "${SKIP_BOOTIMG}" = "n" ]; then + kernelver=$(_kversion) + basedir=${instroot} + [ "${instroot:0:1}" != "/" ] && basedir="$(pwd)/${instroot}" + if ! mkinitcpio -c "${CPIOCONFIG}" -b "${basedir}" -k "${kernelver}"\ + -g "${isoroot}/boot/archlive.img"; then + echo "initcpio image creation failed..." + exit 1 + fi + + cp ${instroot}/usr/lib/grub/i386-pc/* "${isoroot}/boot/grub" +fi + +if [ "${SKIP_ISO}" = "n" ]; then + echo "Creating ISO image..." + mkisofs ${q} -r -l -b "boot/grub/stage2_eltorito" -uid 0 -gid 0 -no-emul-boot \ + -boot-load-size 4 -boot-info-table -publisher "Arch Linux " \ + -p "prepared by $NAME" -A "Arch Linux Live/Rescue CD" -copyright /etc/copyright \ + -o "${isoname}" "${isoroot}" +fi + +if [ "${qemu_test}" = "y" ]; then + echo "Testing image via qemu..." + qemu -boot d -kernel-kqemu -cdrom "${isoname}" ${qemuparams} +else + echo "Image completed: ${isoname}" +fi diff --git a/mkarchiso.conf b/mkarchiso.conf new file mode 100644 index 0000000..e2f521d --- /dev/null +++ b/mkarchiso.conf @@ -0,0 +1,11 @@ +# vim: set ft=sh: + +kernelpkg="kernel26" +packager_name="Archlinux User" + +package_files="" +additional_packages="" +ignorepkgs="devfsd hotplug pcmcia-cs" + +qemu_test="n" +qemuparams="" #"-vnc 1" diff --git a/mkinitcpio.conf b/mkinitcpio.conf new file mode 100644 index 0000000..5f19528 --- /dev/null +++ b/mkinitcpio.conf @@ -0,0 +1,54 @@ +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES="piix ide_disk reiserfs" +MODULES="" + +# BINARIES +# This setting includes, into the CPIO image, and additional +# binaries a given user may wish. This is run first, so may +# be used to override the actual binaries used in a given hook. +# (Existing files are NOT overwritten is already added) +# BINARIES are dependancy parsed, so you may safely ignore libraries +BINARIES="" + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in anyway. This is useful for config files. +# Some users may wish to include modprobe.conf for custom module options, +# like so: +# FILES="/etc/modprobe.conf" +FILES="" + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H ' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'modload' may be used in place of 'udev', but is not recommended +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +# This setup specifies all modules in the MODULES setting above. +# No raid, lvm, or encrypted root is needed. +# HOOKS="base" +# +# This setup will autodetect all modules for your system and should +# work as a sane default +# HOOKS="base udev autodetect ide scsi sata filesystems" +# +# This setup will generate a 'full' image which supports most systems. +# No autodetection is done. +# HOOKS="base udev ide scsi sata usb filesystems" +# +# This setup assembles an ide raid array with an encrypted root FS. +# Note: See 'mkinitcpio -H raid' for more information on raid devices. +# HOOKS="base udev ide filesystems raid encrypt" +# +# This setup loads an LVM volume group on a usb device. +# HOOKS="base udev usb filesystems lvm" +HOOKS="base udev archlive ide scsi sata usb fw filesystems" diff --git a/modules.ARCH b/modules.ARCH new file mode 100644 index 0000000..eb591b0 --- /dev/null +++ b/modules.ARCH @@ -0,0 +1,9 @@ +ipw3945 +madwifi-ng +ndiswrapper +rt2500 +rt2x00 +squashfs +tiacx +unionfs +wlan-ng26 diff --git a/modules.beyond b/modules.beyond new file mode 100644 index 0000000..0ad7d18 --- /dev/null +++ b/modules.beyond @@ -0,0 +1,7 @@ +ipw3945 +madwifi-ng +ndiswrapper +rt2500 +rt2x00 +tiacx +wlan-ng26 diff --git a/other.packages b/other.packages new file mode 100644 index 0000000..e69de29