commit de5992f86c2056da14903eeed2ba5a6db362f76d Author: simono41 Date: Mon Feb 26 02:41:29 2018 +0100 new-release diff --git a/.Conky.tar.xz b/.Conky.tar.xz new file mode 100755 index 0000000..5e254a6 Binary files /dev/null and b/.Conky.tar.xz differ diff --git a/.Xmodmap b/.Xmodmap new file mode 100755 index 0000000..7165949 --- /dev/null +++ b/.Xmodmap @@ -0,0 +1,248 @@ +keycode 8 = +keycode 9 = Escape NoSymbol Escape +keycode 10 = 1 exclam 1 exclam onesuperior exclamdown onesuperior +keycode 11 = 2 quotedbl 2 quotedbl twosuperior oneeighth twosuperior +keycode 12 = 3 section 3 section threesuperior sterling threesuperior +keycode 13 = 4 dollar 4 dollar onequarter currency onequarter +keycode 14 = 5 percent 5 percent onehalf threeeighths onehalf +keycode 15 = 6 ampersand 6 ampersand notsign fiveeighths notsign +keycode 16 = 7 slash 7 slash braceleft seveneighths braceleft +keycode 17 = 8 parenleft 8 parenleft bracketleft trademark bracketleft +keycode 18 = 9 parenright 9 parenright bracketright plusminus bracketright +keycode 19 = 0 equal 0 equal braceright degree braceright +keycode 20 = ssharp question ssharp question backslash questiondown U1E9E +keycode 21 = acute grave acute grave cedilla cedilla cedilla +keycode 22 = BackSpace BackSpace BackSpace BackSpace +keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab +keycode 24 = q Q q Q at Greek_OMEGA at +keycode 25 = w W w W lstroke Lstroke lstroke +keycode 26 = e E e E EuroSign EuroSign EuroSign +keycode 27 = r R r R paragraph registered paragraph +keycode 28 = t T t T tslash Tslash tslash +keycode 29 = z Z z Z leftarrow yen leftarrow +keycode 30 = u U u U downarrow uparrow downarrow +keycode 31 = i I i I rightarrow idotless rightarrow +keycode 32 = o O o O oslash Oslash oslash +keycode 33 = p P p P thorn THORN thorn +keycode 34 = udiaeresis Udiaeresis udiaeresis Udiaeresis diaeresis diaeresis diaeresis +keycode 35 = plus asterisk plus asterisk asciitilde macron asciitilde +keycode 36 = Return NoSymbol Return +keycode 37 = Control_L NoSymbol Control_L +keycode 38 = a A a A ae AE ae +keycode 39 = s S s S U017F U1E9E U017F +keycode 40 = d D d D eth ETH eth +keycode 41 = f F f F dstroke ordfeminine dstroke +keycode 42 = g G g G eng ENG eng +keycode 43 = h H h H hstroke Hstroke hstroke +keycode 44 = j J j J dead_belowdot dead_abovedot dead_belowdot +keycode 45 = k K k K kra ampersand kra +keycode 46 = l L l L lstroke Lstroke lstroke +keycode 47 = odiaeresis Odiaeresis odiaeresis Odiaeresis doubleacute doubleacute doubleacute +keycode 48 = adiaeresis Adiaeresis adiaeresis Adiaeresis asciicircum asciicircum asciicircum +keycode 49 = less greater less greater bar dead_belowmacron bar +keycode 50 = Shift_L NoSymbol Shift_L +keycode 51 = numbersign apostrophe numbersign apostrophe rightsinglequotemark grave rightsinglequotemark +keycode 52 = y Y y Y guillemotright U203A guillemotright +keycode 53 = x X x X guillemotleft U2039 guillemotleft +keycode 54 = c C c C cent copyright cent +keycode 55 = v V v V doublelowquotemark singlelowquotemark doublelowquotemark +keycode 56 = b B b B leftdoublequotemark leftsinglequotemark leftdoublequotemark +keycode 57 = n N n N rightdoublequotemark rightsinglequotemark rightdoublequotemark +keycode 58 = m M m M mu masculine mu +keycode 59 = comma semicolon comma semicolon periodcentered multiply periodcentered +keycode 60 = period colon period colon U2026 division U2026 +keycode 61 = minus underscore minus underscore endash emdash endash +keycode 62 = Shift_R NoSymbol Shift_R +keycode 63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab +keycode 64 = Alt_L Meta_L Alt_L Meta_L +keycode 65 = space NoSymbol space +keycode 66 = Caps_Lock NoSymbol Caps_Lock +keycode 67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1 +keycode 68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2 +keycode 69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3 +keycode 70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4 +keycode 71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5 +keycode 72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6 +keycode 73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7 +keycode 74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8 +keycode 75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9 +keycode 76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10 +keycode 77 = Num_Lock NoSymbol Num_Lock +keycode 78 = Scroll_Lock NoSymbol Scroll_Lock +keycode 79 = KP_Home KP_7 KP_Home KP_7 +keycode 80 = KP_Up KP_8 KP_Up KP_8 +keycode 81 = KP_Prior KP_9 KP_Prior KP_9 +keycode 82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode +keycode 83 = KP_Left KP_4 KP_Left KP_4 +keycode 84 = KP_Begin KP_5 KP_Begin KP_5 +keycode 85 = KP_Right KP_6 KP_Right KP_6 +keycode 86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode +keycode 87 = KP_End KP_1 KP_End KP_1 +keycode 88 = KP_Down KP_2 KP_Down KP_2 +keycode 89 = KP_Next KP_3 KP_Next KP_3 +keycode 90 = KP_Insert KP_0 KP_Insert KP_0 +keycode 91 = KP_Delete KP_Separator KP_Delete KP_Separator +keycode 92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift +keycode 93 = +keycode 94 = less greater less greater bar dead_belowmacron bar +keycode 95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11 +keycode 96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12 +keycode 97 = +keycode 98 = Katakana NoSymbol Katakana +keycode 99 = Hiragana NoSymbol Hiragana +keycode 100 = Henkan_Mode NoSymbol Henkan_Mode +keycode 101 = Hiragana_Katakana NoSymbol Hiragana_Katakana +keycode 102 = Muhenkan NoSymbol Muhenkan +keycode 103 = +keycode 104 = KP_Enter NoSymbol KP_Enter +keycode 105 = Control_R NoSymbol Control_R +keycode 106 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab +keycode 107 = Print Sys_Req Print Sys_Req +keycode 108 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift +keycode 109 = Linefeed NoSymbol Linefeed +keycode 110 = Home NoSymbol Home +keycode 111 = Up NoSymbol Up +keycode 112 = Prior NoSymbol Prior +keycode 113 = Left NoSymbol Left +keycode 114 = Right NoSymbol Right +keycode 115 = End NoSymbol End +keycode 116 = Down NoSymbol Down +keycode 117 = Next NoSymbol Next +keycode 118 = Insert NoSymbol Insert +keycode 119 = Delete NoSymbol Delete +keycode 120 = +keycode 121 = XF86AudioMute NoSymbol XF86AudioMute +keycode 122 = XF86AudioLowerVolume NoSymbol XF86AudioLowerVolume +keycode 123 = XF86AudioRaiseVolume NoSymbol XF86AudioRaiseVolume +keycode 124 = XF86PowerOff NoSymbol XF86PowerOff +keycode 125 = KP_Equal NoSymbol KP_Equal +keycode 126 = plusminus NoSymbol plusminus +keycode 127 = Pause Break Pause Break +keycode 128 = XF86LaunchA NoSymbol XF86LaunchA +keycode 129 = KP_Decimal KP_Decimal KP_Decimal KP_Decimal +keycode 130 = Hangul NoSymbol Hangul +keycode 131 = Hangul_Hanja NoSymbol Hangul_Hanja +keycode 132 = +keycode 133 = Super_L NoSymbol Super_L +keycode 134 = Super_R NoSymbol Super_R +keycode 135 = Menu NoSymbol Menu +keycode 136 = Cancel NoSymbol Cancel +keycode 137 = Redo NoSymbol Redo +keycode 138 = SunProps NoSymbol SunProps +keycode 139 = Undo NoSymbol Undo +keycode 140 = SunFront NoSymbol SunFront +keycode 141 = XF86Copy NoSymbol XF86Copy +keycode 142 = XF86Open NoSymbol XF86Open +keycode 143 = XF86Paste NoSymbol XF86Paste +keycode 144 = Find NoSymbol Find +keycode 145 = XF86Cut NoSymbol XF86Cut +keycode 146 = Help NoSymbol Help +keycode 147 = XF86MenuKB NoSymbol XF86MenuKB +keycode 148 = XF86Calculator NoSymbol XF86Calculator +keycode 149 = +keycode 150 = XF86Sleep NoSymbol XF86Sleep +keycode 151 = XF86WakeUp NoSymbol XF86WakeUp +keycode 152 = XF86Explorer NoSymbol XF86Explorer +keycode 153 = XF86Send NoSymbol XF86Send +keycode 154 = +keycode 155 = XF86Xfer NoSymbol XF86Xfer +keycode 156 = XF86Launch1 NoSymbol XF86Launch1 +keycode 157 = XF86Launch2 NoSymbol XF86Launch2 +keycode 158 = XF86WWW NoSymbol XF86WWW +keycode 159 = XF86DOS NoSymbol XF86DOS +keycode 160 = XF86ScreenSaver NoSymbol XF86ScreenSaver +keycode 161 = XF86RotateWindows NoSymbol XF86RotateWindows +keycode 162 = XF86TaskPane NoSymbol XF86TaskPane +keycode 163 = XF86Mail NoSymbol XF86Mail +keycode 164 = XF86Favorites NoSymbol XF86Favorites +keycode 165 = XF86MyComputer NoSymbol XF86MyComputer +keycode 166 = XF86Back NoSymbol XF86Back +keycode 167 = XF86Forward NoSymbol XF86Forward +keycode 168 = +keycode 169 = XF86Eject NoSymbol XF86Eject +keycode 170 = XF86Eject XF86Eject XF86Eject XF86Eject +keycode 171 = XF86AudioNext NoSymbol XF86AudioNext +keycode 172 = XF86AudioPlay XF86AudioPause XF86AudioPlay XF86AudioPause +keycode 173 = XF86AudioPrev NoSymbol XF86AudioPrev +keycode 174 = XF86AudioStop XF86Eject XF86AudioStop XF86Eject +keycode 175 = XF86AudioRecord NoSymbol XF86AudioRecord +keycode 176 = XF86AudioRewind NoSymbol XF86AudioRewind +keycode 177 = XF86Phone NoSymbol XF86Phone +keycode 178 = +keycode 179 = XF86Tools NoSymbol XF86Tools +keycode 180 = XF86HomePage NoSymbol XF86HomePage +keycode 181 = XF86Reload NoSymbol XF86Reload +keycode 182 = XF86Close NoSymbol XF86Close +keycode 183 = +keycode 184 = +keycode 185 = XF86ScrollUp NoSymbol XF86ScrollUp +keycode 186 = XF86ScrollDown NoSymbol XF86ScrollDown +keycode 187 = parenleft NoSymbol parenleft +keycode 188 = parenright NoSymbol parenright +keycode 189 = XF86New NoSymbol XF86New +keycode 190 = Redo NoSymbol Redo +keycode 191 = XF86Tools NoSymbol XF86Tools +keycode 192 = XF86Launch5 NoSymbol XF86Launch5 +keycode 193 = XF86Launch6 NoSymbol XF86Launch6 +keycode 194 = XF86Launch7 NoSymbol XF86Launch7 +keycode 195 = XF86Launch8 NoSymbol XF86Launch8 +keycode 196 = XF86Launch9 NoSymbol XF86Launch9 +keycode 197 = +keycode 198 = XF86AudioMicMute NoSymbol XF86AudioMicMute +keycode 199 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle +keycode 200 = XF86TouchpadOn NoSymbol XF86TouchpadOn +keycode 201 = XF86TouchpadOff NoSymbol XF86TouchpadOff +keycode 202 = +keycode 203 = Mode_switch NoSymbol Mode_switch +keycode 204 = NoSymbol Alt_L NoSymbol Alt_L +keycode 205 = NoSymbol Meta_L NoSymbol Meta_L +keycode 206 = NoSymbol Super_L NoSymbol Super_L +keycode 207 = NoSymbol Hyper_L NoSymbol Hyper_L +keycode 208 = XF86AudioPlay NoSymbol XF86AudioPlay +keycode 209 = XF86AudioPause NoSymbol XF86AudioPause +keycode 210 = XF86Launch3 NoSymbol XF86Launch3 +keycode 211 = XF86Launch4 NoSymbol XF86Launch4 +keycode 212 = XF86LaunchB NoSymbol XF86LaunchB +keycode 213 = XF86Suspend NoSymbol XF86Suspend +keycode 214 = XF86Close NoSymbol XF86Close +keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay +keycode 216 = XF86AudioForward NoSymbol XF86AudioForward +keycode 217 = +keycode 218 = Print NoSymbol Print +keycode 219 = +keycode 220 = XF86WebCam NoSymbol XF86WebCam +keycode 221 = +keycode 222 = +keycode 223 = XF86Mail NoSymbol XF86Mail +keycode 224 = XF86Messenger NoSymbol XF86Messenger +keycode 225 = XF86Search NoSymbol XF86Search +keycode 226 = XF86Go NoSymbol XF86Go +keycode 227 = XF86Finance NoSymbol XF86Finance +keycode 228 = XF86Game NoSymbol XF86Game +keycode 229 = XF86Shop NoSymbol XF86Shop +keycode 230 = +keycode 231 = Cancel NoSymbol Cancel +keycode 232 = XF86MonBrightnessDown NoSymbol XF86MonBrightnessDown +keycode 233 = XF86MonBrightnessUp NoSymbol XF86MonBrightnessUp +keycode 234 = XF86AudioMedia NoSymbol XF86AudioMedia +keycode 235 = XF86Display NoSymbol XF86Display +keycode 236 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff +keycode 237 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown +keycode 238 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp +keycode 239 = XF86Send NoSymbol XF86Send +keycode 240 = XF86Reply NoSymbol XF86Reply +keycode 241 = XF86MailForward NoSymbol XF86MailForward +keycode 242 = XF86Save NoSymbol XF86Save +keycode 243 = XF86Documents NoSymbol XF86Documents +keycode 244 = XF86Battery NoSymbol XF86Battery +keycode 245 = XF86Bluetooth NoSymbol XF86Bluetooth +keycode 246 = XF86WLAN NoSymbol XF86WLAN +keycode 247 = +keycode 248 = +keycode 249 = +keycode 250 = +keycode 251 = +keycode 252 = +keycode 253 = +keycode 254 = +keycode 255 = diff --git a/.bashrc b/.bashrc new file mode 100755 index 0000000..2121ca4 --- /dev/null +++ b/.bashrc @@ -0,0 +1,122 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w \$\[\033[00m\] ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# colored GCC warnings and errors +#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' + +# some more ls aliases +#alias ll='ls -l' +#alias la='ls -A' +#alias l='ls -CF' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + +function _update_ps1() { + PS1="$(powerline-shell $?)" +} + +if [ "$TERM" != "linux" ]; then + PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND" +fi + diff --git a/.config.tar.xz b/.config.tar.xz new file mode 100755 index 0000000..0e838ae Binary files /dev/null and b/.config.tar.xz differ diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..fc6eb14 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +/out/ +/work/ +ArchLinuxARM-rpi-2-latest.tar.gz +ArchLinuxARM-rpi-3-latest.tar.gz +airootfs.sha512 +test diff --git a/.xscreensaver b/.xscreensaver new file mode 100755 index 0000000..5146513 --- /dev/null +++ b/.xscreensaver @@ -0,0 +1,284 @@ +# XScreenSaver Preferences File +# Written by xscreensaver-demo 5.38 for user1 on Mon Jan 15 14:38:46 2018. +# https://www.jwz.org/xscreensaver/ + +timeout: 1:00:00 +cycle: 2:00:00 +lock: False +lockTimeout: 0:00:00 +passwdTimeout: 0:00:30 +visualID: default +installColormap: True +verbose: False +timestamp: True +splash: True +splashDuration: 0:00:05 +demoCommand: xscreensaver-demo +prefsCommand: xscreensaver-demo -prefs +nice: 10 +memoryLimit: 0 +fade: True +unfade: False +fadeSeconds: 0:00:03 +fadeTicks: 20 +captureStderr: True +ignoreUninstalledPrograms:False +font: *-medium-r-*-140-*-m-* +dpmsEnabled: False +dpmsQuickOff: False +dpmsStandby: 2:00:00 +dpmsSuspend: 2:00:00 +dpmsOff: 4:00:00 +grabDesktopImages: True +grabVideoFrames: False +chooseRandomImages: False +imageDirectory: + +mode: one +selected: 116 + +textMode: file +textLiteral: XScreenSaver +textFile: +textProgram: fortune +textURL: https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss + +programs: \ + maze -root \n\ + electricsheep --root 1 \n\ + GL: superquadrics -root \n\ + attraction -root \n\ + blitspin -root \n\ + greynetic -root \n\ + helix -root \n\ + hopalong -root \n\ + imsmap -root \n\ +- noseguy -root \n\ +- pyro -root \n\ + qix -root \n\ +- rocks -root \n\ + rorschach -root \n\ + decayscreen -root \n\ + flame -root \n\ + halo -root \n\ + slidescreen -root \n\ + pedal -root \n\ + bouboule -root \n\ +- braid -root \n\ + coral -root \n\ + deco -root \n\ + drift -root \n\ +- fadeplot -root \n\ + galaxy -root \n\ + goop -root \n\ + grav -root \n\ + ifs -root \n\ + GL: jigsaw -root \n\ + julia -root \n\ +- kaleidescope -root \n\ + GL: moebius -root \n\ + moire -root \n\ + GL: morph3d -root \n\ + mountain -root \n\ + munch -root \n\ + penrose -root \n\ + GL: pipes -root \n\ + rd-bomb -root \n\ + GL: rubik -root \n\ +- sierpinski -root \n\ + slip -root \n\ + GL: sproingies -root \n\ + starfish -root \n\ + strange -root \n\ + swirl -root \n\ + triangle -root \n\ + xjack -root \n\ + xlyap -root \n\ + GL: atlantis -root \n\ + bsod -root \n\ + GL: bubble3d -root \n\ + GL: cage -root \n\ +- crystal -root \n\ + cynosure -root \n\ + discrete -root \n\ + distort -root \n\ + epicycle -root \n\ + flow -root \n\ + GL: glplanet -root \n\ + interference -root \n\ + kumppa -root \n\ + GL: lament -root \n\ + moire2 -root \n\ + GL: sonar -root \n\ + GL: stairs -root \n\ + truchet -root \n\ +- vidwhacker -root \n\ + blaster -root \n\ + bumps -root \n\ + ccurve -root \n\ + compass -root \n\ + deluxe -root \n\ +- demon -root \n\ +- GL: extrusion -root \n\ +- loop -root \n\ + penetrate -root \n\ + petri -root \n\ + phosphor -root \n\ + GL: pulsar -root \n\ + ripples -root \n\ + shadebobs -root \n\ + GL: sierpinski3d -root \n\ + spotlight -root \n\ + squiral -root \n\ + wander -root \n\ +- webcollage -root \n\ + xflame -root \n\ + xmatrix -root \n\ + GL: gflux -root \n\ +- nerverot -root \n\ + xrayswarm -root \n\ + xspirograph -root \n\ + GL: circuit -root \n\ + GL: dangerball -root \n\ +- GL: dnalogo -root \n\ + GL: engine -root \n\ + GL: flipscreen3d -root \n\ + GL: gltext -root \n\ + GL: menger -root \n\ + GL: molecule -root \n\ + rotzoomer -root \n\ + speedmine -root \n\ + GL: starwars -root \n\ + GL: stonerview -root \n\ + vermiculate -root \n\ + whirlwindwarp -root \n\ + zoom -root \n\ + anemone -root \n\ + apollonian -root \n\ + GL: boxed -root \n\ + GL: cubenetic -root \n\ + GL: endgame -root \n\ + euler2d -root \n\ + fluidballs -root \n\ + GL: flurry -root -preset binary \n\ +- GL: glblur -root \n\ + GL: glsnake -root \n\ + halftone -root \n\ + GL: juggler3d -root \n\ + GL: lavalite -root \n\ +- polyominoes -root \n\ + GL: queens -root \n\ +- GL: sballs -root \n\ + GL: spheremonics -root \n\ +- thornbird -root \n\ + twang -root \n\ +- GL: antspotlight -root \n\ + apple2 -root \n\ + GL: atunnel -root \n\ + barcode -root \n\ + GL: blinkbox -root \n\ + GL: blocktube -root \n\ + GL: bouncingcow -root \n\ + cloudlife -root \n\ + GL: cubestorm -root \n\ + eruption -root \n\ + GL: flipflop -root \n\ + GL: flyingtoasters -root \n\ + fontglide -root \n\ + GL: gleidescope -root \n\ + GL: glknots -root \n\ + GL: glmatrix -root \n\ +- GL: glslideshow -root \n\ + GL: hypertorus -root \n\ +- GL: jigglypuff -root \n\ + metaballs -root \n\ + GL: mirrorblob -root \n\ + piecewise -root \n\ + GL: polytopes -root \n\ + pong -root \n\ + popsquares -root \n\ + GL: surfaces -root \n\ + xanalogtv -root \n\ + abstractile -root \n\ + anemotaxis -root \n\ +- GL: antinspect -root \n\ + fireworkx -root \n\ + fuzzyflakes -root \n\ + interaggregate -root \n\ + intermomentary -root \n\ + memscroller -root \n\ + GL: noof -root \n\ + pacman -root \n\ + GL: pinion -root \n\ + GL: polyhedra -root \n\ +- GL: providence -root \n\ + substrate -root \n\ + wormhole -root \n\ +- GL: antmaze -root \n\ + GL: boing -root \n\ + boxfit -root \n\ + GL: carousel -root \n\ + celtic -root \n\ + GL: crackberg -root \n\ + GL: cube21 -root \n\ + fiberlamp -root \n\ + GL: fliptext -root \n\ + GL: glhanoi -root \n\ + GL: tangram -root \n\ + GL: timetunnel -root \n\ + GL: glschool -root \n\ + GL: topblock -root \n\ + GL: cubicgrid -root \n\ + cwaves -root \n\ + GL: gears -root \n\ + GL: glcells -root \n\ + GL: lockward -root \n\ + m6502 -root \n\ + GL: moebiusgears -root \n\ + GL: voronoi -root \n\ + GL: hypnowheel -root \n\ + GL: klein -root \n\ +- lcdscrub -root \n\ + GL: photopile -root \n\ + GL: skytentacles -root \n\ + GL: rubikblocks -root \n\ + GL: companioncube -root \n\ + GL: hilbert -root \n\ + GL: tronbit -root \n\ + GL: geodesic -root \n\ + hexadrop -root \n\ + GL: kaleidocycle -root \n\ + GL: quasicrystal -root \n\ + GL: unknownpleasures -root \n\ + binaryring -root \n\ + GL: cityflow -root \n\ + GL: geodesicgears -root \n\ + GL: projectiveplane -root \n\ + GL: romanboy -root \n\ + tessellimage -root \n\ + GL: winduprobot -root \n\ + GL: splitflap -root \n\ + GL: cubestack -root \n\ + GL: cubetwist -root \n\ + GL: discoball -root \n\ + GL: dymaxionmap -root \n\ + GL: energystream -root \n\ + GL: hexstrut -root \n\ + GL: hydrostat -root \n\ + GL: raverhoop -root \n\ + GL: splodesic -root \n\ + GL: unicrud -root \n\ + GL: vigilance -root \n\ + GL: esper -root \n\ + + +pointerPollTime: 0:00:05 +pointerHysteresis: 10 +windowCreationTimeout:0:00:30 +initialDelay: 0:00:00 +GetViewPortIsFullOfLies:False +procInterrupts: True +xinputExtensionDev: False +overlayStderr: True +authWarningSlack: 20 + diff --git a/LICENSE b/LICENSE new file mode 100755 index 0000000..9cecc1d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100755 index 0000000..4c240ee --- /dev/null +++ b/README.md @@ -0,0 +1,84 @@ +# DOWNLOAD-LINK + +URL : http://137.74.140.105:81/ + +# Spectre-OS + +Spectre-OS ist ein Betriebssytem geschrieben von Simon Rieger. + +Es benutzt den Arch-Linux-Kernel als grundbasis. + +Ein Betriebssystem ist eine Menge von grundlegenden Programmen, die Ihr Rechner zum Arbeiten benötigt. + +Der wichtigste Teil eines Betriebssystems ist der Kernel. Der Kernel ist das Programm, das für alle Basisaufgaben und das Starten von anderen Programmen zuständig ist. + +# WICHTIG BEFEHLE + +ZUGANGSDATEN : root = root + user = user + +Installieren auf Festplatte: "arch-install" in einem Terminal eingeben + +Starten der Grafischen Oberfläche "startx" eingeben + +# Scripte + +# make_mksquashfs + +Damit erstellst du ein komplett neues ISO von Spectre-OS. + +Du kannst das ISO frei modifizieren. + +Es verwendet dabei den arch-graphical-install Script. + +# arch-install + +Hier wird eine HDD installation ausgeführt. + +Das Script partioniert das System komplett selbständig ob verschlüsselt oder uefi. + +Es verwendet dabei den arch-graphical-install Script. + +# arch-graphical-install + +Damit kannst du das System komplett nach deinen willen modifizieren und verändern. + +Es richtet sogar eine komplette graphische Oberfläche ein. + +# Zum Starten einer VM zur Überprüfung mit Qemu + +qemu-system-x86_64 -enable-kvm -cdrom out/arch-*.iso -boot d -m 8092 + +oder + +sudo qemu-system-x86_64 -enable-kvm -cdrom out/arch-spectre-os-17.08.10-x86_64.iso -hdb /dev/sdd -boot d -m 2048M + +qemu-system-x86_64 -enable-kvm -hdb /dev/sdd -m 8092 + +oder + +qemu-img create -f qcow2 arch.img 64G + +qemu-system-x86_64 -enable-kvm -cdrom out/arch-*.iso -hda arch.img -boot d -m 8092 + +qemu-system-x86_64 -enable-kvm -hda arch.img -m 8092 + +# Zugriff über VNC 5901 + +sudo qemu-system-x86_64 -enable-kvm -cdrom out/arch-spectre-os-17.11.02-x86_64.iso -hda arch.img -boot d -m 4G -vnc :1 + +# Für eine Costum-Image für Arch-Linux + +wget https://raw.githubusercontent.com/simono41/Simon-OS/master/make_mksquashfs.sh + +chmod +x make_mksquashfs.sh + +./make_mksquashfs.sh + +# rsync + +rsync -P -e ssh arch-simon-os-17.05.06-x86_64.iso masters4k@frs.sourceforge.net:/home/frs/project/simon-os/ + +# Für eine SSH-VPN verbindung + +ssh -w 0:0 1.2.3.4 diff --git a/Shell.efi b/Shell.efi new file mode 100755 index 0000000..c02b92e Binary files /dev/null and b/Shell.efi differ diff --git a/Shell_Full.efi b/Shell_Full.efi new file mode 100755 index 0000000..9344bb9 Binary files /dev/null and b/Shell_Full.efi differ diff --git a/adduser.sh b/adduser.sh new file mode 100755 index 0000000..c472f72 --- /dev/null +++ b/adduser.sh @@ -0,0 +1,65 @@ +!/bin/bash +# +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 0 +fi +echo "Als root Angemeldet" +# +function adduser() { + useradd -m -g users -G wheel,audio,video,sys,optical -s /bin/bash $username + passwd ${username} < ERROR:" "$@"; } >&2 +msg() { out "==>" "$@"; } +msg2() { out " ->" "$@";} +die() { error "$@"; exit 1; } + +ignore_error() { + "$@" 2>/dev/null + return 0 +} + +in_array() { + local i + for i in "${@:2}"; do + [[ $1 = "$i" ]] && return 0 + done + return 1 +} + +chroot_add_mount() { + mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") +} + +chroot_maybe_add_mount() { + local cond=$1; shift + if eval "$cond"; then + chroot_add_mount "$@" + fi +} + +chroot_setup() { + CHROOT_ACTIVE_MOUNTS=() + [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap' + trap 'chroot_teardown' EXIT + + chroot_maybe_add_mount "! mountpoint -q '$1'" "$1" "$1" --bind && + chroot_add_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev && + chroot_add_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro && + ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \ + efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev && + chroot_add_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid && + chroot_add_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && + chroot_add_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && + chroot_add_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 && + chroot_add_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid +} + +chroot_teardown() { + umount "${CHROOT_ACTIVE_MOUNTS[@]}" + unset CHROOT_ACTIVE_MOUNTS +} + +try_cast() ( + _=$(( $1#$2 )) +) 2>/dev/null + +valid_number_of_base() { + local base=$1 len=${#2} i= + + for (( i = 0; i < len; i++ )); do + try_cast "$base" "${2:i:1}" || return 1 + done + + return 0 +} + +mangle() { + local i= chr= out= + + unset {a..f} {A..F} + + for (( i = 0; i < ${#1}; i++ )); do + chr=${1:i:1} + case $chr in + [[:space:]\\]) + printf -v chr '%03o' "'$chr" + out+=\\ + ;; + esac + out+=$chr + done + + printf '%s' "$out" +} + +unmangle() { + local i= chr= out= len=$(( ${#1} - 4 )) + + unset {a..f} {A..F} + + for (( i = 0; i < len; i++ )); do + chr=${1:i:1} + case $chr in + \\) + if valid_number_of_base 8 "${1:i+1:3}" || + valid_number_of_base 16 "${1:i+1:3}"; then + printf -v chr '%b' "${1:i:4}" + (( i += 3 )) + fi + ;; + esac + out+=$chr + done + + printf '%s' "$out${1:i}" +} + +optstring_match_option() { + local candidate pat patterns + + IFS=, read -ra patterns <<<"$1" + for pat in "${patterns[@]}"; do + if [[ $pat = *=* ]]; then + # "key=val" will only ever match "key=val" + candidate=$2 + else + # "key" will match "key", but also "key=anyval" + candidate=${2%%=*} + fi + + [[ $pat = "$candidate" ]] && return 0 + done + + return 1 +} + +optstring_remove_option() { + local o options_ remove=$2 IFS=, + + read -ra options_ <<<"${!1}" + + for o in "${!options_[@]}"; do + optstring_match_option "$remove" "${options_[o]}" && unset 'options_[o]' + done + + declare -g "$1=${options_[*]}" +} + +optstring_normalize() { + local o options_ norm IFS=, + + read -ra options_ <<<"${!1}" + + # remove empty fields + for o in "${options_[@]}"; do + [[ $o ]] && norm+=("$o") + done + + # avoid empty strings, reset to "defaults" + declare -g "$1=${norm[*]:-defaults}" +} + +optstring_append_option() { + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=${!1},$2" + fi + + optstring_normalize "$1" +} + +optstring_prepend_option() { + local options_=$1 + + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=$2,${!1}" + fi + + optstring_normalize "$1" +} + +optstring_get_option() { + local opts o + + IFS=, read -ra opts <<<"${!1}" + for o in "${opts[@]}"; do + if optstring_match_option "$2" "$o"; then + declare -g "$o" + return 0 + fi + done + + return 1 +} + +optstring_has_option() { + local "${2%%=*}" + + optstring_get_option "$1" "$2" +} + +dm_name_for_devnode() { + read dm_name <"/sys/class/block/${1#/dev/}/dm/name" + if [[ $dm_name ]]; then + printf '/dev/mapper/%s' "$dm_name" + else + # don't leave the caller hanging, just print the original name + # along with the failure. + print '%s' "$1" + error 'Failed to resolve device mapper name for: %s' "$1" + fi +} + +fstype_is_pseudofs() { + (( pseudofs_types["$1"] )) +} + +fstype_has_fsck() { + (( fsck_types["$1"] )) +} + + +usage() { + cat <[:group] Specify non-root user and optional group to use + +If 'command' is unspecified, ${0##*/} will launch /bin/bash. + +EOF +} + +chroot_add_resolv_conf() { + local chrootdir=$1 resolv_conf=$1/etc/resolv.conf + + # Handle resolv.conf as a symlink to somewhere else. + if [[ -L $chrootdir/etc/resolv.conf ]]; then + # readlink(1) should always give us *something* since we know at this point + # it's a symlink. For simplicity, ignore the case of nested symlinks. + resolv_conf=$(readlink "$chrootdir/etc/resolv.conf") + if [[ $resolv_conf = /* ]]; then + resolv_conf=$chrootdir$resolv_conf + else + resolv_conf=$chrootdir/etc/$resolv_conf + fi + + # ensure file exists to bind mount over + if [[ ! -f $resolv_conf ]]; then + install -Dm644 /dev/null "$resolv_conf" || return 1 + fi + elif [[ ! -e $chrootdir/etc/resolv.conf ]]; then + # The chroot might not have a resolv.conf. + return 0 + fi + + chroot_add_mount /etc/resolv.conf "$resolv_conf" --bind +} + +while getopts ':hu:' flag; do + case $flag in + h) + usage + exit 0 + ;; + u) + userspec=$OPTARG + ;; + :) + die '%s: option requires an argument -- '\''%s'\' "${0##*/}" "$OPTARG" + ;; + ?) + die '%s: invalid option -- '\''%s'\' "${0##*/}" "$OPTARG" + ;; + esac +done +shift $(( OPTIND - 1 )) + +(( EUID == 0 )) || die 'This script must be run with root privileges' +(( $# )) || die 'No chroot directory specified' +chrootdir=$1 +shift + +[[ -d $chrootdir ]] || die "Can't create chroot on non-directory %s" "$chrootdir" + +chroot_setup "$chrootdir" || die "failed to setup chroot %s" "$chrootdir" +chroot_add_resolv_conf "$chrootdir" || die "failed to setup resolv.conf" + +chroot_args=() +[[ $userspec ]] && chroot_args+=(--userspec "$userspec") +chroot_args+=("$chrootdir" "$@") + +SHELL=/bin/bash unshare --fork --pid chroot "${chroot_args[@]}" diff --git a/arch-graphical-install-auto b/arch-graphical-install-auto new file mode 100755 index 0000000..fd4f11a --- /dev/null +++ b/arch-graphical-install-auto @@ -0,0 +1,676 @@ +#!/bin/bash +# +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 0 +fi +echo "Als root Angemeldet" +# + +VERSION_ID=$(cat /etc/os-release | grep "ID") +RCLOCAL='/etc/rc.local' +SYSCTL='/etc/sysctl.conf' +WEBADDRESS="http://137.74.140.105/simono41/SpectreOS.git" +WEBADDRESS1="http://137.74.140.105/simono41/shell-scripte.git" +SUDOERS="/etc/sudoers" +repo="SpectreOS" +repo1="shell-scripte" +version="$1" +username="$2" +userpass="$3" + +[[ -z "${version}" ]] && version="voll" +[[ -z "${username}" ]] && username="user1" +[[ -z "${userpass}" ]] && userpass="user1" + +function gitclone() { + cd /root/ + if [ -d "${repo}" ]; then + echo "${repo} existiert bereits!!!" + cd ${repo} + git pull + cd .. + else + git clone ${WEBADDRESS} + fi + if [ -d "${repo1}" ]; then + echo "${repo1} existiert bereits!!!" + cd ${repo1} + git pull + cd .. + else + git clone ${WEBADDRESS1} + fi + cd / +} + +function yaourtinstall() { + su "$username" -c "yaourt -S $1 --needed --noconfirm" +} + +function standartinstallation() { + pacman -Syu $(cat /root/${repo}/packages_${version}.txt) --needed --noconfirm +} + +function ldconfigcache() { + rm /etc/ld.so.cache + ldconfig +} + +function check() { + if [ -f /usr/lib/systemd/system/x11vnc.service ]; then + rm /usr/lib/systemd/system/x11vnc.service + fi + if [ -f /etc/systemd/system/x11vnc.service ]; then + rm /etc/systemd/system/x11vnc.service + fi +} + +function checkend() { + cp /root/${repo}/x11vnc.service /etc/systemd/system/x11vnc.service + chmod 644 /etc/systemd/system/x11vnc.service + systemctl enable x11vnc.service + +} + +function adduser() { + useradd -m -g users -G wheel,audio,video,sys,optical -s /bin/bash $username + passwd ${username} < /home/"$username"/.config/gtk-3.0/settings.ini + echo "gtk-theme-name = Adwaita" >> /home/"$username"/.config/gtk-3.0/settings.ini + echo "# next option is applicable only if selected theme supports it" >> /home/"$username"/.config/gtk-3.0/settings.ini + echo "gtk-application-prefer-dark-theme = true" >> /home/"$username"/.config/gtk-3.0/settings.ini + echo "# set font name and dimension" >> /home/"$username"/.config/gtk-3.0/settings.ini + echo "gtk-font-name = Sans 10" >> /home/"$username"/.config/gtk-3.0/settings.ini + + mkdir -p /home/"$username"/.local/share/applications/ + echo "[Default Applications]" > /home/"$username"/.local/share/applications/mimeapps.list + echo "inode/directory=org.gnome.Nautilus.desktop" >> /home/"$username"/.local/share/applications/mimeapps.list + + mkdir -p /root/.config/gtk-3.0/ + echo "[Settings]" > /root/.config/gtk-3.0/settings.ini + echo "gtk-theme-name = Adwaita" >> /root/.config/gtk-3.0/settings.ini + echo "# next option is applicable only if selected theme supports it" >> /root/.config/gtk-3.0/settings.ini + echo "gtk-application-prefer-dark-theme = true" >> /root/.config/gtk-3.0/settings.ini + echo "# set font name and dimension" >> /root/.config/gtk-3.0/settings.ini + echo "gtk-font-name = Sans 10" >> /root/.config/gtk-3.0/settings.ini + + mkdir -p /root/.local/share/applications/ + echo "[Default Applications]" > /root/.local/share/applications/mimeapps.list + echo "inode/directory=org.gnome.Nautilus.desktop" >> /root/.local/share/applications/mimeapps.list + + gsettings set org.gnome.desktop.media-handling automount 'false' + gsettings set org.gnome.desktop.media-handling automount-open 'false' +} + + + + + + + +# + +if [ "$1" == "adduser" ] +then + username=$2 + userpass=$3 + adduser + exit 0 +fi + +if cat /etc/passwd | grep ${username} > /dev/null; then + echo "${username} existiert bereits!!!" +else + adduser +fi + +if [ "$erstellen" == "exit" ] +then + exit 0 +fi + +# sudoers/wheel + +echo "Lege $SUDOERS neu an!!!" + +echo "root ALL=(ALL) NOPASSWD: ALL" > $SUDOERS + +echo "%wheel ALL=(ALL) NOPASSWD: ALL" >> $SUDOERS + +gitclone + +# Your commands + +# modprobe.d +mkdir -p /etc/modprobe.d/ +echo "blacklist floppy" > /etc/modprobe.d/blacklist-floppy.conf + +# startup +cp /root/${repo}/startup /usr/bin/ +chmod 755 /usr/bin/startup +cp /root/${repo}/startup.service /etc/systemd/system/ +chmod 644 /etc/systemd/system/startup.service +systemctl enable startup.service + +# pacman-config +if [ "${version}" == "libre" ]; then + cp /root/${repo}/pacman.conf_libre /etc/pacman.conf +else + cp /root/${repo}/pacman.conf /etc/pacman.conf +fi + +# new-config +if [ -d /home/"$username"/.config ]; then + rm -Rv /home/"$username"/.config +fi + +if [ -d /root/.config ]; then + rm -Rv /root/.config +fi + +# mirrorlist +cp /root/${repo}/mirrorlist_libre /etc/pacman.d/mirrorlist_libre +cp /root/${repo}/mirrorlist /etc/pacman.d/mirrorlist + +if [ -f /var/lib/pacman/db.lck ];then + rm /var/lib/pacman/db.lck +fi + +if [ "$vollinstallation" != "n" ] +then + check + if [ "$vollinstallation" != "debug" ]; then + standartinstallation + fi + checkend +fi + +if [ "${version}" != "libre" ]; then + if [ "$yaourt" != "n" ] + then + if [ "$yaourt" != "debug" ]; then + cd /home/"$username"/ + pwd + su "$username" -c "curl -O https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz" + pwd + su "$username" -c "tar -xvzf package-query.tar.gz" + pwd + cd package-query + pwd + su "$username" -c "makepkg -si" < /etc/X11/xorg.conf.d/20-keyboard.conf +echo " Identifier \"Keyboard0\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf +echo " MatchIsKeyboard \"yes\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf +echo " Option \"XkbLayout\" \"de\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf +echo " Option \"XkbModel\" \"pc105\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf +echo " Option \"XkbVariant\" \"nodeadkeys\"" >> /etc/X11/xorg.conf.d/20-keyboard.conf +echo "EndSection" >> /etc/X11/xorg.conf.d/20-keyboard.conf + +#xset m 2/1 0 +echo "Section \"InputClass\"" > /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo " Identifier \"Mouse0\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo " MatchIsPointer \"yes\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo "# set the following to 1 1 0 respectively to disable acceleration." >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo " Option \"AccelerationNumerator\" \"2\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo " Option \"AccelerationDenominator\" \"1\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo " Option \"AccelerationThreshold\" \"4\"" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf +echo "EndSection" >> /etc/X11/xorg.conf.d/50-mouse-acceleration.conf + +# set system startup files +echo "System startup files" + +start=getty + +if [ "$start" == "getty" ] +then + + echo "if [ \$(tty) = "/dev/tty1" ]; then" > /root/.bash_profile + echo "startx" >> /root/.bash_profile + echo "fi" >> /root/.bash_profile + # + echo "if [ \$(tty) = "/dev/tty1" ]; then" > /home/"$username"/.bash_profile + echo "startx" >> /home/"$username"/.bash_profile + echo "fi" >> /home/"$username"/.bash_profile + # + + start=${username} + if [ "$start" == "root" ] + then + mkdir -p /etc/systemd/system/getty\@tty1.service.d + echo "[Service]" > /etc/systemd/system/getty\@tty1.service.d/autologin.conf + echo "ExecStart=" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf + echo "ExecStart=-/sbin/agetty --noclear -a root %I 38400 linux" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf + systemctl enable getty@tty1 + else + mkdir -p /etc/systemd/system/getty\@tty1.service.d + echo "[Service]" > /etc/systemd/system/getty\@tty1.service.d/autologin.conf + echo "ExecStart=" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf + echo "ExecStart=-/sbin/agetty --noclear -a "$username" %I 38400 linux" >> /etc/systemd/system/getty\@tty1.service.d/autologin.conf + systemctl enable getty@tty1 + fi + +elif [ "$start" == "xdm" ] +then + systemctl enable xdm +elif [ "$start" == "lightdm" ] +then + systemctl enable lightdm.service +elif [ "$start" == "exit" ] +then + exit 0 +else + echo "Kein Start gewählt!!!" +fi + +if [ "${vollinstallation}" != "n" ]; then + systemctl enable acpid + systemctl enable ntpd + systemctl enable avahi-daemon + systemctl enable org.cups.cupsd.service + systemctl enable sshd + systemctl enable cronie + systemctl enable systemd-timesyncd.service + echo "Bitte OpenVPN config in die /etc/openvpn/client/client.conf kopieren!!!" + if [ -f /lib/systemd/system/openvpn-client@client.service ]; then + echo "link vorhanden!" + else + ln /lib/systemd/system/openvpn-client@.service /lib/systemd/system/openvpn-client@client.service + fi + #Bei ausdokumentierung wird eine/die VPN automatisch aus der /etc/openvpn/client/client.conf gestartet!!! + #systemctl enable openvpn-client@client.service + systemctl enable fail2ban + systemctl disable dhcpcd + systemctl enable NetworkManager.service +fi + +# set systemconfiguration +echo "systemconfiguration" +# +echo "LANG=de_DE.UTF-8" > /etc/locale.conf +echo "LC_COLLATE=C" >> /etc/locale.conf +echo "LANGUAGE=de_DE" >> /etc/locale.conf +# +echo "KEYMAP=de-latin1" > /etc/vconsole.conf +echo "FONT=lat9w-16" >> /etc/vconsole.conf +# +echo "de_DE.UTF-8 UTF-8" > /etc/locale.gen +echo "de_DE ISO-8859-1" >> /etc/locale.gen +echo "de_DE@euro ISO-8859-15" >> /etc/locale.gen +echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen +# +locale-gen +# +rm /etc/localtime +ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime + + + +# custom-bereich vollinstallation + +if [ "${vollinstallation}" != "n" ]; then + + # custom-installer + + # pip install beautysh + if [ -d /opt/beautysh ];then + echo "Bereits vorhanden!!!" + else + git clone https://github.com/bemeurer/beautysh /opt/beautysh + fi + cd /opt/beautysh + python ./setup.py install + if [ -f /usr/bin/beautysh ]; then + echo "Bereits vorhanden!!!" + else + ln -s /opt/beautysh/beautysh/beautysh.py /usr/bin/beautysh + fi + chmod +x /usr/bin/beautysh + cd / + + pip install powerline-shell + + # powerline-shell-fonts + if [ -d /opt/powerline-shell-fonts ];then + echo "Bereits vorhanden!!!" + else + git clone https://github.com/powerline/fonts.git /opt/powerline-shell-fonts + fi + cd /opt/powerline-shell-fonts + ./install.sh + cd / + + # uncrustify + if [ -d /opt/uncrustify ];then + echo "Bereits vorhanden!!!" + else + git clone https://github.com/uncrustify/uncrustify.git /opt/uncrustify + fi + cd /opt/uncrustify + mkdir -p build + cd build + cmake .. + cmake --build . + if [ -f /usr/bin/uncrustify ]; then + echo "Bereits vorhanden!!!" + else + ln -s /opt/uncrustify/build/uncrustify /usr/bin/uncrustify + fi + chmod +x /usr/bin/uncrustify + cd / + + # iso_name + if [ "${version}" == "libre" ]; then + echo "${repo}-libre" > /etc/hostname + else + echo ${repo} > /etc/hostname + fi + + # uefi-boot + cp /root/${repo1}/uefi-boot.sh /usr/bin/uefi-boot + chmod 755 /usr/bin/uefi-boot + + # write-partitions manager + cp /root/${repo}/write_cowspace /usr/bin/write_cowspace + chmod 755 /usr/bin/write_cowspace + + # installer-/usr/bin/ + if [ "${version}" == "libre" ]; then + sed "s|%VERSION%|-libre|g;" /root/${repo}/arch-install > /usr/bin/arch-install + else + sed "s|%VERSION%||g;" /root/${repo}/arch-install > /usr/bin/arch-install + fi + chmod 755 /usr/bin/arch-install + + # installer + mkdir -p /usr/share/applications/ + cp /root/${repo}/arch-install.desktop /usr/share/applications/ + chmod 755 /usr/share/applications/arch-install.desktop + + # install-picture + mkdir -p /usr/share/pixmaps/ + cp /root/${repo}/install.png /usr/share/pixmaps/ + + # background + mkdir -p /usr/share/backgrounds/xfce/ + cp /root/${repo}/background.jpg /usr/share/backgrounds/xfce/ + chmod 644 /usr/share/backgrounds/xfce/background.jpg + + # bash.bashrc + sed "s|%OS_NAME%|${repo}|g;" /root/${repo}/bash.bashrc > /etc/bash.bashrc + cp /root/${repo}/.bashrc /root/ + + # btrfs-swapfile + cp /root/${repo}/btrfs-swapon.service /etc/systemd/system/ + cp /root/${repo}/btrfs-swapon /usr/bin/ + chmod 755 /usr/bin/btrfs-swapon + cp /root/${repo}/btrfs-swapoff /usr/bin/ + chmod 755 /usr/bin/btrfs-swapoff + + # compress-script + cp /root/${repo}/compress.sh /usr/bin/compress + chmod 755 /usr/bin/compress + + # ssh + cp /root/${repo}/sshd_config /etc/ssh/sshd_config + + # .Xmodmap + cp /root/${repo}/.Xmodmap /root/ + + # packages + cp /root/${repo}/packages* /etc/ + + # snapshot.sh + cp /root/${repo}/snapshot.sh /usr/bin/snapshot + chmod 755 /usr/bin/snapshot + + # ip_forward + mkdir -p /proc/sys/net/ipv4/ + echo 1 > /proc/sys/net/ipv4/ip_forward + + # .config + tar -vxJf /root/${repo}/.config.tar.xz -C /root/ + gnomeconfig + + # .xscreensaver + cp /root/${repo}/.xscreensaver /root/ + + # hosts + cp /root/${repo}/hosts /etc/ + + # santana + mkdir -p /usr/share/fonts/TTF/ + tar -vxJf /root/${repo}/santana.tar.xz -C /usr/share/fonts/TTF/ + + # update-script + cp /root/${repo}/update.sh /usr/bin/update-script + chmod 755 /usr/bin/update-script + + # Verzeichnise + mkdir -p /root/Downloads + mkdir -p /root/Dokumente + mkdir -p /root/Bilder + mkdir -p /root/Musik + mkdir -p /root/Videos + + # adduser.sh + cp /root/${repo}/adduser.sh /usr/bin/adduser + chmod 755 /usr/bin/adduser + +fi + + + +# custom-bereich standart + +# nano + +echo "include "/usr/share/nano/*.nanorc"" > /etc/nanorc + +# htop + +echo "fields=0 48 17 18 38 39 40 2 46 47 49 1 +sort_key=46 +sort_direction=-1 +hide_threads=0 +hide_kernel_threads=1 +hide_userland_threads=0 +shadow_other_users=0 +highlight_base_name=1 +highlight_megabytes=1 +highlight_threads=1 +tree_view=1 +header_margin=1 +detailed_cpu_time=1 +color_scheme=0 +delay=15 +left_meters=AllCPUs Memory Swap +left_meter_modes=1 1 1 +right_meters=Tasks LoadAverage Uptime +right_meter_modes=2 2 2 " > /root/.htoprc + +# ssh + +mkdir -p /root/.ssh +echo "ServerAliveInterval 120" > ~/.ssh/config +echo "ServerAliveCountMax 15" >> ~/.ssh/config + +# Install rc.local +echo "[Unit] +Description=/etc/rc.local compatibility + +[Service] +Type=oneshot +ExecStart=/etc/rc.local +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target" > /etc/systemd/system/rc-local.service +touch /etc/rc.local +chmod +x /etc/rc.local +systemctl enable rc-local.service +if ! grep '#!' $RCLOCAL; then + echo "#!/bin/bash" > $RCLOCAL +fi + + + + +echo "Bei bedarf pacman -Sc oder -Scc eingeben um [nicht mehr benötigte]/[alle] unnötige packete zu entfernen!!!" + +# +#systemctl start ntpd +#ntpd -gq +#date +#hwclock -w +# + +#rm -Rv /root/${repo} /root/${repo1} + +pacman -Syu --needed --noconfirm + +copyconfig + +ldconfigcache + +if [ "${version}" == "libre" ]; then + mkinitcpio -p linux-libre +else + mkinitcpio -p linux +fi + +echo "Fertig!!!" + +exit 0 diff --git a/arch-install b/arch-install new file mode 100755 index 0000000..4a3015b --- /dev/null +++ b/arch-install @@ -0,0 +1,1017 @@ +#!/bin/bash +# +set -ex + +echo "Version : Fr 22. Dez 00:00:41 CET 2017" + +WEBADDRESS="http://137.74.140.105/simono41/SpectreOS.git" +repo="SpectreOS" +user="user1" +version="%VERSION%" + +if [ "${version}" == "%VERSION%" ]; then + version="" +fi + +if [ "$2" == "libre" ]; then + echo "Libre-Modus Aktiviert!!!" + version="-libre" +fi + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 2>&1 | tee /home/user1/install.log + exit 0 +fi +echo "Als root Angemeldet" + +function minimalinstallation() { + #Mehrzeiler + while read line + do + pacstrap -c -d -G -M ${mountpoint} $line + done < /root/${repo}/base.txt + +} + +function gitclone() { + cd /root/ + if [ -d "${repo}" ]; then + echo "${repo} existiert bereits!!!" + cd ${repo} + git pull + cd .. + else + git clone ${WEBADDRESS} + fi + cd / +} + +function secureumount() { + if [ "${dateisystem}" == "btrfs" ]; then + if cat /proc/mounts | grep ${mountpoint} > /dev/null; then + umount ${mountpoint}/boot + btrfs filesystem df ${mountpoint} + echo "umount!!!" + umount ${mountpoint}/home + umount ${mountpoint}/opt + umount ${mountpoint}/var/cache/pacman/pkg + umount ${mountpoint}/var/lib + # custom-mounts + for wort in ${mountsnaps} + do + umount ${mountpoint}${wort} + done + umount ${mountpoint} + umount /mnt/btrfs-root + #umount -R /mnt + fi + elif [ "${dateisystem}" == "ext4" ]; then + if cat /proc/mounts | grep ${mountpoint} > /dev/null; then + umount ${mountpoint}/boot + umount ${mountpoint} + fi + fi + + +} + +function partionierenmitswap() { + wipefs -a -f ${device} + sgdisk -o ${device} + sgdisk -a 2048 -n 1::+1024K -c 1:"BIOS Boot Partition" -t 1:ef02 ${device} + sgdisk -a 2048 -n 2::+1G -c 2:"EFI Boot Partition" -t 2:ef00 ${device} + sgdisk -a 2048 -n 3::+8G -c 3:"Linux swap" -t 3:8200 ${device} + sgdisk -a 2048 -n 4:: -c 4:"Linux filesystem" -t 4:8300 ${device} + + if [ "${verschluesselung}" == "y" ]; then + echo "Bitte groß YES schreiben" + cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat ${device}${rootpartitionnummer} + cryptsetup luksOpen ${device}${rootpartitionnummer} luks0 + deviceluks="/dev/mapper/luks0" + fi + +} + +function partionierenohneswap() { + wipefs -a -f ${device} + sgdisk -o ${device} + sgdisk -a 2048 -n 1::+1024K -c 1:"BIOS Boot Partition" -t 1:ef02 ${device} + sgdisk -a 2048 -n 2::+1G -c 2:"EFI Boot Partition" -t 2:ef00 ${device} + sgdisk -a 2048 -n 3:: -c 3:"Linux filesystem" -t 3:8300 ${device} + + if [ "${verschluesselung}" == "y" ]; then + echo "Bitte groß YES schreiben" + cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat ${device}${rootpartitionnummer} + cryptsetup luksOpen ${device}${rootpartitionnummer} luks0 + deviceluks="/dev/mapper/luks0" + fi + + +} + +function usbkeyinstallation() { + mkdir /mnt/usb-stick + mount ${usbkeydevice} /mnt/usb-stick + dd if=/dev/urandom of=/mnt/usb-stick/archkey bs=512 count=4 + cryptsetup luksAddKey ${device}${rootpartitionnummer} /mnt/usb-stick/archkey + +} + +function usbsecret() { + + cp /root/${repo}/install/usbsecret ${mountpoint}/usr/lib/initcpio/install/usbsecret + cp /root/${repo}/hooks/usbsecret ${mountpoint}/root/usbsecret + + # hooks + #cp install/usbsecret ${mountpoint}/usr/lib/initcpio/install/usbsecret + #cp hooks/usbsecret ${mountpoint}/usr/lib/initcpio/hooks/usbsecret + + sed "s|%USB_UUID%|${usbsecretdeviceuuid}|g;" ${mountpoint}/root/usbsecret > ${mountpoint}/usr/lib/initcpio/hooks/usbsecret + +} + +function cron() { + echo "cron-job snapshot" + mkdir -p ${mountpoint}/var/spool/cron/ + echo "0 18 * * * /usr/bin/snapshot make ROOT home opt var/cache/pacman/pkg ${mountsnaps}" > ${mountpoint}/var/spool/cron/root + if [ "${update}" != "n" ]; then + cp /root/${repo}/snapshot.sh ${mountpoint}/usr/bin/snapshot + chmod 755 ${mountpoint}/usr/bin/snapshot + fi +} + +function makeswapfile() { + #swapfile + fallocate -l ${swapfilespeicher} ${mountpoint}/swapfile + chmod 600 ${mountpoint}/swapfile + mkswap ${mountpoint}/swapfile + echo "/swapfile none swap defaults 0 0" >> ${mountpoint}/etc/fstab +} + +function makebtrfsswapfile() { + + /root/${repo}/btrfs-swapon ${mountpoint}/usr/bin/btrfs-swapon + /root/${repo}/btrfs-swapoff ${mountpoint}/usr/bin/btrfs-swapoff + /root/${repo}/btrfs-swapon.service ${mountpoint}/root/btrfs-swapon.service + + chmod +x ${mountpoint}/usr/bin/btrfs-swapon + chmod +x ${mountpoint}/usr/bin/btrfs-swapoff + + sed "s|%swapfilespeicher%|${swapfilespeicher}|g;" ${mountpoint}/root/btrfs-swapon.service > ${mountpoint}/etc/systemd/system/btrfs-swapon.service + + arch-chroot ${mountpoint} systemctl enable btrfs-swapon + +} + +function removeinstaller { + echo "" + if [ -f ${mountpoint}/usr/share/applications/arch-install.desktop ] + then + rm ${mountpoint}/usr/share/applications/arch-install.desktop + fi + echo "" + if [ -f ${mountpoint}/root/Schreibtisch/arch-install.desktop ] + then + rm ${mountpoint}/root/Schreibtisch/arch-install.desktop + fi + echo "" + if [ -f ${mountpoint}/home/${user}/Schreibtisch/arch-install.desktop ] + then + rm ${mountpoint}/home/${user}/Schreibtisch/arch-install.desktop + fi + echo "" + if [ -f ${mountpoint}/root/Desktop/arch-install.desktop ] + then + rm ${mountpoint}/root/Desktop/arch-install.desktop + fi + echo "" + if [ -f ${mountpoint}/home/${user}/Desktop/arch-install.desktop ] + then + rm ${mountpoint}/home/${user}/Desktop/arch-install.desktop + fi + echo "" +} + +function installation { + + #boot + echo "formatieren" + mkfs.vfat -F 32 ${device}${efipartitionnummer} + + #root + if [ "${dateisystem}" == "btrfs" ]; then + #mkfs.btrfs -f -L p_arch ${device}2 + btrfsformat #btrfs + subvolume #btrfs + + elif [ "${dateisystem}" == "ext4" ]; then + echo "mit j bestätigen" + if [ "${verschluesselung}" == "y" ]; then + mkfs.ext4 -L p_arch ${deviceluks} #ext4 + mount ${deviceluks} ${mountpoint} + else + mkfs.ext4 -L p_arch ${device}${rootpartitionnummer} #ext4 + mount ${device}${rootpartitionnummer} ${mountpoint} + fi + + fi + + #swap + if [ "${swap}" != "n" ]; then + mkswap -L p_swap ${device}${swappartitionnummer} + fi + + #installation + if [ "${offline}" != "n" ] + then + if [ -f /run/archiso/bootmnt/arch/$(uname -m)/airootfs.sfs ] + then + echo "Es ist kein copytoram System." + unsquashfs -f -d ${mountpoint} /run/archiso/bootmnt/arch/$(uname -m)/airootfs.sfs + else + echo "Es ist ein copytoram System." + unsquashfs -f -d ${mountpoint} /run/archiso/copytoram/airootfs.sfs + fi + else + minimalinstallation + fi + + #kernel + parameter="base udev " + if [ "${swap}" != "n" ]; then + parameter="${parameter}resume " + fi + if [ "${verschluesselung}" == "y" ]; then + parameter="${parameter}encrypt " + fi + parameter="${parameter}block filesystems keyboard " + if [ "${verschluesselung}" == "y" ]; then + echo "btrfs-hook wird übersprungen!" + else + if [ "${dateisystem}" == "btrfs" ]; then + parameter="${parameter}btrfs " + fi + fi + if [ "${usbsecret}" == "y" ]; then + parameter="${parameter}usbsecret " + fi + + echo "" + echo "MODULES=\"i915 radeon ata_generic ata_piix nls_cp437 vfat ext4 btrfs\"" > ${mountpoint}/etc/mkinitcpio.conf + echo "HOOKS=\"${parameter}\"" >> ${mountpoint}/etc/mkinitcpio.conf + echo "COMPRESSION=\"lz4\"" >> ${mountpoint}/etc/mkinitcpio.conf + echo "FILES=\"/etc/modprobe.d/blacklist-floppy.conf\"" >> ${mountpoint}/etc/mkinitcpio.conf + echo "" + echo "blacklist floppy" > ${mountpoint}/etc/modprobe.d/blacklist-floppy.conf + echo "tmpfs /tmp tmpfs defaults 0 0" >> ${mountpoint}/etc/fstab + echo "tmpfs /dev/shm tmpfs defaults 0 0" >> ${mountpoint}/etc/fstab + + #fstab + rootbind=$(blkid -s PARTUUID -o value ${device}${rootpartitionnummer}) + + #genfstab -Up ${mountpoint} >> ${mountpoint}/etc/fstab + + if [ "${dateisystem}" == "btrfs" ]; then + btrfsfstab #btrfs + + mkdir -p ${mountpoint}/run/btrfs-root + if [ "${verschluesselung}" == "y" ]; then + echo "${deviceluks} /run/btrfs-root/ btrfs defaults 0 0" >> ${mountpoint}/etc/fstab #btrfs + else + echo "PARTUUID=${rootbind} /run/btrfs-root/ btrfs defaults 0 0" >> ${mountpoint}/etc/fstab #btrfs + fi + #grep -v "/var/lib" < ${mountpoint}/etc/fstab > fstab.neu; mv fstab.neu ${mountpoint}/etc/fstab + + echo "/run/btrfs-root/__current/ROOT/var/lib /var/lib none bind 0 0" >> ${mountpoint}/etc/fstab #btrfs + + cron + + elif [ "${dateisystem}" == "ext4" ]; then + if [ "${verschluesselung}" == "y" ]; then + echo "${deviceluks} / ext4 rw,defaults,noatime,nodiratime,discard 0 0" >> ${mountpoint}/etc/fstab + else + echo "PARTUUID=${rootbind} / ext4 rw,defaults,noatime,nodiratime,discard 0 0" >> ${mountpoint}/etc/fstab + fi + fi + + + bootbind=$(blkid -s PARTUUID -o value ${device}${efipartitionnummer}) + + echo -e "PARTUUID=${bootbind} /boot vfat rw,relatime 0 2" >> ${mountpoint}/etc/fstab + + + if [ "${swap}" != "n" ]; then + if [ "${verschluesselung}" == "y" ]; then + swappartition=$(blkid -s PARTUUID -o value ${device}${swappartitionnummer}) + echo "swap PARTUUID=${swappartition} /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256" >> ${mountpoint}/etc/crypttab + echo "/dev/mapper/swap none swap defaults 0 0" >> ${mountpoint}/etc/fstab + else + swappartition=$(blkid -s PARTUUID -o value ${device}${swappartitionnummer}) + echo "PARTUUID=${swappartition} none swap defaults 0 0" >> ${mountpoint}/etc/fstab + fi + fi + + #makeswapfile+fstab + if [ "${swapfile}" == "y" ]; then + if [ "${dateisystem}" == "btrfs" ]; then + makebtrfsswapfile + elif [ "${dateisystem}" == "ext4" ]; then + makeswapfile + fi + fi + + #hostname + echo "${repo}${version}" > ${mountpoint}/etc/hostname + + if [ "${usbsecret}" == "y" ]; then + usbsecret + fi + + if [ "${usbkey}" == "y" ]; then + usbkeyinstallation + fi + + if [ "${verschluesselung}" == "y" ]; then + if [ "${boot}" == "grub" ]; then + tobootdevice=$(blkid -s PARTUUID -o value ${device}${rootpartitionnummer}) + if [ "${swap}" != "n" ]; then + swappartition=$(blkid -s PARTUUID -o value ${device}${swappartitionnummer}) + if [ "${usbkey}" == "y" ]; then + sed -i 's/GRUB_CMDLINE_LINUX=.*$/GRUB_CMDLINE_LINUX="cryptdevice=PARTUUID='$tobootdevice':luks0 resume=PARTUUID='$swappartition' cryptkey=UUID='$usbkeyuuid':'$usbkeydateisystem':\/archkey"/' ${mountpoint}/etc/default/grub + else + sed -i 's/GRUB_CMDLINE_LINUX=.*$/GRUB_CMDLINE_LINUX="cryptdevice=PARTUUID='$tobootdevice':luks0 resume=PARTUUID='$swappartition'"/' ${mountpoint}/etc/default/grub + fi + else + if [ "${usbkey}" == "y" ]; then + sed -i 's/GRUB_CMDLINE_LINUX=.*$/GRUB_CMDLINE_LINUX="cryptdevice=PARTUUID='$tobootdevice':luks0 cryptkey=UUID='$usbkeyuuid':'$usbkeydateisystem':\/archkey"/' ${mountpoint}/etc/default/grub + else + sed -i 's/GRUB_CMDLINE_LINUX=.*$/GRUB_CMDLINE_LINUX="cryptdevice=PARTUUID='$tobootdevice':luks0"/' ${mountpoint}/etc/default/grub + fi + fi + echo "GRUB_ENABLE_CRYPTODISK=y" >> ${mountpoint}/etc/default/grub + fi + else + if [ "${boot}" == "grub" ]; then + tobootdevice=$(blkid -s PARTUUID -o value ${device}${rootpartitionnummer}) + if [ "${swap}" != "n" ]; then + swappartition=$(blkid -s PARTUUID -o value ${device}${swappartitionnummer}) + sed -i 's/GRUB_CMDLINE_LINUX=.*$/GRUB_CMDLINE_LINUX="resume=PARTUUID='$swappartition'"/' ${mountpoint}/etc/default/grub + fi + fi + fi + + + + + + + + + + + + #sie könne hier ihre scripte die bei der installation ausgeführt werden sollen hinzufügen :D + + + + + + +} + +function btrfsformat() { + if [ "$raid" == "raid0" ]; then + if [ "${verschluesselung}" == "y" ]; then + mkfs.btrfs -f -m raid10 -d raid10 ${deviceluks} ${device1} + else + mkfs.btrfs -f -m raid0 -d raid0 ${device}${rootpartitionnummer} ${device1} + fi + elif [ "$raid" == "raid1" ]; then + if [ "${verschluesselung}" == "y" ]; then + mkfs.btrfs -f -m raid10 -d raid10 ${deviceluks} ${device1} + else + mkfs.btrfs -f -m raid1 -d raid1 ${device}${rootpartitionnummer} ${device1} + fi + elif [ "$raid" == "raid10" ]; then + if [ "${verschluesselung}" == "y" ]; then + mkfs.btrfs -f -m raid10 -d raid10 ${deviceluks} ${device1} + else + mkfs.btrfs -f -m raid10 -d raid10 ${device}${rootpartitionnummer} ${device1} + fi + else + if [ "${verschluesselung}" == "y" ]; then + mkfs.btrfs -f -m single ${deviceluks} + else + mkfs.btrfs -f -m single ${device}${rootpartitionnummer} + fi + fi + btrfs filesystem show + +} + +function btrfsfstab() { + + rootbind=$(blkid -s PARTUUID -o value ${device}${rootpartitionnummer}) + + if [ "${verschluesselung}" == "y" ]; then + + + echo -e "${deviceluks} / btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/ROOT 0 0" >> ${mountpoint}/etc/fstab + + echo -e "${deviceluks} /home btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/home 0 0" >> ${mountpoint}/etc/fstab + echo -e "${deviceluks} /opt btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/opt 0 0" >> ${mountpoint}/etc/fstab + echo -e "${deviceluks} /var/cache/pacman/pkg btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/var/cache/pacman/pkg 0 0" >> ${mountpoint}/etc/fstab + + # custom-mounts + for wort in ${mountsnaps} + do + echo -e "${deviceluks} ${wort} btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current${wort} 0 0" >> ${mountpoint}/etc/fstab + done + + + else + + echo -e "PARTUUID=${rootbind} / btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/ROOT 0 0" >> ${mountpoint}/etc/fstab + + echo -e "PARTUUID=${rootbind} /home btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/home 0 0" >> ${mountpoint}/etc/fstab + echo -e "PARTUUID=${rootbind} /opt btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/opt 0 0" >> ${mountpoint}/etc/fstab + echo -e "PARTUUID=${rootbind} /var/cache/pacman/pkg btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/var/cache/pacman/pkg 0 0" >> ${mountpoint}/etc/fstab + + # custom-mounts + for wort in ${mountsnaps} + do + echo -e "PARTUUID=${rootbind} ${wort} btrfs rw,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current${wort} 0 0" >> ${mountpoint}/etc/fstab + done + + + fi +} + +function btrfsmount() { + #[[ -z "${device}" ]] && device=${2} + + if [ "${1}" == "1" ] || [ "${1}" == "" ]; then + if [ "${verschluesselung}" == "y" ]; then + mkdir -p /mnt/btrfs-root + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo ${deviceluks} /mnt/btrfs-root + else + mkdir -p /mnt/btrfs-root + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo ${device}${rootpartitionnummer} /mnt/btrfs-root + fi + fi + if [ "${1}" == "2" ] || [ "${1}" == "" ]; then + if [ "${verschluesselung}" == "y" ]; then + mkdir -p ${mountpoint} + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/ROOT ${deviceluks} ${mountpoint} + + mkdir -p ${mountpoint}/home + mkdir -p ${mountpoint}/opt + mkdir -p ${mountpoint}/var/cache/pacman/pkg + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/home ${deviceluks} ${mountpoint}/home + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/opt ${deviceluks} ${mountpoint}/opt + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/var/cache/pacman/pkg ${deviceluks} ${mountpoint}/var/cache/pacman/pkg + + # custom-mounts + for wort in ${mountsnaps} + do + mkdir -p ${mountpoint}${wort} + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current${wort} ${deviceluks} ${mountpoint}${wort} + done + + mkdir -p ${mountpoint}/var/lib + mount --bind /mnt/btrfs-root/__current/ROOT/var/lib ${mountpoint}/var/lib + else + mkdir -p ${mountpoint} + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/ROOT ${device}${rootpartitionnummer} ${mountpoint} + + mkdir -p ${mountpoint}/home + mkdir -p ${mountpoint}/opt + mkdir -p ${mountpoint}/var/cache/pacman/pkg + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/home ${device}${rootpartitionnummer} ${mountpoint}/home + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/opt ${device}${rootpartitionnummer} ${mountpoint}/opt + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current/var/cache/pacman/pkg ${device}${rootpartitionnummer} ${mountpoint}/var/cache/pacman/pkg + + # custom-mounts + for wort in ${mountsnaps} + do + mkdir -p ${mountpoint}${wort} + mount -o defaults,noatime,nodiratime,space_cache,discard,ssd,compress=lzo,subvol=__current${wort} ${device}${rootpartitionnummer} ${mountpoint}${wort} + done + + mkdir -p ${mountpoint}/var/lib + mount --bind /mnt/btrfs-root/__current/ROOT/var/lib ${mountpoint}/var/lib + fi + # boot mount + mkdir -p ${mountpoint}/boot + mount -t vfat ${device}${efipartitionnummer} ${mountpoint}/boot + + fi +} + +function subvolume() { + + # Mount + btrfsmount 1 + + # Create + mkdir -p /mnt/btrfs-root/__snapshot + mkdir -p /mnt/btrfs-root/__current + btrfs subvolume create /mnt/btrfs-root/__current/ROOT + btrfs subvolume create /mnt/btrfs-root/__current/home + btrfs subvolume create /mnt/btrfs-root/__current/opt + mkdir -p /mnt/btrfs-root/__current/var/cache/pacman + btrfs subvolume create /mnt/btrfs-root/__current/var/cache/pacman/pkg/ + + # custom-mounts + for wort in ${mountsnaps} + do + mkdir -p /mnt/btrfs-root/__current${wort%/*} + btrfs subvolume create /mnt/btrfs-root/__current${wort} + done + + btrfs subvolume list -p /mnt/btrfs-root + + # Mount + btrfsmount 2 + +} + +function update() { + #statements + local if="${1}" + local of="${2}" + local execute="${3}" + local parameters="${4}" + if [ -f "${of}" ] + then + rm ${of} + else + echo "${of} noch nicht vorhanden!" + fi + /usr/bin/curl -v -C - -f ${if} > ${of} + chmod 755 ${of} + + ${of} ${execute} ${parameters} + +} + +function systemdboot() { + tobootdeviceuuid=$(blkid -s PARTUUID -o value ${device}${rootpartitionnummer}) + swappartitionpart=$(blkid -s PARTUUID -o value ${device}${swappartitionnummer}) + + # zurücksetzen der parameter + parameter="" + + if [ "${swap}" != "n" ]; then + parameter="${parameter}resume=PARTUUID=${swappartitionpart} " + fi + if [ "${verschluesselung}" == "y" ]; then + tobootdevice=${deviceluks} + parameter="${parameter}cryptdevice=PARTUUID=${tobootdeviceuuid}:luks0 " + if [ "${usbkey}" == "y" ]; then + parameter="${parameter}cryptkey=UUID=${usbkeyuuid}:${usbkeydateisystem}:/archkey " + fi + else + tobootdevice="PARTUUID=${tobootdeviceuuid}" + fi + if [ "${dateisystem}" == "btrfs" ]; then + parameter="${parameter}rootflags=subvol=__current/ROOT " + fi + + #rootsub=$(btrfs subvolume list /mnt | awk 'NR<0 && NR>2 {print $2}') + + mkdir -p ${mountpoint}/boot/EFI/systemd/ + mkdir -p ${mountpoint}/boot/EFI/BOOT/ + cp ${mountpoint}/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${mountpoint}/boot/EFI/systemd/systemd-bootx64.efi + cp ${mountpoint}/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${mountpoint}/boot/EFI/BOOT/BOOTX64.EFI + + mkdir -p ${mountpoint}/boot/loader/entries/ + echo "title "${repo}"" > ${mountpoint}/boot/loader/entries/arch-uefi.conf + echo "linux /vmlinuz-linux" >> ${mountpoint}/boot/loader/entries/arch-uefi.conf + echo "initrd /intel-ucode.img" >> ${mountpoint}/boot/loader/entries/arch-uefi.conf + echo "initrd /initramfs-linux.img" >> ${mountpoint}/boot/loader/entries/arch-uefi.conf + echo "options root=${tobootdevice} rw ${parameter}" >> ${mountpoint}/boot/loader/entries/arch-uefi.conf + + echo "title "${repo}"" > ${mountpoint}/boot/loader/entries/arch-uefi-fallback.conf + echo "linux /vmlinuz-linux" >> ${mountpoint}/boot/loader/entries/arch-uefi-fallback.conf + echo "initrd /intel-ucode.img" >> ${mountpoint}/boot/loader/entries/arch-uefi-fallback.conf + echo "initrd /initramfs-linux-fallback.img" >> ${mountpoint}/boot/loader/entries/arch-uefi-fallback.conf + echo "options root=${tobootdevice} rw ${parameter}" >> ${mountpoint}/boot/loader/entries/arch-uefi-fallback.conf + + echo "default arch-uefi" > ${mountpoint}/boot/loader/loader.conf + echo "timeout 1" >> ${mountpoint}/boot/loader/loader.conf + + if [ "${booteintraege}" != "n" ]; then + + echo "Zusätzliche Booteinträge werden erstellt!!!" + + arch-chroot ${mountpoint} efibootmgr -c -d ${device} -p 1 -l /EFI/systemd/systemd-bootx64.efi -L "Linux Boot Manager" + + arch-chroot ${mountpoint} efibootmgr -c -d ${device} -p 1 -l \vmlinuz-linux -L "Arch Linux efistub" -u "initrd=/initramfs-linux.img root=${tobootdevice} rw ${parameter}" + + # überschreibt die efistub deswegen entfernt + #arch-chroot ${mountpoint} efibootmgr -c -d ${device} -p 1 -l \vmlinuz-linux -L "Arch Linux fallback efistub" -u "initrd=/initramfs-linux-fallback.img root=${tobootdevice} rw ${parameter}" + + #arch-chroot ${mountpoint} bootctl install + + fi + +} + +function abfrage() { + + # Lade Deutsches Tastaturlayout + loadkeys de + + read -p "Wie heissen sie?: " name + [[ -z "${name}" ]] && name=arch-linux + + # Partionierung + # UEFI oder Legacy-BIOS + echo "" + echo "UEFI = Unified Extensible Firmware Interface" + echo "Empfohlen fuer Neuere PCs" + echo "WICHTIG DAFUER MUESSEN SIE IM BOOTMENUE DEN UEFI USB_STICK AUSGEWAEHLT HABEN SONST KANN KEIN UEFI BOOTEINTRAG ERSTELLT WERDEN!!!" + echo "" + echo "BIOS = basic input/output system" + echo "Empfohlen fuer Alte PCs und portable USB-Sticks" + echo "" + echo "Bitte die Eingaben klein schreiben :D !!!" + echo "Für jedes ja must du ein y machen und für jedes nein ein n ok !!!" + echo "" + if mount | grep efi > /dev/null; then + echo "System unterstützt UEFI" + read -p "Wie moechten sie ihre Festplatte partioniert haben: [UEFI/bios] " Partition + [[ -z "${Partition}" ]] && Partition=uefi + else + echo "System unterstützt kein UEFI" + read -p "Wie moechten sie ihre Festplatte partioniert haben: [uefi/BIOS] " Partition + [[ -z "${Partition}" ]] && Partition=bios + fi + + if [ "${Partition}" == "uefi" ] + then + read -p "Soll mit systemd gebootet werden oder mit grub? [systemd/GRUB] : " boot + if [ "${boot}" == "systemd" ]; then + read -p "Sollen noch zusätzliche Booteinträge erstelt werden? [Y/n] : " booteintraege + fi + + fi + [[ -z "${boot}" ]] && boot=grub + + fdisk -l + read -p "Geben sie eine Festplatte an: /dev/sda " device + [[ -z "${device}" ]] && device=/dev/sda + if [ "${device}" == "/dev/nvme0n1" ]; then + m2ssddevice=y + fi + + #read -p "Welches Passwort soll der Root erhalten?: root " pass + #[[ -z "${pass}" ]] && pass=root + + read -p "Welches Dateisystem soll benutzt werden? [BTRFS/ext4] " dateisystem + [[ -z "${dateisystem}" ]] && dateisystem=btrfs + + if [ "${dateisystem}" == "btrfs" ]; then + read -p "Soll ein raid gemacht werden?: [raid0/raid1/raid10/n] " raid + [[ -z "${raid}" ]] && raid=n + if [ "${raid}" == "n" ]; then + echo "Kein raid wird erzeugt!" + else + fdisk -l + read -p "Bitte geben sie die Festplatten in eine Reihe an die zu einem Raid verbunden werden sollen!!!: " device1 + fi + echo "Standartmässige Snapshots / /home /opt /var/cache/pacman/pkg" + echo "Die Verzeichnisse dürfen sich nicht überlappen sonst kann es zu problemen mit dem unmounten kommen!!!" + read -p "Sollen mehr Snapshots erstellt werden?: " mountsnaps + fi + + read -p "Wollen sie eine swap-partition erstellen? : [Y/n] " swap + read -p "Wollen sie eine swapfile erstellen? : [y/N] " swapfile + + #echo "Diese einstellung kann man mit: " + #echo "systemctl enable openvpn-client@client.service aktivieren und mit" + #echo "systemctl disable openvpn-client@client.service deaktivieren" + #echo "Die Bandbreite wird dadurch reduziert aber die Sicherheit deutlich erhöht" + #read -p "Soll die Verbindung mit einer VPN verschlüsselt werden? : [Y/n] " openvpn + + if [ "${update}" != "n" ]; then + + echo "WARNUNG das System wird nicht verschlüsselt!!!" + echo "WARNUNG ohne den USB-Stick startet das System nicht mehr!!!" + read -p "Soll ein USB-Stick als Schlüssel für das System installiert werden? : [y/N] " usbsecret + if [ "${usbsecret}" == "y" ]; then + read -p "Welcher USB-Stick soll ausgewählt werden für die USB-secret Schlüssel?: /dev/sdb1 " usbsecretdevice + [[ -z "${usbsecretdevice}" ]] && device=/dev/sdb1 + usbsecretdeviceuuid=$(blkid -s PARTUUID -o value ${usbsecretdevice}) + [[ -z "${usbsecretdeviceuuid}" ]] && mkfs.ext4 ${usbsecretdevice} + fi + fi + + if [ "${raid}" == "n" ]; then + read -p "Soll die Festplatte verschlüsselt werden? : [y/N] " verschluesselung + if [ "${verschluesselung}" == "y" ]; then + modprobe dm-crypt + read -p "Soll noch zusätzlich ein USB-Stick zum entschlüsseln erstellt werden? : [y/N] " usbkey + if [ "${usbkey}" == "y" ]; then + read -p "Welcher USB-Stick soll gewählt werden?: /dev/sdb1 " usbkeydevice + [[ -z "${usbkeydevice}" ]] && usbkeydevice=/dev/sdb1 + usbkeydateisystem=$(blkid -s TYPE -o value ${usbkeydevice}) + usbkeyuuid=$(blkid -s UUID -o value ${usbkeydevice}) + fi + fi + fi + + # berechnungen + + if [ "${update}" != "n" ]; then + read -p "Soll eine Offline-Installation durchgefuehrt werden? : [Y/n] " offline + if [ "${offline}" != "n" ] + then + install="offline" + else + install="online" + fi + else + install="offline" + fi + + if [ "${offline}" != "n" ]; then + read -p "Wollen sie das VNC-Protokoll aktiviert haben? : [y/N] " x11vnc + echo "Dieses Passwort gilt nur für die aktuelle Sitzung!!!" + if [ "${x11vnc}" == "y" ]; then + x11vnc -storepasswd /etc/x11vnc.pass + systemctl restart x11vnc.service + fi + fi + + # Ausgaben + + # Dateisystem + if [ "${dateisystem}" == "btrfs" ]; then + mountpoint="/mnt/btrfs-current" + elif [ "${dateisystem}" == "ext4" ]; then + mountpoint="/mnt" + fi + + # + echo "Name: ${name}" + echo "Partionsart: ${Partition}" + echo "Bootloader: ${boot}" + echo "Laufwerk: ${device}" + if [ "${raid}" != "n" ]; then + echo "Raid: ${raid}" + echo "Festplatten: ${device1}" + fi + echo "Dateisystem: ${dateisystem}" + #echo "System-Partition ${speicher}" + #if [ "${swap}" != "n" ]; then + # echo "Swap-partition ${swapspeicher}" + #fi + #if [ "${swapfile}" == "y" ]; then + # echo "Swapfile ${swapfilespeicher}" + #fi + #echo "Rootpasswort: ${pass}" + echo "Architektur: $(uname -m)" + echo "Installation: ${install}" + if [ "${dateisystem}" == "btrfs" ]; then + for wort in ${mountsnaps} + do + echo "Snapshot ${wort} wird erstellt!!!" + done + fi + #if [ "${openvpn}" != "n" ]; then + # echo "VPN-Verschlüsselung: aktiv" + #fi + if [ "${usbsecret}" == "y" ]; then + echo "USB-secret: aktiv" + echo "USB-UIDD: ${usbsecretdeviceuuid}" + echo "USB-Label: ${usbsecretdevice}" + fi + if [ "${verschluesselung}" == "y" ]; then + echo "Fesptplatte mit Luks 512KB verschlüsselung: aktiv" + if [ "${usbkey}" == "y" ]; then + echo "${usbkeydevice} wird als key für das entschlüsseln benutzt: " + echo "Dateisystem: ${usbkeydateisystem}" + fi + fi + + # Partitionierung + + if [ "${m2ssddevice}" == "y" ]; then + m2ssd=p + fi + + if [ "${dateisystem}" == "btrfs" ]; then + if [ "${Partition}" == "uefi" ]; then + bootpartitionnummer=${m2ssd}1 + efipartitionnummer=${m2ssd}2 + if [ "${swap}" != "n" ]; then + swappartitionnummer=${m2ssd}3 + rootpartitionnummer=${m2ssd}4 + else + rootpartitionnummer=${m2ssd}3 + fi + elif [ "${Partition}" == "bios" ]; then + bootpartitionnummer=${m2ssd}1 + efipartitionnummer=${m2ssd}2 + if [ "${swap}" != "n" ]; then + swappartitionnummer=${m2ssd}3 + rootpartitionnummer=${m2ssd}4 + else + rootpartitionnummer=${m2ssd}3 + fi + fi + elif [ "${dateisystem}" == "ext4" ]; then + if [ "${Partition}" == "uefi" ]; then + bootpartitionnummer=${m2ssd}1 + efipartitionnummer=${m2ssd}2 + if [ "${swap}" != "n" ]; then + swappartitionnummer=${m2ssd}3 + rootpartitionnummer=${m2ssd}4 + else + rootpartitionnummer=${m2ssd}3 + fi + elif [ "${Partition}" == "bios" ]; then + bootpartitionnummer=${m2ssd}1 + efipartitionnummer=${m2ssd}2 + if [ "${swap}" != "n" ]; then + swappartitionnummer=${m2ssd}3 + rootpartitionnummer=${m2ssd}4 + else + rootpartitionnummer=${m2ssd}3 + fi + fi + fi + + echo "Boot-Partition = ${device}${bootpartitionnummer}" + echo "EFI-Partition = ${device}${efipartitionnummer}" + if [ "${swap}" != "n" ]; then + echo "Swap-Partition = ${device}${swappartitionnummer}" + fi + echo "ROOT-Partition = ${device}${rootpartitionnummer}" + + + # + read -p "Sind alle Angaben Richtig?: [y/N] " sicherheitsabfrage + if [ "$sicherheitsabfrage" != "y" ] + then + echo "ABGEBROCHEN" + exit 1 + fi + # if [ "${update}" != "n" ]; then + # echo "Nur für reine arch-linux systeme benötigend!!!" + # read -p "Sollen noch wichtige Packete für die installation installiert werden? [y/N] " packete + # if [ "${packete}" == "y" ]; then + # pacman -Syu base base-devel syslinux efibootmgr efitools grub os-prober btrfs-progs \ + # dosfstools arch-install-scripts xorriso cdrtools squashfs-tools wget dosfstools btrfs-progs \ + # gdisk dialog bash-completion git iw wireless_tools wpa_supplicant openvpn + # fi + # fi + echo "Betriebssystem wird installiert!!!" + sleep 5 + + +} + + + + + + + + + +if [ "${1}" != "n" ] +then + if sudo ping -c1 google.de 1>/dev/null 2>&1; then + read -p "Soll im Internet geguckt werden ob es ein neues Install-Script gibt und dann ausgefuehrt werden?: [Y/n] " update + if [ "${update}" == "debug" ] + then + echo "Überspringe das herunterladen einen neuen Scriptes!!!" + else + if [ "${update}" != "n" ] + then + if [ -f /usr/bin/git ]; then + gitclone + else + echo "Git is not installet" + fi + /root/${repo}/arch-install n ${version} + exit 0 + fi + fi + else + echo "Keine Internetverbindung erkannt!" + update=n + fi +fi + +if [ "${update}" != "n" ]; then + echo "Online-Modus aktiviert!" + #vpntunnel +fi +# debug = Installation ueberspringen zu arch-graphical-install und DEBEUG-MODUS +abfrage + +secureumount + +if [ "${name}" == "debug" ] +then + echo "DEBEUG-MODUS" + echo "Wenn kein befehl mehr ausgefuehrt werden muss einfach eingabetaste druecken" + echo "Welcher befehl soll ausgefuert werden? " + + befehl=blablabla + while [ "$befehl" != "" ] + do + read -p "" befehl + $befehl + done + +fi + +# +echo "Eine Säuberung erhört die chance der Installation auf dem System." +echo "Es kann eine Zeit lang dauern!" +dd if=/dev/zero of=${device} bs=64M count=10 status=progress +# +if [ "${Partition}" == "uefi" ] +then + echo "Partioniere mit UEFI" + + if [ "${swap}" != "n" ]; then + echo "Erstelle zustzliche swap-partition" + partionierenmitswap + else + partionierenohneswap + fi + echo "installation" + installation + arch-chroot ${mountpoint} mkinitcpio -p linux${version} + echo "" + if [ "${boot}" == "grub" ] + then + arch-chroot ${mountpoint} grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id="${repo}" --recheck + arch-chroot ${mountpoint} grub-mkconfig -o /boot/grub/grub.cfg + else + systemdboot + fi + #removeinstaller + echo "Fertig" +elif [ "${Partition}" == "bios" ]; then + echo "Partioniere mit bios" + if [ "${swap}" != "n" ]; then + echo "Erstelle zustzliche swap-partition" + partionierenmitswap + else + partionierenohneswap + fi + echo "installation" + installation + arch-chroot ${mountpoint} mkinitcpio -p linux + arch-chroot ${mountpoint} grub-install --target=i386-pc --recheck ${device} + arch-chroot ${mountpoint} grub-mkconfig -o /boot/grub/grub.cfg + #removeinstaller + echo "Fertig" +else + echo "Eingabe Ungueltig" + exit 1 +fi + +if [ "${x11vnc}" == "y" ]; then + echo "Bitte geben sie ein Passwort für das VNC-Protokoll ein!" + arch-chroot ${mountpoint} x11vnc -storepasswd /etc/x11vnc.pass +fi + +if [ "${update}" != "n" ] && [ "${offline}" == "n" ]; then + read -p "Soll die erweiterte Installation durchgeführt werden? [Y/n] " graphical + if [ "$graphical" != "n" ] + then + cp /root/${repo}/arch-graphical-install-auto ${mountpoint}/root/arch-graphical-install-auto + if [ "${version}" == "-libre" ]; then + arch-chroot ${mountpoint} /root/arch-graphical-install-auto libre + else + arch-chroot ${mountpoint} /root/arch-graphical-install-auto voll + fi + fi +fi + +echo "df!!!" +df -h +if [ "${dateisystem}" == "btrfs" ]; then + btrfs filesystem df ${mountpoint} +fi +echo "umount!!!" +sleep 5 +secureumount +echo "" +echo "Fertig!!!" +read -p "Installation erfolgreich Abgeschlossen. Wollen sie den PC NEUSTARTEN?: [Y/n] " sicherheitsabfrage +if [ "$sicherheitsabfrage" != "n" ] +then + echo "starte neu" + reboot +fi +exit 0 diff --git a/arch-install.desktop b/arch-install.desktop new file mode 100755 index 0000000..b10da36 --- /dev/null +++ b/arch-install.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Type=Application +Icon=/usr/share/pixmaps/install.png +Name[de]=Betriebssystem installieren +Name[en]=Install the operating system +Exec=sudo /usr/bin/arch-install +Terminal=true +Categories=ConsoleOnly;System; +StartupNotify=false +Comment= +Path= diff --git a/arch-installpi-simon_os.sh b/arch-installpi-simon_os.sh new file mode 100755 index 0000000..affb010 --- /dev/null +++ b/arch-installpi-simon_os.sh @@ -0,0 +1,93 @@ +#!/bin/bash +# +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + exit 1 +fi +echo "Als root Angemeldet" + +fdisk -l + +read -p "Wo soll das Image aufgespielt werden?: sda,sdb,sdc : " device + +if [ -f arch-simon_os-*-armV7.tar.gz ] +then + image=$(find arch-simon_os-*-armV7.tar.gz) + echo $datei +else + echo "ABGEBROCHEN" + exit 1 +fi + +echo "device:" $device +echo "Image:" $image + +read -p "Sind alle Angaben Richtig?: [Y/n] " sicherheitsabfrage + +if [ "$sicherheitsabfrage" == "n" ] +then + echo "ABGEBROCHEN" + exit 1 +fi + +if [ -f /usr/bin/pacman ] +then + pacman -S dosfstools wget +else + apt-get install bsdtar dosfstools +fi + +if cat /proc/mounts | grep /dev/"$device"1 > /dev/null; then + echo "gemountet" + umount /dev/"$device"1 +else + echo "nicht gemountet" +fi + +if cat /proc/mounts | grep /dev/"$device"2 > /dev/null; then + echo "gemountet" + umount /dev/"$device"2 +else + echo "nicht gemountet" +fi + +fdisk -W always /dev/"$device" <&2 + sudo $0 + exit 0 +fi +echo "Als root Angemeldet" + +fdisk -l + +read -p "Wo soll das Image aufgespielt werden?: /dev/sda : " device +[[ -z "${device}" ]] && device=/dev/sda + +read -p "Haben sie ein PI 2 oder 3?: [3/2] " version +[[ -z "${version}" ]] && version=2 + +echo "device: ${device}" +echo "Version: ${version}" + +read -p "Sind alle Angaben Richtig?: [Y/n] " sicherheitsabfrage + +if [ "$sicherheitsabfrage" == "n" ] +then + echo "ABGEBROCHEN" + exit 1 +fi + +if [ -f /usr/bin/pacman ] +then + pacman -S dosfstools wget --needed --noconfirm +else + apt-get install bsdtar dosfstools +fi + +if cat /proc/mounts | grep "$device"1 > /dev/null; then + echo "gemountet" + umount "$device"1 +else + echo "nicht gemountet" +fi + +if cat /proc/mounts | grep "$device"2 > /dev/null; then + echo "gemountet" + umount "$device"2 +else + echo "nicht gemountet" +fi + +fdisk -W always "$device" < boot/config.txt +echo "hdmi_group=2" >> boot/config.txt +echo "hdmi_mode=82" >> boot/config.txt +echo "hdmi_drive=2" >> boot/config.txt +echo "dtparam=audio=on" >> boot/config.txt +echo "gpu_mem=256" >> boot/config.txt + +umount boot root + +echo "Fertig!!!" diff --git a/auto-install.sh b/auto-install.sh new file mode 100755 index 0000000..2b3b589 --- /dev/null +++ b/auto-install.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 0 +fi + +server="$1" +day="$2" + +[[ -z "${day}" ]] && day="0" + +echo "To use this script for the automation paste in the Crontab" +echo "0 0 * * ${day} /root/auto.sh voll > /root/auto_voll.log 2>&1" > /var/spool/cron/root +echo "0 3 * * ${day} /root/auto.sh cinnamon > /root/auto_cinnamon.log 2>&1" >> /var/spool/cron/root +echo "0 6 * * ${day} /root/auto.sh gnome > /root/auto_gnome.log 2>&1" >> /var/spool/cron/root +echo "0 9 * * ${day} /root/auto.sh kde > /root/auto_kde.log 2>&1" >> /var/spool/cron/root +echo "0 12 * * ${day} /root/auto.sh lxde > /root/auto_lxde.log 2>&1" >> /var/spool/cron/root +echo "0 15 * * ${day} /root/auto.sh lxqt > /root/auto_lxqt.log 2>&1" >> /var/spool/cron/root +echo "0 18 * * ${day} /root/auto.sh mate > /root/auto_mate.log 2>&1" >> /var/spool/cron/root +echo "0 21 * * ${day} /root/auto.sh xfce4 > /root/auto_xfce4.log 2>&1" >> /var/spool/cron/root +echo "0 0 * * $(($day + 1)) /root/auto.sh libre > /root/auto_libre.log 2>&1" >> /var/spool/cron/root + +systemctl restart cronie.service + +cp "./auto.sh" /root/ +chmod 755 /root/auto.sh + +echo "You use for the uplouding on your server ssh with certificates" +chmod 755 ssh-keygen-auto.sh +./ssh-keygen-auto.sh ${server} diff --git a/auto.sh b/auto.sh new file mode 100755 index 0000000..336ad85 --- /dev/null +++ b/auto.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -ex + +repo="SpectreOS" +server="137.74.140.105" +user="simono41" +version="$1" +[[ -z "${version}" ]] && version="standart" + +cd /root/ +if [ -d "/root/${repo}/" ]; then + echo "Existiert bereits!!!" +else + git clone http://${server}/${user}/${repo}.git +fi +cd /root/${repo}/ +git pull +if [ -d "out/" ]; then + rm -Rv out/ +fi +./make_mksquashfs-auto.sh ${version} +scp out/* ${server}:/var/www/html/ + +echo "Fertig!!!" diff --git a/background.jpg b/background.jpg new file mode 100755 index 0000000..e8c0ad4 Binary files /dev/null and b/background.jpg differ diff --git a/base.txt b/base.txt new file mode 100755 index 0000000..d82904d --- /dev/null +++ b/base.txt @@ -0,0 +1,30 @@ +arch-install-scripts +base +base-devel +bash-completion +btrfs-progs +cdrtools +dialog +dosfstools +efibootmgr +efitools +gdisk +git +grub +htop +iw +links +mkinitcpio-nfs-utils +nbd +networkmanager +openssh +os-prober +pixz +ppp +squashfs-tools +syslinux +tar +wget +wireless_tools +wpa_supplicant +xorriso diff --git a/bash.bashrc b/bash.bashrc new file mode 100755 index 0000000..4c7e547 --- /dev/null +++ b/bash.bashrc @@ -0,0 +1,85 @@ +# +# /etc/bash.bashrc +# + +# If not running interactively, don't do anything +[[ $- != *i* ]] && return + +[[ $DISPLAY ]] && shopt -s checkwinsize + +PS1='[\u@\h \W]\$ ' + +case ${TERM} in + xterm*|rxvt*|Eterm|aterm|kterm|gnome*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + + ;; + screen*) + PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"' + ;; +esac + +[ -r /usr/share/bash-completion/bash_completion ] && . /usr/share/bash-completion/bash_completion + + +echo -e "                        .                         " +echo -e "                        ;'                        " +echo -e "                       'cl.                       " +echo -e "                      .cccl                       " +echo -e "                      :cccl:                      " +echo -e "                     ,cccccl'                     " +echo -e "                    .lllcccco.                    " +echo -e "                   .lllllllcll                    " +echo -e "                   cllllllllloc                   " +echo -e "                  . :oolllllllo;                  " +echo -e "                 ;oc..:ooolllllo'                 " +echo -e "                'ddooo::loooollod.                " +echo -e "               .ddddddoooooooooooo.               " +echo -e "              .ddddddddddoooooooooo               " +echo -e "             .dddddddolllcccccllllol              " +echo -e "             odddolccccccccccccccccc:             " +echo -e "            odlcccccccccccccccccccccc;            " +echo -e "           :cccccccccc,....:cccccccccc,           " +echo -e "          ;cccccccccc.      'cccccccccc'          " +echo -e "         ,cccccccccc.        'cccccccccc.         " +echo -e "        ,cccccccccc;          :cccccccccc.        " +echo -e "       'ccccccccccc.          ,cccccc:;;cc.       " +echo -e "      .cccccccccccc.          .cccccccc:...       " +echo -e "     .ccccccccccccc.          'ccccccccccc'       " +echo -e "    .cccccccccc:;'.           ..,;cccccccccc,     " +echo -e "   .ccccccc;'.                      .,:cccccc:    " +echo -e "  .cccc:'.                              .,cccc:   " +echo -e " .cc;.                                     .':c:  " +echo -e ".,.                                            ., " +echo -e "                                                  " + +echo -e "\n"; +echo -e "\033[1;33m Willkommen auf $(uname -n) \033[0m"; +echo -e "\n"; +echo -e "==============================================================================================" +echo -e "\033[1;33m Systemzeit: \033[0m" `date | awk '{print $4}'` +echo -e "\033[1;33m Online seit: \033[0m" `uptime | awk '{print $3}'` "Stunden" +echo -e "\033[1;33m Speichernutzung: \033[0m" `cat /proc/meminfo|grep 'MemF'| awk '{print $2}'` "kB von" `cat /proc/meminfo|grep 'MemT'| awk '{print $2}'` "kB frei" +if [ -f /sys/class/thermal/thermal_zone0/temp ]; then +echo -e "\033[1;33m CPU-Temp: \033[0m" `cat /sys/class/thermal/thermal_zone0/temp| awk '{print $1/1000}'` "°C" +fi +echo -e "\033[1;33m Haupt-IP: \033[0m" `hostname -i` +echo -e "\033[1;33m IPs: \033[0m" `ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1` +echo -e "\033[1;33m Macs: \033[0m" `ip link | grep ether` +echo -e "\033[1;33m Hostname: \033[0m" `hostname` +echo -e "\033[1;33m Benutzer: \033[0m" `whoami` +echo -e "\033[1;33m Grafikkarte: \033[0m" `lspci | grep -e VGA -e 3D -m 1` +if sudo ping -c1 google.de 1>/dev/null 2>&1; then +echo -e "\033[1;33m Öffentliche IP: \033[0m" `wget -qO- ipv4.icanhazip.com` +fi +echo -e "==============================================================================================" +echo -e "User Anschluß Seit von" +/usr/bin/who +echo -e "==============================================================================================" + +alias reboot="sudo systemctl reboot" +alias poweroff="sudo systemctl poweroff" +alias halt="sudo systemctl halt" +alias hibernate="sudo systemctl hibernate" +alias hybrid="sudo systemctl hybrid-sleep" +alias suspend="sudo systemctl suspend" diff --git a/btrfs-swapoff b/btrfs-swapoff new file mode 100755 index 0000000..24516bf --- /dev/null +++ b/btrfs-swapoff @@ -0,0 +1,26 @@ +#!/bin/sh +# +# Copyright (C) Sebastian Philipp +# +# roughly based on https://gist.github.com/romaninsh/118952ce61643914fb00 (Set up swap on CoreOS) +# + +set -e + +swapname="$1" +swapfile="$(losetup -j "$swapname" | /usr/bin/cut -d : -f 1)" + +if [ -z "$swapname" -o -z "$swapfile" ] +then + cat < + +file: path to the existing swap file. This file should have been created with btrfs-swapon. +EOF + exit 1 +fi + + +swapoff "$swapfile" +losetup -d "$swapfile" +rm "$swapname" diff --git a/btrfs-swapon b/btrfs-swapon new file mode 100755 index 0000000..4f2f941 --- /dev/null +++ b/btrfs-swapon @@ -0,0 +1,39 @@ +#!/bin/sh +# +# Copyright (C) Sebastian Philipp +# + +set -e + +swapsize="$1" +swapname="$2" + + +if [ -f /$swapname ] +then + rm /$swapname +fi + +if [ -z "$swapsize" -o -z "$swapname" ] +then + cat < + +size: the size of the file, like "8G" +file: path to the new swap file. This file should not exists. +EOF + exit 1 +fi + + +swapfile=$(losetup -f) #free loop device + +# set NOCOW +touch $swapname +chmod 0600 $swapname +chattr +C $swapname +head -c $swapsize /dev/zero >> $swapname + +losetup $swapfile $swapname #mount file to loop +mkswap $swapfile +swapon $swapfile diff --git a/btrfs-swapon.service b/btrfs-swapon.service new file mode 100755 index 0000000..933327d --- /dev/null +++ b/btrfs-swapon.service @@ -0,0 +1,10 @@ +[Unit] +Description=btrfs-swapon +After=multi-user.target + +[Service] +Type=simple +ExecStart=/usr/bin/btrfs-swapon %swapfilespeicher% /btrfs.swap + +[Install] +WantedBy=multi-user.target diff --git a/compress.sh b/compress.sh new file mode 100755 index 0000000..151e379 --- /dev/null +++ b/compress.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +set -ex + +archiv=$2 + +if [ "make" == "$1" ]; then + while (( "$(expr $# - 2)" )) + do + + dateien="$3 ${dateien}" + + shift + + done + + tar -cf ${archiv}.tar ${dateien} + pixz ${archiv}.tar ${archiv}.tar.pxz + + # säuberung + rm ${archiv}.tar +elif [ "restore" == "$1" ]; then + + pixz -d ${archiv} ${archiv/.pxz*} + + tar -xf ${archiv/.pxz*} + + # säuberung + rm ${archiv/.pxz*} +else + echo "tar.pxz compress-script" + echo "./compress.sh make/restore archivname input/output" + echo "./compress.sh make archivname daten" + echo "./compress.sh restore archivname" + echo "or use" + echo "tar -Ipixz -cf output.tpxz dir # Make tar use pixz automatically" +fi diff --git a/config.txt b/config.txt new file mode 100755 index 0000000..8005a8b --- /dev/null +++ b/config.txt @@ -0,0 +1,59 @@ +# For more options and information see +# http://www.raspberrypi.org/documentation/configuration/config-txt.md +# Some settings may impact device functionality. See link above for details + +# uncomment if you get no picture on HDMI for a default "safe" mode +#hdmi_safe=1 + +# uncomment this if your display has a black border of unused pixels visible +# and your display can output without overscan +#disable_overscan=1 + +# uncomment the following to adjust overscan. Use positive numbers if console +# goes off screen, and negative if there is too much border +#overscan_left=16 +#overscan_right=16 +#overscan_top=16 +#overscan_bottom=16 + +# uncomment to force a console size. By default it will be display's size minus +# overscan. +#framebuffer_width=1280 +#framebuffer_height=720 + +# uncomment if hdmi display is not detected and composite is being output +hdmi_force_hotplug=1 + +# uncomment to force a specific HDMI mode (this will force VGA) +hdmi_group=2 +hdmi_mode=35 + +# uncomment to force a HDMI mode rather than DVI. This can make audio work in +# DMT (computer monitor) modes +hdmi_drive=2 + +# uncomment to increase signal to HDMI, if you have interference, blanking, or +# no display +#config_hdmi_boost=4 + +# uncomment for composite PAL +#sdtv_mode=2 + +#uncomment to overclock the arm. 700 MHz is the default. +#arm_freq=800 + +# Uncomment some or all of these to enable the optional hardware interfaces +#dtparam=i2c_arm=on +#dtparam=i2s=on +#dtparam=spi=on + +# Uncomment this to enable the lirc-rpi module +#dtoverlay=lirc-rpi + +# Additional overlays and parameters are documented /boot/overlays/README + +# Enable audio (loads snd_bcm2835) +dtparam=audio=on +gpu_mem=256 +#dtoverlay=vc4-kms-v3d + diff --git a/fill.sh b/fill.sh new file mode 100755 index 0000000..b36cab5 --- /dev/null +++ b/fill.sh @@ -0,0 +1,14 @@ +#!/bin/sh + +set -ex + +fill=$1 +shift + +while (( "$(expr $#)" )) +do + echo ${fill} >> $1 + for i in $(cat $1) ; do echo $i ; done | sort | uniq > test + cp test $1 + shift +done diff --git a/genfstab b/genfstab new file mode 100755 index 0000000..9ceccc9 --- /dev/null +++ b/genfstab @@ -0,0 +1,477 @@ +#!/bin/bash + +shopt -s extglob + +# generated from util-linux source: libmount/src/utils.c +declare -A pseudofs_types=([anon_inodefs]=1 + [autofs]=1 + [bdev]=1 + [binfmt_misc]=1 + [cgroup]=1 + [configfs]=1 + [cpuset]=1 + [debugfs]=1 + [devfs]=1 + [devpts]=1 + [devtmpfs]=1 + [dlmfs]=1 + [fuse.gvfs-fuse-daemon]=1 + [fusectl]=1 + [hugetlbfs]=1 + [mqueue]=1 + [nfsd]=1 + [none]=1 + [pipefs]=1 + [proc]=1 + [pstore]=1 + [ramfs]=1 + [rootfs]=1 + [rpc_pipefs]=1 + [securityfs]=1 + [sockfs]=1 + [spufs]=1 + [sysfs]=1 + [tmpfs]=1) + +# generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort +declare -A fsck_types=([cramfs]=1 + [exfat]=1 + [ext2]=1 + [ext3]=1 + [ext4]=1 + [ext4dev]=1 + [jfs]=1 + [minix]=1 + [msdos]=1 + [reiserfs]=1 + [vfat]=1 + [xfs]=1) + +out() { printf "$1 $2\n" "${@:3}"; } +error() { out "==> ERROR:" "$@"; } >&2 +msg() { out "==>" "$@"; } +msg2() { out " ->" "$@";} +die() { error "$@"; exit 1; } + +ignore_error() { + "$@" 2>/dev/null + return 0 +} + +in_array() { + local i + for i in "${@:2}"; do + [[ $1 = "$i" ]] && return 0 + done + return 1 +} + +chroot_add_mount() { + mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") +} + +chroot_maybe_add_mount() { + local cond=$1; shift + if eval "$cond"; then + chroot_add_mount "$@" + fi +} + +chroot_setup() { + CHROOT_ACTIVE_MOUNTS=() + [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap' + trap 'chroot_teardown' EXIT + + chroot_maybe_add_mount "! mountpoint -q '$1'" "$1" "$1" --bind && + chroot_add_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev && + chroot_add_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro && + ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \ + efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev && + chroot_add_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid && + chroot_add_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && + chroot_add_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && + chroot_add_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 && + chroot_add_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid +} + +chroot_teardown() { + umount "${CHROOT_ACTIVE_MOUNTS[@]}" + unset CHROOT_ACTIVE_MOUNTS +} + +try_cast() ( + _=$(( $1#$2 )) +) 2>/dev/null + +valid_number_of_base() { + local base=$1 len=${#2} i= + + for (( i = 0; i < len; i++ )); do + try_cast "$base" "${2:i:1}" || return 1 + done + + return 0 +} + +mangle() { + local i= chr= out= + + unset {a..f} {A..F} + + for (( i = 0; i < ${#1}; i++ )); do + chr=${1:i:1} + case $chr in + [[:space:]\\]) + printf -v chr '%03o' "'$chr" + out+=\\ + ;; + esac + out+=$chr + done + + printf '%s' "$out" +} + +unmangle() { + local i= chr= out= len=$(( ${#1} - 4 )) + + unset {a..f} {A..F} + + for (( i = 0; i < len; i++ )); do + chr=${1:i:1} + case $chr in + \\) + if valid_number_of_base 8 "${1:i+1:3}" || + valid_number_of_base 16 "${1:i+1:3}"; then + printf -v chr '%b' "${1:i:4}" + (( i += 3 )) + fi + ;; + esac + out+=$chr + done + + printf '%s' "$out${1:i}" +} + +optstring_match_option() { + local candidate pat patterns + + IFS=, read -ra patterns <<<"$1" + for pat in "${patterns[@]}"; do + if [[ $pat = *=* ]]; then + # "key=val" will only ever match "key=val" + candidate=$2 + else + # "key" will match "key", but also "key=anyval" + candidate=${2%%=*} + fi + + [[ $pat = "$candidate" ]] && return 0 + done + + return 1 +} + +optstring_remove_option() { + local o options_ remove=$2 IFS=, + + read -ra options_ <<<"${!1}" + + for o in "${!options_[@]}"; do + optstring_match_option "$remove" "${options_[o]}" && unset 'options_[o]' + done + + declare -g "$1=${options_[*]}" +} + +optstring_normalize() { + local o options_ norm IFS=, + + read -ra options_ <<<"${!1}" + + # remove empty fields + for o in "${options_[@]}"; do + [[ $o ]] && norm+=("$o") + done + + # avoid empty strings, reset to "defaults" + declare -g "$1=${norm[*]:-defaults}" +} + +optstring_append_option() { + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=${!1},$2" + fi + + optstring_normalize "$1" +} + +optstring_prepend_option() { + local options_=$1 + + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=$2,${!1}" + fi + + optstring_normalize "$1" +} + +optstring_get_option() { + local opts o + + IFS=, read -ra opts <<<"${!1}" + for o in "${opts[@]}"; do + if optstring_match_option "$2" "$o"; then + declare -g "$o" + return 0 + fi + done + + return 1 +} + +optstring_has_option() { + local "${2%%=*}" + + optstring_get_option "$1" "$2" +} + +dm_name_for_devnode() { + read dm_name <"/sys/class/block/${1#/dev/}/dm/name" + if [[ $dm_name ]]; then + printf '/dev/mapper/%s' "$dm_name" + else + # don't leave the caller hanging, just print the original name + # along with the failure. + print '%s' "$1" + error 'Failed to resolve device mapper name for: %s' "$1" + fi +} + +fstype_is_pseudofs() { + (( pseudofs_types["$1"] )) +} + +fstype_has_fsck() { + (( fsck_types["$1"] )) +} + + +write_source() { + local src=$1 spec= label= uuid= comment=() + + label=$(lsblk -rno LABEL "$1" 2>/dev/null) + uuid=$(lsblk -rno UUID "$1" 2>/dev/null) + + # bind mounts do not have a UUID! + + case $bytag in + '') + [[ $uuid ]] && comment=("UUID=$uuid") + [[ $label ]] && comment+=("LABEL=$(mangle "$label")") + ;; + LABEL) + spec=$label + [[ $uuid ]] && comment=("$src" "UUID=$uuid") + ;; + UUID) + spec=$uuid + comment=("$src") + [[ $label ]] && comment+=("LABEL=$(mangle "$label")") + ;; + *) + [[ $uuid ]] && comment=("$1" "UUID=$uuid") + [[ $label ]] && comment+=("LABEL=$(mangle "$label")") + [[ $bytag ]] && spec=$(lsblk -rno "$bytag" "$1" 2>/dev/null) + ;; + esac + + [[ $comment ]] && printf '# %s\n' "${comment[*]}" + + if [[ $spec ]]; then + printf '%-20s' "$bytag=$(mangle "$spec")" + else + printf '%-20s' "$(mangle "$src")" + fi +} + +optstring_apply_quirks() { + local varname=$1 fstype=$2 + + # SELinux displays a 'seclabel' option in /proc/self/mountinfo. We can't know + # if the system we're generating the fstab for has any support for SELinux (as + # one might install Arch from a Fedora environment), so let's remove it. + optstring_remove_option "$varname" seclabel + + case $fstype in + f2fs) + # These are Kconfig options for f2fs. Kernels supporting the options will + # only provide the negative versions of these (e.g. noacl), and vice versa + # for kernels without support. + optstring_remove_option "$varname" noacl,acl,nouser_xattr,user_xattr + ;; + vfat) + # Before Linux v3.8, "cp" is prepended to the value of the codepage. + if optstring_get_option "$varname" codepage && [[ $codepage = cp* ]]; then + optstring_remove_option "$varname" codepage + optstring_append_option "$varname" "codepage=${codepage#cp}" + fi + ;; + esac +} + +usage() { + cat </dev/null; then + # this is root. we can't possibly have more than one... + pass=1 foundroot=1 + fi + + # if there's no fsck tool available, then only pass=0 makes sense. + if ! fstype_has_fsck "$fstype"; then + pass=0 + fi + + if [[ $fsroot != / ]]; then + if [[ $fstype = btrfs ]]; then + opts+=,subvol=${fsroot#/} + else + # it's a bind mount + src=$(findmnt -funcevo TARGET "$src")$fsroot + if [[ $src -ef $target ]]; then + # hrmm, this is weird. we're probably looking at a file or directory + # that was bound into a chroot from the host machine. Ignore it, + # because this won't actually be a valid mount. Worst case, the user + # just re-adds it. + continue + fi + fstype=none + opts+=,bind + pass=0 + fi + fi + + # filesystem quirks + case $fstype in + fuseblk) + # well-behaved FUSE filesystems will report themselves as fuse.$fstype. + # this is probably NTFS-3g, but let's just make sure. + if ! newtype=$(lsblk -no FSTYPE "$src") || [[ -z $newtype ]]; then + # avoid blanking out fstype, leading to an invalid fstab + error 'Failed to derive real filesystem type for FUSE device on %s' "$target" + else + fstype=$newtype + fi + ;; + esac + + optstring_apply_quirks "opts" "$fstype" + + # write one line + write_source "$src" + printf '\t%-10s' "/$(mangle "${target#/}")" "$fstype" "$opts" + printf '\t%s %s' "$dump" "$pass" + printf '\n\n' +done + +# handle swaps devices +{ + # ignore header + read + + while read -r device type _ _ prio; do + options=defaults + if [[ $prio != -1 ]]; then + options+=,pri=$prio + fi + + # skip files marked deleted by the kernel + [[ $device = *'\040(deleted)' ]] && continue + + if [[ $type = file ]]; then + printf '%-20s' "$device" + elif [[ $device = /dev/dm-+([0-9]) ]]; then + # device mapper doesn't allow characters we need to worry + # about being mangled, and it does the escaping of dashes + # for us in sysfs. + write_source "$(dm_name_for_devnode "$device")" + else + write_source "$(unmangle "$device")" + fi + + printf '\t%-10s\t%-10s\t%-10s\t0 0\n\n' 'none' 'swap' "$options" + done +} > /run/archiso/used_block_devices + ro_dev_size=$(blockdev --getsz ${ro_dev}) + + if [[ "${cow_persistent}" == "P" ]]; then + if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then + msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent." + else + msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as persistent." + truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" + fi + else + if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then + msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing." + rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" + fi + msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as non-persistent." + truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" + fi + + rw_dev=$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow") + echo ${rw_dev} >> /run/archiso/used_block_devices + + dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}" + + _mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults" + echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/archiso/used_block_devices +} + +# args: source, newroot, mountpoint +_mnt_overlayfs() { + local src="${1}" + local newroot="${2}" + local mnt="${3}" + mkdir -p /run/archiso/cowspace/${cow_directory}/upperdir /run/archiso/cowspace/${cow_directory}/workdir + mount -t overlay -o lowerdir=${src},upperdir=/run/archiso/cowspace/${cow_directory}/upperdir,workdir=/run/archiso/cowspace/${cow_directory}/workdir airootfs "${newroot}${mnt}" + +} + + +# args: /path/to/image_file, mountpoint +_mnt_sfs() { + local img="${1}" + local mnt="${2}" + local img_fullname="${img##*/}" + local sfs_dev + + if [[ "${copytoram}" == "y" ]]; then + msg -n ":: Copying squashfs image to RAM..." + if ! cp "${img}" "/run/archiso/copytoram/${img_fullname}" ; then + echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'" + launch_interactive_shell + fi + img="/run/archiso/copytoram/${img_fullname}" + msg "done." + fi + sfs_dev=$(losetup --find --show --read-only "${img}") + echo ${sfs_dev} >> /run/archiso/used_block_devices + _mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults" +} + +# args: device, mountpoint, flags, opts +_mnt_dev() { + local dev="${1}" + local mnt="${2}" + local flg="${3}" + local opts="${4}" + + mkdir -p "${mnt}" + + msg ":: Mounting '${dev}' to '${mnt}'" + + while ! poll_device "${dev}" 30; do + echo "ERROR: '${dev}' device did not show up after 30 seconds..." + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + done + + if mount -o "${opts}" "${flg}" "${dev}" "${mnt}"; then + msg ":: Device '${dev}' mounted successfully." + else + echo "ERROR; Failed to mount '${dev}'" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi +} + +_verify_checksum() { + local _status + cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" + sha512sum -c airootfs.sha512 > /tmp/checksum.log 2>&1 + _status=$? + cd "${OLDPWD}" + return ${_status} +} + +_verify_signature() { + local _status + cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" + gpg --homedir /gpg --status-fd 1 --verify airootfs.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG' + _status=$? + cd "${OLDPWD}" + return ${_status} +} + +run_hook() { + [[ -z "${arch}" ]] && arch="$(uname -m)" + [[ -z "${copytoram_size}" ]] && copytoram_size="75%" + [[ -z "${archisobasedir}" ]] && archisobasedir="arch" + [[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch" + [[ -z "${archisodevice}" ]] && archisodevice="/dev/disk/by-label/${archisolabel}" + [[ -z "${cow_spacesize}" ]] && cow_spacesize="256M" + + if [[ -n "${cow_label}" ]]; then + cow_device="/dev/disk/by-label/${cow_label}" + [[ -z "${cow_persistent}" ]] && cow_persistent="P" + elif [[ -n "${cow_device}" ]]; then + [[ -z "${cow_persistent}" ]] && cow_persistent="P" + else + cow_persistent="N" + fi + + [[ -z "${cow_flags}" ]] && cow_flags="defaults" + [[ -z "${cow_directory}" ]] && cow_directory="persistent_${archisolabel}/${arch}" + [[ -z "${cow_chunksize}" ]] && cow_chunksize="8" + + # set mount handler for archiso + mount_handler="archiso_mount_handler" +} + +# This function is called normally from init script, but it can be called +# as chain from other mount handlers. +# args: /path/to/newroot +archiso_mount_handler() { + local newroot="${1}" + + if ! mountpoint -q "/run/archiso/bootmnt"; then + _mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" "defaults" + if [[ "${copytoram}" != "y" ]]; then + echo $(readlink -f ${archisodevice}) >> /run/archiso/used_block_devices + fi + fi + + if [[ "${checksum}" == "y" ]]; then + if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sha512" ]]; then + msg -n ":: Self-test requested, please wait..." + if _verify_checksum; then + msg "done. Checksum is OK, continue booting." + else + echo "ERROR: one or more files are corrupted" + echo "see /tmp/checksum.log for details" + launch_interactive_shell + fi + else + echo "ERROR: checksum=y option specified but ${archisobasedir}/${arch}/airootfs.sha512 not found" + launch_interactive_shell + fi + fi + + if [[ "${verify}" == "y" ]]; then + if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs.sig" ]]; then + msg -n ":: Signature verification requested, please wait..." + if _verify_signature; then + msg "done. Signature is OK, continue booting." + else + echo "ERROR: one or more files are corrupted" + launch_interactive_shell + fi + else + echo "ERROR: verify=y option specified but ${archisobasedir}/${arch}/airootfs.sfs.sig not found" + launch_interactive_shell + fi + fi + + mkdir -p /run/archiso/copytoram + if [[ "${copytoram}" == "y" ]]; then + msg ":: Mounting /run/archiso/copytoram (tmpfs) filesystem, size=${copytoram_size}" + + mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/archiso/copytoram + fi + + mkdir -p /run/archiso/cowspace + if [[ -n "${cow_device}" ]]; then + _mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" "${cow_flags}" + echo $(readlink -f ${cow_device}) >> /run/archiso/used_block_devices + mount -o remount,rw "/run/archiso/cowspace" + else + msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..." + mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/archiso/cowspace + fi + mkdir -p -m 0700 "/run/archiso/cowspace/${cow_directory}" + + _mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs" "/run/archiso/sfs/airootfs" + if [[ -f "/run/archiso/sfs/airootfs/airootfs.img" ]]; then + _mnt_dmsnapshot "/run/archiso/sfs/airootfs/airootfs.img" "${newroot}" "/" + else + _mnt_overlayfs "/run/archiso/sfs/airootfs" "${newroot}" "/" + fi + + if [[ "${copytoram}" == "y" ]]; then + umount -d /run/archiso/bootmnt + fi + + mkdir -p -m 755 "/run/archiso/cowspace/${cow_directory}/upperdir/usr/bin" + if [[ -n "${run}" ]]; then + echo ":: running ${run}" + echo ${run} > /run/archiso/cowspace/${cow_directory}/upperdir/usr/bin/run + else + if [ -f "/run/archiso/cowspace/${cow_directory}/upperdir/usr/bin/run" ] + then + rm /run/archiso/cowspace/${cow_directory}/upperdir/usr/bin/run + fi + fi +} + +if [[ "${shell}" == "y" ]]; then + echo "starting interactive_shell" + launch_interactive_shell +fi + +# vim:ft=sh:ts=4:sw=4:et: diff --git a/hooks/archiso_loop_mnt b/hooks/archiso_loop_mnt new file mode 100755 index 0000000..2e99404 --- /dev/null +++ b/hooks/archiso_loop_mnt @@ -0,0 +1,35 @@ +# vim: set ft=sh: + +run_hook () { + [[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}" + [[ -z "${img_flags}" ]] && img_flags="defaults" + if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then + mount_handler="archiso_loop_mount_handler" + fi +} + +archiso_loop_mount_handler () { + newroot="${1}" + + local _dev_loop + + msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}" + _mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}" + if [[ "${copytoram}" != "y" ]]; then + echo $(readlink -f ${img_dev}) >> /run/archiso/used_block_devices + fi + + if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then + archisodevice="${_dev_loop}" + else + echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'" + launch_interactive_shell + fi + + archiso_mount_handler ${newroot} + + if [[ "${copytoram}" == "y" ]]; then + losetup -d ${_dev_loop} 2>/dev/null + umount /run/archiso/img_dev + fi +} diff --git a/hooks/archiso_pxe_common b/hooks/archiso_pxe_common new file mode 100755 index 0000000..422e4f7 --- /dev/null +++ b/hooks/archiso_pxe_common @@ -0,0 +1,68 @@ +# vim: set ft=sh: + +run_hook () { + # Do *not* declare 'bootif_dev' local! We need it in run_latehook(). + local i net_mac bootif_mac + # These variables will be parsed from /tmp/net-*.conf generated by ipconfig + local DEVICE + local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 + local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH + local filename + # /tmp/net-*.conf + + if [[ -n "${ip}" ]]; then + if [[ -n "${BOOTIF}" ]]; then + bootif_mac=${BOOTIF#01-} + bootif_mac=${bootif_mac//-/:} + for i in /sys/class/net/*/address; do + read net_mac < ${i} + if [[ "${bootif_mac}" == "${net_mac}" ]]; then + bootif_dev=${i#/sys/class/net/} + bootif_dev=${bootif_dev%/address} + break + fi + done + ip="${ip}::${bootif_dev}" + fi + + # setup network and save some values + if ! ipconfig "ip=${ip}"; then + echo "ERROR; Failed to configure network" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi + + . /tmp/net-*.conf + + pxeserver=${ROOTSERVER} + + # setup DNS resolver + if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then + echo "# added by archiso_pxe_common hook" > /etc/resolv.conf + echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf + fi + if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then + echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf + fi + if [[ -n "${DNSDOMAIN}" ]]; then + echo "search ${DNSDOMAIN}" >> /etc/resolv.conf + echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf + fi + fi +} + +run_latehook () { + if [[ -n "${ip}" ]]; then + [[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y" + + if [[ "${copytoram}" == "y" ]]; then + if [[ -n "${bootif_dev}" ]]; then + ip addr flush dev "${bootif_dev}" + ip link set "${bootif_dev}" down + fi + elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then + cp /etc/resolv.conf /new_root/etc/resolv.conf + fi + fi +} diff --git a/hooks/archiso_pxe_http b/hooks/archiso_pxe_http new file mode 100755 index 0000000..a7c03a8 --- /dev/null +++ b/hooks/archiso_pxe_http @@ -0,0 +1,54 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_http_srv}" ]]; then + + # booting with http is always copy-to-ram, so set here to make sure + # addresses are flushed and interface is set down + copytoram="y" + + archiso_http_srv=$(eval echo ${archiso_http_srv}) + [[ -z "${archiso_http_spc}" ]] && archiso_http_spc="75%" + + mount_handler="archiso_pxe_http_mount_handler" + fi +} + +# Fetch a file with CURL +# +# $1 URL +# $2 Destination directory inside httpspace/${archisobasedir} +_curl_get() { + local _url="${1}" + local _dst="${2}" + + msg ":: Downloading '${_url}'" + if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then + echo "ERROR: Downloading '${_url}'" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi +} + +archiso_pxe_http_mount_handler () { + newroot="${1}" + + msg ":: Mounting /run/archiso/httpspace (tmpfs) filesystem, size='${archiso_http_spc}'" + mkdir -p "/run/archiso/httpspace" + mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace" + + _curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs" "/${arch}" + + if [[ "${checksum}" == "y" ]]; then + _curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sha512" "/${arch}" + fi + if [[ "${verify}" == "y" ]]; then + _curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs.sig" "/${arch}" + fi + + mkdir -p "/run/archiso/bootmnt" + mount -o bind /run/archiso/httpspace /run/archiso/bootmnt + + archiso_mount_handler ${newroot} +} diff --git a/hooks/archiso_pxe_nbd b/hooks/archiso_pxe_nbd new file mode 100755 index 0000000..4fb7fa5 --- /dev/null +++ b/hooks/archiso_pxe_nbd @@ -0,0 +1,47 @@ +# vim: set ft=sh: + +run_earlyhook() { + if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then + # Module autoloading like with loop devices does not work, doing manually... + modprobe nbd 2> /dev/null + fi +} + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then + + archiso_nbd_srv=$(eval echo ${archiso_nbd_srv}) + [[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso" + + mount_handler="archiso_pxe_nbd_mount_handler" + fi +} + +archiso_pxe_nbd_mount_handler () { + newroot="${1}" + + msg ":: Waiting for boot device..." + while ! poll_device /dev/nbd0 30; do + echo "ERROR: boot device didn't show up after 30 seconds..." + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + done + + msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0" + if [[ "${copytoram}" != "n" ]]; then + nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0 + copytoram="y" + else + nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} -systemd-mark -persist /dev/nbd0 + fi + + archisodevice=/dev/nbd0 + + archiso_mount_handler ${newroot} + + if [[ "${copytoram}" == "y" ]]; then + msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0" + nbd-client -d /dev/nbd0 + fi +} diff --git a/hooks/archiso_pxe_nfs b/hooks/archiso_pxe_nfs new file mode 100755 index 0000000..67874ec --- /dev/null +++ b/hooks/archiso_pxe_nfs @@ -0,0 +1,30 @@ +# vim: set ft=sh: + +run_hook() { + if [[ -n "${ip}" && -n "${archiso_nfs_srv}" ]]; then + + archiso_nfs_srv=$(eval echo ${archiso_nfs_srv}) + [[ -n "${archiso_nfs_opt}" ]] && archiso_nfs_opt="-o ${archiso_nfs_opt}" + + mount_handler="archiso_nfs_mount_handler" + fi +} + +archiso_nfs_mount_handler() { + newroot="${1}" + mkdir -p "/run/archiso/bootmnt" + msg ":: Mounting '${archiso_nfs_srv}'" + # Do not put "${archiso_nfs_opt}" nfsmount fails! + if ! nfsmount ${archiso_nfs_opt} "${archiso_nfs_srv}" "/run/archiso/bootmnt"; then + echo "ERROR: Mounting '${archiso_nfs_srv}'" + echo " Falling back to interactive prompt" + echo " You can try to fix the problem manually, log out when you are finished" + launch_interactive_shell + fi + + if [[ "${copytoram}" != "n" ]]; then + copytoram="y" + fi + + archiso_mount_handler ${newroot} +} diff --git a/hooks/archiso_shutdown b/hooks/archiso_shutdown new file mode 100755 index 0000000..e50dedb --- /dev/null +++ b/hooks/archiso_shutdown @@ -0,0 +1,6 @@ +run_cleanuphook() { + rm -rf /usr/lib/modules + cp -ax / /run/initramfs +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/hooks/usbsecret b/hooks/usbsecret new file mode 100755 index 0000000..e86bc88 --- /dev/null +++ b/hooks/usbsecret @@ -0,0 +1,14 @@ +run_hook () +{ + msg ":: Suche USB-Stick nach entsperrung des Systems!" + if blkid -s PARTUUID -o value | grep %USB_UUID% > /dev/null; then + msg ":: USB-Stick gefunden fahre mit starten des Systems weiter!" + else + msg ":: USB-Stick konnte nicht zur entsperrung gefunden werden!" + launch_interactive_shell + fi + + msg ":: done." +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/hosts b/hosts new file mode 100755 index 0000000..4999902 --- /dev/null +++ b/hosts @@ -0,0 +1,22 @@ +# +# /etc/hosts: static lookup table for host names +# + +# + +#IPV4 +127.0.0.1 localhost.localdomain localhost +::1 localhost.localdomain localhost +127.0.0.1 coin-hive.com +127.0.0.1 coinhive.com +10.8.0.1 gateway + +#IPV6 +::1 ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +ff02::3 ip6-allhosts + +# End of file diff --git a/install.png b/install.png new file mode 100755 index 0000000..4a55a07 Binary files /dev/null and b/install.png differ diff --git a/install/archiso b/install/archiso new file mode 100755 index 0000000..30728ef --- /dev/null +++ b/install/archiso @@ -0,0 +1,30 @@ +#!/bin/bash + +build() { + add_module "cdrom" + add_module "loop" + add_module "dm-snapshot" + add_module "overlay" + + add_runscript + + add_binary /usr/lib/udev/cdrom_id + add_binary blockdev + add_binary dmsetup + add_binary losetup + add_binary mountpoint + add_binary truncate + add_binary gpg + add_binary grep + + add_file /usr/lib/udev/rules.d/60-cdrom_id.rules + add_file /usr/lib/udev/rules.d/10-dm.rules + add_file /usr/lib/udev/rules.d/95-dm-notify.rules + add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules + if [[ $ARCHISO_GNUPG_FD ]]; then + mkdir -p "$BUILDROOT$dest"/gpg + gpg --homedir "$BUILDROOT$dest"/gpg --import <&$ARCHISO_GNUPG_FD + fi +} + +# vim: set ft=sh ts=4 sw=4 et: diff --git a/install/archiso_kms b/install/archiso_kms new file mode 100755 index 0000000..3ff31f3 --- /dev/null +++ b/install/archiso_kms @@ -0,0 +1,26 @@ +#!/bin/bash + +build() { + add_module "radeon" + add_module "nouveau" + add_module "i915" + add_module "via-agp" + add_module "sis-agp" + add_module "intel-agp" + + if [[ $(uname -m) == i686 ]]; then + add_module "amd64-agp" + add_module "ati-agp" + add_module "sworks-agp" + add_module "ali-agp" + add_module "amd-k7-agp" + add_module "nvidia-agp" + add_module "efficeon-agp" + fi +} + +help() { + cat << HELPEOF +Adds all common KMS drivers to the initramfs image. +HELPEOF +} diff --git a/install/archiso_loop_mnt b/install/archiso_loop_mnt new file mode 100755 index 0000000..59f1d94 --- /dev/null +++ b/install/archiso_loop_mnt @@ -0,0 +1,13 @@ +#!/bin/bash + +build() { + add_runscript +} + +help() { +cat< $BUILDROOT/etc/nsswitch.conf +} + +help() { +cat<&2 + sudo $0 + exit 0 +fi +fdisk -l +read -p "Geben sie eine Festplatte an: /dev/sda : " device +[[ -z "${device}" ]] && device=/dev/sda + +name=simon_os +arch=armV7 +out_dir=out + +mkdir -p boot +mkdir -p root + +if cat /proc/mounts | grep "$device"1 > /dev/null; then + echo "gemountet" + umount "$device"1 +else + echo "nicht gemountet" +fi + +if cat /proc/mounts | grep "$device"2 > /dev/null; then + echo "gemountet" + umount "$device"2 +else + echo "nicht gemountet" +fi + +mount "$device"1 boot +mount "$device"2 root + +cp -R boot/* root/boot/ + +cd root/ +mkdir -p ../${out_dir}/ +tar -cpf ../${out_dir}/arch-${name}-$(date "+%y.%m.%d")-${arch}.tar.gz * +cd .. +echo "FERTIG!!!" +exit 0 diff --git a/make_mksquashfs-auto.sh b/make_mksquashfs-auto.sh new file mode 100755 index 0000000..e86ed20 --- /dev/null +++ b/make_mksquashfs-auto.sh @@ -0,0 +1,396 @@ +#!/bin/bash +# +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 $1 $2 $3 $4 $5 + exit 0 +fi + +iso_name=spectre_os +iso_label="SPECTRE_OS" +iso_version=$(date +%Y.%m.%d) +work_dir=work +out_dir=out +install_dir=arch +version="$1" +parameter1="$2" +parameter2="$3" +parameter3="$4" +parameter4="$5" + +arch=$(uname -m) + +[[ -z "${version}" ]] && version="voll" + +if [ "${version}" == "libre" ]; then + linuxparameter="-libre" +fi + +function minimalinstallation() { + cp pacman* /etc/ + cp mirrorlist* /etc/pacman.d/ + + if [ "${version}" == "libre" ]; then + ./pacstrap -C /etc/pacman.conf_libre -c -d -G -M ${work_dir}/${arch}/airootfs $(cat base.txt) + else + ./pacstrap -C /etc/pacman.conf -c -d -G -M ${work_dir}/${arch}/airootfs $(cat base.txt) + fi +} + +function secureumount() { + #statements + # + if cat /proc/mounts | grep ${device}1 > /dev/null; then + echo "gemountet" + umount ${device}1 + else + echo "nicht gemountet" + fi + # + if cat /proc/mounts | grep ${device}2 > /dev/null; then + echo "gemountet" + umount ${device}2 + else + echo "nicht gemountet" + fi + # + if cat /proc/mounts | grep ${device}3 > /dev/null; then + echo "gemountet" + umount ${device}3 + else + echo "nicht gemountet" + fi + # +} + +function filesystem() { + + if [ "$system" != "n" ] + then + if [ "$scripte" != "n" ] + then + echo "Scripte werden heruntergeladen!" + pacman -Sy arch-install-scripts xorriso squashfs-tools btrfs-progs dosfstools --needed --noconfirm + + fi + + if [ "$pacstrap" != "n" ] + then + if [ "$pacstrap" != "debug" ]; then + if [ "${parameter1}" != "skip" ]; then + if [ -d ${work_dir} ]; then + echo "delete work" + sleep 5 + rm -Rv ${work_dir} + fi + fi + mkdir -p ${work_dir}/${arch}/airootfs + minimalinstallation + fi + + fi + + # module and hooks + echo "MODULES=\"i915 radeon\"" > ${work_dir}/${arch}/airootfs/etc/mkinitcpio.conf + echo "HOOKS=\"base udev memdisk archiso_shutdown archiso archiso_loop_mnt archiso_pxe_common archiso_pxe_nbd archiso_pxe_http archiso_pxe_nfs archiso_kms block pcmcia filesystems keyboard\"" >> ${work_dir}/${arch}/airootfs/etc/mkinitcpio.conf + echo "COMPRESSION=\"lz4\"" >> ${work_dir}/${arch}/airootfs/etc/mkinitcpio.conf + echo "FILES=\"/etc/modprobe.d/blacklist-floppy.conf\"" >> ${work_dir}/${arch}/airootfs/etc/mkinitcpio.conf + + # hooks + cp -v install/archiso* ${work_dir}/${arch}/airootfs/usr/lib/initcpio/install/ + cp -v hooks/archiso* ${work_dir}/${arch}/airootfs/usr/lib/initcpio/hooks/ + + cp -v script/archiso* ${work_dir}/${arch}/airootfs/usr/lib/initcpio/ + + fi + + + + +} + +function IMAGE() { + + if [ "$image" != "n" ] + then + + mkdir -p ${work_dir}/iso/${install_dir}/${arch}/airootfs/ + + arch-chroot ${work_dir}/${arch}/airootfs /bin/bash < /pkglist.txt +EOT + + cp ${work_dir}/${arch}/airootfs/pkglist.txt ${work_dir}/iso/${install_dir}/${arch}/ + + if [ -f ${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs ] + then + echo "${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs wird neu angelegt!!!" + rm ${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs + else + echo "airootfs.sfs nicht vorhanden!" + fi + + mksquashfs ${work_dir}/${arch}/airootfs ${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs -comp xz -b 262144 + + sha512sum ${work_dir}/iso/${install_dir}/${arch}/airootfs.sfs > airootfs.sha512 + sed s/"${work_dir}\/iso\/${install_dir}\/${arch}\/airootfs.sfs"/"\/run\/archiso\/bootmnt\/${install_dir}\/${arch}\/airootfs.sfs"/g airootfs.sha512 > ${work_dir}/iso/${install_dir}/${arch}/airootfs.sha512 + + else + echo "Image wird nicht neu aufgebaut!!!" + fi + + + + +} + +function BIOS() { + + if [ "$bios" != "n" ] + then + + mkdir -p ${work_dir}/iso/isolinux + mkdir -p ${work_dir}/iso/${install_dir}/${arch} + mkdir -p ${work_dir}/iso/${install_dir}/boot/${arch} + mkdir -p ${work_dir}/iso/${install_dir}/boot/syslinux + + cp -R ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/* ${work_dir}/iso/${install_dir}/boot/syslinux/ + cp ${work_dir}/${arch}/airootfs/boot/initramfs-linux${linuxparameter}.img ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img + cp ${work_dir}/${arch}/airootfs/boot/vmlinuz-linux${linuxparameter} ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isolinux.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/isohdpfx.bin ${work_dir}/iso/isolinux/ + cp ${work_dir}/${arch}/airootfs/usr/lib/syslinux/bios/ldlinux.c32 ${work_dir}/iso/isolinux/ + + echo "DEFAULT menu.c32" > ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + echo "PROMPT 0" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + echo "MENU TITLE ${iso_label}" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + echo "TIMEOUT 300" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + echo "" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + + if [ "$parameter4" != "all" ] + then + + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" syslinux-standart.cfg >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + + else + + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" syslinux.cfg >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + + fi + + echo "" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + echo "ONTIMEOUT arch" >> ${work_dir}/iso/${install_dir}/boot/syslinux/syslinux.cfg + + echo "DEFAULT loadconfig" > ${work_dir}/iso/isolinux/isolinux.cfg + echo "" >> ${work_dir}/iso/isolinux/isolinux.cfg + echo "LABEL loadconfig" >> ${work_dir}/iso/isolinux/isolinux.cfg + echo " CONFIG /arch/boot/syslinux/syslinux.cfg" >> ${work_dir}/iso/isolinux/isolinux.cfg + echo " APPEND /arch/boot/syslinux/" >> ${work_dir}/iso/isolinux/isolinux.cfg + + fi + + +} + +function UEFI() { + + if [ "$efi" != "n" ] + then + + mkdir -p ${work_dir}/iso/EFI/archiso + mkdir -p ${work_dir}/iso/EFI/boot + mkdir -p ${work_dir}/iso/loader/entries + + if [ -f ${work_dir}/iso/EFI/archiso/efiboot.img ] + then + rm ${work_dir}/iso/EFI/archiso/efiboot.img + else + echo "efiboot.img nicht vorhanden!" + fi + + truncate -s 128M ${work_dir}/iso/EFI/archiso/efiboot.img + mkfs.vfat -n ${iso_label}_EFI ${work_dir}/iso/EFI/archiso/efiboot.img + + mkdir -p ${work_dir}/efiboot + + mount -t vfat -o loop ${work_dir}/iso/EFI/archiso/efiboot.img ${work_dir}/efiboot + + mkdir -p ${work_dir}/efiboot/EFI/boot + mkdir -p ${work_dir}/efiboot/EFI/archiso + mkdir -p ${work_dir}/efiboot/loader/entries + + cp ${work_dir}/iso/${install_dir}/boot/${arch}/vmlinuz ${work_dir}/efiboot/EFI/archiso/vmlinuz.efi + cp ${work_dir}/iso/${install_dir}/boot/${arch}/archiso.img ${work_dir}/efiboot/EFI/archiso/archiso.img + + cp ${work_dir}/${arch}/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/efiboot/EFI/boot/bootx64.efi + + cp ${work_dir}/${arch}/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/efiboot/EFI/boot/ + + cp ${work_dir}/${arch}/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/efiboot/EFI/boot/loader.efi + + cp uefi-shell-v2-${arch}.conf ${work_dir}/efiboot/loader/entries/ + cp uefi-shell-v1-${arch}.conf ${work_dir}/efiboot/loader/entries/ + cp uefi-shell-v1-${arch}.conf ${work_dir}/iso/loader/entries/uefi-shell-v1-${arch}.conf + cp uefi-shell-v2-${arch}.conf ${work_dir}/iso/loader/entries/uefi-shell-v2-${arch}.conf + + # EFI Shell 2.0 for UEFI 2.3+ + if [ -f ${work_dir}/iso/EFI/shellx64_v2.efi ] + then + echo "Bereits Vorhanden!" + else + cp Shell.efi ${work_dir}/iso/EFI/shellx64_v2.efi + #curl -o ${work_dir}/iso/EFI/shellx64_v2.efi https://raw.githubusercontent.com/tianocore/edk2/master/ShellBinPkg/UefiShell/X64/Shell.efi + fi + # EFI Shell 1.0 for non UEFI 2.3+ + if [ -f ${work_dir}/iso/EFI/shellx64_v1.efi ] + then + echo "Bereits Vorhanden!" + else + cp Shell_Full.efi ${work_dir}/iso/EFI/shellx64_v1.efi + #curl -o ${work_dir}/iso/EFI/shellx64_v1.efi https://raw.githubusercontent.com/tianocore/edk2/master/EdkShellBinPkg/FullShell/X64/Shell_Full.efi + fi + + cp ${work_dir}/iso/EFI/shellx64_v2.efi ${work_dir}/efiboot/EFI/ + cp ${work_dir}/iso/EFI/shellx64_v1.efi ${work_dir}/efiboot/EFI/ + + cp ${work_dir}/${arch}/airootfs/usr/share/efitools/efi/PreLoader.efi ${work_dir}/iso/EFI/boot/bootx64.efi + cp ${work_dir}/${arch}/airootfs/usr/share/efitools/efi/HashTool.efi ${work_dir}/iso/EFI/boot/ + + cp ${work_dir}/${arch}/airootfs/usr/lib/systemd/boot/efi/systemd-bootx64.efi ${work_dir}/iso/EFI/boot/loader.efi + + + echo "timeout 3" > ${work_dir}/iso/loader/loader.conf + echo "default archiso-${arch}-usb-default" >> ${work_dir}/iso/loader/loader.conf + echo "timeout 3" > ${work_dir}/efiboot/loader/loader.conf + echo "default archiso-${arch}-cd-default" >> ${work_dir}/efiboot/loader/loader.conf + + for file in releng/archiso-x86_64-usb* + do + echo "$file" + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" $file > ${work_dir}/iso/loader/entries/${file##*/} + done + + ### + + for file in releng/archiso-x86_64-cd* + do + echo "$file" + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" $file > ${work_dir}/efiboot/loader/entries/${file##*/} + done + + if [ "$parameter4" == "all" ] + then + + for file in releng/all/archiso-x86_64-usb* + do + echo "$file" + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" $file > ${work_dir}/iso/loader/entries/${file##*/} + done + + ### + + for file in releng/all/archiso-x86_64-cd* + do + echo "$file" + sed "s|%ISO_LABEL%|${iso_label}|g; + s|%arch%|${arch}|g; + s|%INSTALL_DIR%|${install_dir}|g" $file > ${work_dir}/efiboot/loader/entries/${file##*/} + done + + fi + + ### + + if [ "$trennen" != "n" ] + then + umount -d ${work_dir}/efiboot + fi + + fi + +} + +function makeiso() { + + if [ "$image" != "n" ] + then + + imagename=arch-${iso_name}-${version}-${iso_version}-${arch}.iso + + if [ "$run" != "n" ] + then + if [ -f ${out_dir}/${imagename} ] + then + rm ${out_dir}/${imagename} + fi + mkdir -p ${out_dir} + xorriso -as mkisofs \ + -iso-level 3 \ + -full-iso9660-filenames \ + -volid "${iso_label}" \ + -eltorito-boot isolinux/isolinux.bin \ + -eltorito\-catalog isolinux/boot.cat \ + -no-emul-boot -boot-load-size 4 -boot-info-table \ + -isohybrid-mbr $(pwd)/${work_dir}/iso/isolinux/isohdpfx.bin \ + -eltorito-alt-boot \ + -e EFI/archiso/efiboot.img \ + -no-emul-boot \ + -isohybrid-gpt-basdat \ + -output ${out_dir}/${imagename} ${work_dir}/iso/ + + fi + + fi + + + +} + +if [ "${parameter2}" != "skip" ]; then + + filesystem + + echo "Jetzt können sie ihr Betriebssystem nach ihren Belieben anpassen:D" + cp arch-graphical-install-auto ${work_dir}/${arch}/airootfs/usr/bin/arch-graphical-install-auto + ./arch-chroot ${work_dir}/${arch}/airootfs /usr/bin/arch-graphical-install-auto ${version} + +fi + +if [ "${parameter3}" != "skip" ]; then + + # System-image + + IMAGE + +fi + +# BIOS + +BIOS + +# EFI + +UEFI + +# MAKEISO + +makeiso + +# chroot + +echo "Fertig!!!" diff --git a/mirrorlist b/mirrorlist new file mode 100755 index 0000000..e0b0dcf --- /dev/null +++ b/mirrorlist @@ -0,0 +1,252 @@ +Server = http://mirror.gnomus.de/$repo/os/$arch +Server = http://mirror.lnx.sk/pub/linux/archlinux/$repo/os/$arch +Server = http://ftp.uni-hannover.de/archlinux/$repo/os/$arch +Server = http://mirrors.standaloneinstaller.com/archlinux/$repo/os/$arch +Server = http://arch.yourlabs.org/$repo/os/$arch +Server = http://mirror.easyname.at/archlinux/$repo/os/$arch +Server = http://ftp.spline.inf.fu-berlin.de/mirrors/archlinux/$repo/os/$arch +Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch +Server = http://arch.softver.org.mk/archlinux/$repo/os/$arch +Server = http://arch.tamcore.eu/$repo/os/$arch +Server = http://archlinux.mirrors.uk2.net/$repo/os/$arch +Server = http://tux.rainside.sk/archlinux/$repo/os/$arch +Server = http://archlinux.prometeolibero.eu/archlinux/$repo/os/$arch +Server = http://archlinux.de-labrusse.fr/$repo/os/$arch +Server = http://ftp.energia.mta.hu/pub/mirrors/ftp.archlinux.org/$repo/os/$arch +Server = http://mirror.tyborek.pl/arch/$repo/os/$arch +Server = http://archlinux.thelinuxnetworx.rocks/$repo/os/$arch +Server = http://www.gutscheindrache.com/mirror/archlinux/$repo/os/$arch +Server = http://ftp.klid.dk/ftp/archlinux/$repo/os/$arch +Server = http://arch.midov.pl/arch/$repo/os/$arch +Server = http://ftp.myrveln.se/pub/linux/archlinux/$repo/os/$arch +Server = http://mirror.onet.pl/pub/mirrors/archlinux/$repo/os/$arch +Server = http://archmirror.hbit.sztaki.hu/archlinux/$repo/os/$arch +Server = http://k42.ch/mirror/archlinux/$repo/os/$arch +Server = http://mirrors.uni-plovdiv.net/archlinux/$repo/os/$arch +Server = http://arch.serverspace.co.uk/arch/$repo/os/$arch +Server = http://ftp.fau.de/archlinux/$repo/os/$arch +Server = http://mirror.metalgamer.eu/archlinux/$repo/os/$arch +Server = http://arch.jensgutermuth.de/$repo/os/$arch +Server = http://ftp.uni-bayreuth.de/linux/archlinux/$repo/os/$arch +Server = http://archlinux.cu.be/$repo/os/$arch +Server = http://mirror.ubrco.de/archlinux/$repo/os/$arch +Server = http://mirrors.n-ix.net/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.root.lu/$repo/os/$arch +Server = http://archlinux.nullpointer.io/$repo/os/$arch +Server = http://mirror.digitalnova.at/archlinux/$repo/os/$arch +Server = http://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch +Server = http://archlinux.thaller.ws/$repo/os/$arch +Server = http://ftp.gwdg.de/pub/linux/archlinux/$repo/os/$arch +Server = http://mirror.united-gameserver.de/archlinux/$repo/os/$arch +Server = http://mirror.netcologne.de/archlinux/$repo/os/$arch +Server = http://mirror.f4st.host/archlinux/$repo/os/$arch +Server = http://il.mirrors.linaxe.net/archlinux/$repo/os/$arch +Server = http://mirror.hactar.xyz/$repo/os/$arch +Server = http://mirror.nexcess.net/archlinux/$repo/os/$arch +Server = http://mirror1.htu.tugraz.at/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.wearetriple.com/$repo/os/$arch +Server = http://mirror.dkm.cz/archlinux/$repo/os/$arch +Server = http://arch-mirror.wtako.net/$repo/os/$arch +Server = http://artfiles.org/archlinux.org/$repo/os/$arch +Server = http://mirror.netrouting.net/archlinux/$repo/os/$arch +Server = http://mirrors.niyawe.de/archlinux/$repo/os/$arch +Server = http://archlinux.mailtunnel.eu/$repo/os/$arch +Server = http://archimonde.ts.si/archlinux/$repo/os/$arch +Server = http://archlinux.honkgong.info/$repo/os/$arch +Server = http://mirror.js-webcoding.de/pub/archlinux/$repo/os/$arch +Server = http://pkg.adfinis-sygroup.ch/archlinux/$repo/os/$arch +Server = http://archlinux.mirrors.ovh.net/archlinux/$repo/os/$arch +Server = http://mirror.pmf.kg.ac.rs/archlinux/$repo/os/$arch +Server = http://mirror.de.leaseweb.net/archlinux/$repo/os/$arch +Server = http://ftp.snt.utwente.nl/pub/os/linux/archlinux/$repo/os/$arch +Server = http://archmirror.tomforb.es/$repo/os/$arch +Server = http://mirrors.nic.cz/archlinux/$repo/os/$arch +Server = http://mirrors.prometeus.net/archlinux/$repo/os/$arch +Server = http://ftp.nluug.nl/os/Linux/distr/archlinux/$repo/os/$arch +Server = http://mirror.archlinux.ikoula.com/archlinux/$repo/os/$arch +Server = http://archlinux.vi-di.fr/$repo/os/$arch +Server = http://ftp.uni-kl.de/pub/linux/archlinux/$repo/os/$arch +Server = http://mirror.pseudoform.org/$repo/os/$arch +Server = http://fooo.biz/archlinux/$repo/os/$arch +Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch +Server = http://ftp.sh.cvut.cz/arch/$repo/os/$arch +Server = http://mirrors.atviras.lt/archlinux/$repo/os/$arch +Server = http://mirror.neuf.no/archlinux/$repo/os/$arch +Server = http://mirror.loli.forsale/arch/$repo/os/$arch +Server = http://www.mirrorservice.org/sites/ftp.archlinux.org/$repo/os/$arch +Server = http://mirror.armbrust.me/archlinux/$repo/os/$arch +Server = http://mirror.23media.de/archlinux/$repo/os/$arch +Server = http://mirror.michael-eckert.net/archlinux/$repo/os/$arch +Server = http://mirror.i3d.net/pub/archlinux/$repo/os/$arch +Server = http://linux.rz.rub.de/archlinux/$repo/os/$arch +Server = http://archlinux.polymorf.fr/$repo/os/$arch +Server = http://ftp.vectranet.pl/archlinux/$repo/os/$arch +Server = http://archlinux.koyanet.lv/archlinux/$repo/os/$arch +Server = http://mirror.vpsfree.cz/archlinux/$repo/os/$arch +Server = http://ftp.hosteurope.de/mirror/ftp.archlinux.org/$repo/os/$arch +Server = http://ftp-stud.hs-esslingen.de/pub/Mirrors/archlinux/$repo/os/$arch +Server = http://mirror.vfn-nrw.de/archlinux/$repo/os/$arch +Server = http://archlinux.mirrors.benatherton.com/$repo/os/$arch +Server = http://mirror.archlinux.no/$repo/os/$arch +Server = http://mir.archlinux.fr/$repo/os/$arch +Server = http://ftp.tu-chemnitz.de/pub/linux/archlinux/$repo/os/$arch +Server = http://mirror.lastmikoi.net/archlinux/$repo/os/$arch +Server = http://mi.mirror.garr.it/mirrors/archlinux/$repo/os/$arch +Server = http://mirror.nl.leaseweb.net/archlinux/$repo/os/$arch +Server = http://mirror.t-home.mk/archlinux/$repo/os/$arch +Server = http://ftp.heanet.ie/mirrors/ftp.archlinux.org/$repo/os/$arch +Server = http://mirror.fluxent.de/archlinux/$repo/os/$arch +Server = http://mirror.selfnet.de/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.kangaroot.net/$repo/os/$arch +Server = http://archlinux.mirror.pkern.at/$repo/os/$arch +Server = http://ftp.u-strasbg.fr/linux/distributions/archlinux/$repo/os/$arch +Server = http://ftp.acc.umu.se/mirror/archlinux/$repo/os/$arch +Server = http://mirror.yandex.ru/archlinux/$repo/os/$arch +Server = http://archlinux.dynamict.se/$repo/os/$arch +Server = http://archlinux.puzzle.ch/$repo/os/$arch +Server = http://ftp.lysator.liu.se/pub/archlinux/$repo/os/$arch +Server = http://archlinux.students.cs.unibo.it/$repo/os/$arch +Server = http://mirrors.netix.net/archlinux/$repo/os/$arch +Server = http://gluttony.sin.cvut.cz/arch/$repo/os/$arch +Server = http://archlinux.mirrors.linux.ro/$repo/os/$arch +Server = http://mirrors.dotsrc.org/archlinux/$repo/os/$arch +Server = http://mirror.gerhard.re/archlinux/$repo/os/$arch +Server = http://ftp.byfly.by/pub/archlinux/$repo/os/$arch +Server = http://archlinux.uib.no/$repo/os/$arch +Server = http://mirrors.nix.org.ua/linux/archlinux/$repo/os/$arch +Server = http://mirror.isoc.org.il/pub/archlinux/$repo/os/$arch +Server = http://arch.mirror.far.fi/$repo/os/$arch +Server = http://mirror.jmu.edu/pub/archlinux/$repo/os/$arch +Server = http://mirror.system.is/arch/$repo/os/$arch +Server = http://mirror.datacenter.by/pub/archlinux/$repo/os/$arch +Server = http://mirror.rol.ru/archlinux/$repo/os/$arch +Server = http://ftp.fi.muni.cz/pub/linux/arch/$repo/os/$arch +Server = http://mirror.math.princeton.edu/pub/archlinux/$repo/os/$arch +Server = http://ftp.portlane.com/pub/os/linux/archlinux/$repo/os/$arch +Server = http://ftp.rnl.tecnico.ulisboa.pt/pub/archlinux/$repo/os/$arch +Server = http://mirrors.m247.ro/archlinux/$repo/os/$arch +Server = http://archlinux.ip-connect.vn.ua/$repo/os/$arch +Server = http://mirrors.pidginhost.com/arch/$repo/os/$arch +Server = http://mirror.one.com/archlinux/$repo/os/$arch +Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch +Server = http://mirrors.evowise.com/archlinux/$repo/os/$arch +Server = http://mirror.epiphyte.network/archlinux/$repo/os/$arch +Server = http://il.us.mirror.archlinux-br.org/$repo/os/$arch +Server = http://mirror.host.ag/archlinux/$repo/os/$arch +Server = http://mirror.grig.io/archlinux/$repo/os/$arch +Server = http://ftp.linux.org.tr/archlinux/$repo/os/$arch +Server = http://mirror.umd.edu/archlinux/$repo/os/$arch +Server = http://ftp.otenet.gr/linux/archlinux/$repo/os/$arch +Server = http://mirror.archlinux.ro/archlinux/$repo/os/$arch +Server = http://arch.localmsp.org/arch/$repo/os/$arch +Server = http://ftp.cc.uoc.gr/mirrors/linux/archlinux/$repo/os/$arch +Server = http://osl.ugr.es/archlinux/$repo/os/$arch +Server = http://mirror.neolabs.kz/archlinux/$repo/os/$arch +Server = http://foss.aueb.gr/mirrors/linux/archlinux/$repo/os/$arch +Server = http://mirror.cedille.club/archlinux/$repo/os/$arch +Server = http://mirrors.rit.edu/archlinux/$repo/os/$arch +Server = http://mirror.cc.columbia.edu/pub/linux/archlinux/$repo/os/$arch +Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch +Server = http://ftp.linux.cz/pub/linux/arch/$repo/os/$arch +Server = http://repo.sadjad.ac.ir/arch/$repo/os/$arch +Server = http://mirror3.hackingand.coffee/arch/$repo/os/$arch +Server = http://burek.archlinux.ba/$repo/os/$arch +Server = http://mirrors.rutgers.edu/archlinux/$repo/os/$arch +Server = http://mirror2.hackingand.coffee/arch/$repo/os/$arch +Server = http://mirror.es.its.nyu.edu/archlinux/$repo/os/$arch +Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch +Server = http://arch.mirror.constant.com/$repo/os/$arch +Server = http://mirrors.advancedhosters.com/archlinux/$repo/os/$arch +Server = http://repo.iut.ac.ir/repo/archlinux/$repo/os/$arch +Server = http://mirror.csclub.uwaterloo.ca/archlinux/$repo/os/$arch +Server = http://mirror.cs.vt.edu/pub/ArchLinux/$repo/os/$arch +Server = http://mirror.kaminski.io/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.rafal.ca/$repo/os/$arch +Server = http://mirror1.hackingand.coffee/arch/$repo/os/$arch +Server = http://mirrors.gigenet.com/archlinux/$repo/os/$arch +Server = http://mirror.metrocast.net/archlinux/$repo/os/$arch +Server = http://mirror.htnshost.com/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.ba/$repo/os/$arch +Server = http://muug.ca/mirror/archlinux/$repo/os/$arch +Server = http://ftp.ntua.gr/pub/linux/archlinux/$repo/os/$arch +Server = http://mirrors.aggregate.org/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.colo-serv.net/$repo/os/$arch +Server = http://mirrors.lug.mtu.edu/archlinux/$repo/os/$arch +Server = http://arch.mirrors.pair.com/$repo/os/$arch +Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch +Server = http://mirror.yellowfiber.net/archlinux/$repo/os/$arch +Server = http://za.mirror.archlinux-br.org/$repo/os/$arch +Server = http://mirror.vtti.vt.edu/archlinux/$repo/os/$arch +Server = http://mirror.qnren.qa/archlinux/$repo/os/$arch +Server = http://mirror.its.dal.ca/archlinux/$repo/os/$arch +Server = http://ca.us.mirror.archlinux-br.org/$repo/os/$arch +Server = http://mirrors.myaegean.gr/linux/archlinux/$repo/os/$arch +Server = http://mirror.lty.me/archlinux/$repo/os/$arch +Server = http://www.gtlib.gatech.edu/pub/archlinux/$repo/os/$arch +Server = http://mirrors.kernel.org/archlinux/$repo/os/$arch +Server = http://mirrors.liquidweb.com/archlinux/$repo/os/$arch +Server = http://mirrors.cat.pdx.edu/archlinux/$repo/os/$arch +Server = http://mirror.as65535.net/archlinux/$repo/os/$arch +Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch +Server = http://mirror.adminbannok.com/archlinux/$repo/os/$arch +Server = http://cosmos.cites.illinois.edu/pub/archlinux/$repo/os/$arch +Server = http://mirror.frgl.pw/archlinux/$repo/os/$arch +Server = http://mirror.edatel.net.co/archlinux/$repo/os/$arch +Server = http://mirrors.ocf.berkeley.edu/archlinux/$repo/os/$arch +Server = http://ftp.iitm.ac.in/archlinux/$repo/os/$arch +Server = http://archlinux.surlyjake.com/archlinux/$repo/os/$arch +Server = http://mirror.upb.edu.co/archlinux/$repo/os/$arch +Server = http://mirror.is.co.za/mirror/archlinux.org/$repo/os/$arch +Server = http://ftp.wa.co.za/pub/archlinux/$repo/os/$arch +Server = http://mirror.uta.edu.ec/archlinux/$repo/os/$arch +Server = http://mirror.wbs.co.za/archlinux/$repo/os/$arch +Server = http://mirror.espoch.edu.ec/archlinux/$repo/os/$arch +Server = http://mirror.cedia.org.ec/archlinux/$repo/os/$arch +Server = http://br.mirror.archlinux-br.org/$repo/os/$arch +Server = http://ftp.tku.edu.tw/Linux/ArchLinux/$repo/os/$arch +Server = http://shadow.ind.ntou.edu.tw/archlinux/$repo/os/$arch +Server = http://mirror.premi.st/archlinux/$repo/os/$arch +Server = http://archlinux.cs.nctu.edu.tw/$repo/os/$arch +Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch +Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch +Server = http://ftp.iinet.net.au/pub/archlinux/$repo/os/$arch +Server = http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/$repo/os/$arch +Server = http://mirror.rise.ph/archlinux/$repo/os/$arch +Server = http://repo.itmettke.de/archlinux/$repo/os/$arch +Server = http://mirror.kku.ac.th/archlinux/$repo/os/$arch +Server = http://mirrors.zju.edu.cn/archlinux/$repo/os/$arch +Server = http://archlinux.melbourneitmirror.net/$repo/os/$arch +Server = http://pet.inf.ufsc.br/mirrors/archlinux/$repo/os/$arch +Server = http://mirror.nus.edu.sg/archlinux/$repo/os/$arch +Server = http://mirror.0x.sg/archlinux/$repo/os/$arch +Server = http://f.archlinuxvn.org/archlinux/$repo/os/$arch +Server = http://archlinux.mirror.digitalpacific.com.au/$repo/os/$arch +Server = http://archlinux.c3sl.ufpr.br/$repo/os/$arch +Server = http://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch +Server = http://mirror.lagoon.nc/pub/archlinux/$repo/os/$arch +Server = http://mirrors.163.com/archlinux/$repo/os/$arch +Server = http://ftp.swin.edu.au/archlinux/$repo/os/$arch +Server = http://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch +Server = http://ftp.tsukuba.wide.ad.jp/Linux/archlinux/$repo/os/$arch +Server = http://mirror.archlinux.cl/$repo/os/$arch +Server = http://linorg.usp.br/archlinux/$repo/os/$arch +Server = http://download.nus.edu.sg/mirror/arch/$repo/os/$arch +Server = http://ftp.yzu.edu.tw/Linux/archlinux/$repo/os/$arch +Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch +Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch +Server = http://archlinux.nautile.nc/archlinux/$repo/os/$arch +Server = http://mirror.internode.on.net/pub/archlinux/$repo/os/$arch +Server = http://archlinux.pop-es.rnp.br/$repo/os/$arch +Server = http://mirror.poliwangi.ac.id/archlinux/$repo/os/$arch +Server = http://ftp.lanet.kr/pub/archlinux/$repo/os/$arch +Server = http://suro.ubaya.ac.id/archlinux/$repo/os/$arch +Server = http://archlinux.iskon.hr/$repo/os/$arch +Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch +Server = http://arlm.tyzoid.com/$repo/os/$arch +Server = http://ftp.kaist.ac.kr/ArchLinux/$repo/os/$arch +Server = http://glua.ua.pt/pub/archlinux/$repo/os/$arch +Server = http://mirror.aur.rocks/$repo/os/$arch +Server = http://arch.apt-get.eu/$repo/os/$arch +Server = http://mirror.chmuri.net/archmirror/$repo/os/$arch +Server = http://mirror.devilzc0de.org/archlinux/$repo/os/$arch +Server = http://sunsite.rediris.es/mirror/archlinux/$repo/os/$arch diff --git a/mirrorlist_libre b/mirrorlist_libre new file mode 100755 index 0000000..74de88e --- /dev/null +++ b/mirrorlist_libre @@ -0,0 +1,54 @@ +# Parabola GNU/Linux-libre - Last Updated: Wed Dec 20 02:59:35 GMT 2017 + +# Location: London, UK +# Responsible: Parabola Project +# Note: Not really a mirror, automatically redirects you to an Arch +# mirror when possible. Works best specifying it a few times in a +# row (404s workaround). +# Server = http://redirector.parabola.nu/$repo/os/$arch +#Server = https://redirector.parabola.nu/$repo/os/$arch + +# Location: Reykjavík, Iceland +# Responsible: Parabola Project +# Note: Not really a mirror, automatically redirects you to a Parabola +# mirror that has the file you are looking for. +# Server = http://repomirror.parabola.nu/$repo/os/$arch +#Server = https://repomirror.parabola.nu/$repo/os/$arch + +# Location: Falkenstein, Germany +# Server = http://mirror.grapentin.org/parabola/$repo/os/$arch +Server = https://mirror.grapentin.org/parabola/$repo/os/$arch + +# Location: Volendam, Netherlands +Server = https://jeweet.net/repo/parabola/$repo/os/$arch + +# Location: Amsterdam, Netherlands +# Note: Not really a mirror, but a high-speed 10GiB cache for +# mirror.yandex.ru/mirrors/parabola +# Server = http://parabola.isacdaavid.info:8080/$repo/os/$arch +Server = https://parabola.isacdaavid.info:8081/$repo/os/$arch + +# Location: Moscow, Russian Federation +# Server = http://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch +Server = https://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch + +# Location: Ho Chi Minh City, Vietnam +# Server = http://mirror.freedif.org/Parabola/$repo/os/$arch +Server = https://mirror.freedif.org/Parabola/$repo/os/$arch + +# Location: Los Angeles, CA, USA +# Note: Also visit http://alfplayer.com/ for its SNAPSHOTS ARCHIVE +Server = http://alfplayer.com/parabola/$repo/os/$arch + +# Location: Boston, MA, USA +Server = http://mirror.fsf.org/parabola/$repo/os/$arch + +# Location: Austin, TX, USA +# Server = http://parabola.serverpit.com/ +Server = https://parabola.serverpit.com/ + +# Location: Reykjavík, Iceland +# Responsible: Parabola Project +# Note: Currently pointing to repomirror.parabola.nu +# Server = http://repo.parabola.nu/$repo/os/$arch +Server = https://repo.parabola.nu/$repo/os/$arch diff --git a/packages_cinnamon.txt b/packages_cinnamon.txt new file mode 100755 index 0000000..a374aa5 --- /dev/null +++ b/packages_cinnamon.txt @@ -0,0 +1,136 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cinnamon +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnome +gnome-extra +gnome-flashback +gnome-power-manager +gnome-screensaver +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_gnome.txt b/packages_gnome.txt new file mode 100755 index 0000000..d41ab24 --- /dev/null +++ b/packages_gnome.txt @@ -0,0 +1,131 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnome +gnome-extra +gnome-flashback +gnome-power-manager +gnome-screensaver +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_kde.txt b/packages_kde.txt new file mode 100755 index 0000000..f276019 --- /dev/null +++ b/packages_kde.txt @@ -0,0 +1,135 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +kde-applications +kde-l10n-de +kdialog +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +plasma +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +telepathy-morse +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_libre.txt b/packages_libre.txt new file mode 100755 index 0000000..597afb9 --- /dev/null +++ b/packages_libre.txt @@ -0,0 +1,112 @@ +acpid +alsa-tools +alsa-utils +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +avahi +base +base-devel +bash-completion +blueman +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +efibootmgr +efitools +elementary-icon-theme +exfat-utils +fail2ban +ffmpeg +filezilla +gdisk +git +gnome +gnome-extra +gnome-power-manager +gnome-screensaver +gnuchess +grub +gtk-engine-murrine +hplip +htop +hunspell-de +icecat +icecat-l10n-de +icecat-noscript +icecat-ublock-origin +icedove +icedove-l10n-de +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mugshot +mumble +nbd +netsurf +network-manager-applet +networkmanager +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +squashfs-tools +syslinux +system-config-printer +tar +telegram-desktop +tigervnc +transmission-gtk +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4 +xfce4-goodies +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm +youtube-dl diff --git a/packages_lxde.txt b/packages_lxde.txt new file mode 100755 index 0000000..badfa62 --- /dev/null +++ b/packages_lxde.txt @@ -0,0 +1,131 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +lxde-gtk3 +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_lxqt.txt b/packages_lxqt.txt new file mode 100755 index 0000000..6a5a66e --- /dev/null +++ b/packages_lxqt.txt @@ -0,0 +1,134 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +breeze-icons +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +lxqt +lxqt-powermanagement +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +oxygen-icons +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_mate.txt b/packages_mate.txt new file mode 100755 index 0000000..c35a526 --- /dev/null +++ b/packages_mate.txt @@ -0,0 +1,133 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mate +mate-extra +mate-power-manager +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/packages_voll.txt b/packages_voll.txt new file mode 100755 index 0000000..fdfd06b --- /dev/null +++ b/packages_voll.txt @@ -0,0 +1,207 @@ +0ad +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +ardour +assaultcube +atom +audacity +avahi +avidemux-cli +base +base-devel +bash-completion +blender +bless +blueman +bluez +bmon +brasero +breeze-icons +btrfs-progs +calibre +cdrtools +chromium +cinnamon +cmake +cronie +cups +dbus +dialog +dosbox +dosfstools +dsniff +efibootmgr +efitools +elementary-icon-theme +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +freeciv +gdisk +gimp +git +gnome +gnome-extra +gnome-flashback +gnome-power-manager +gnome-screensaver +gnuchess +gparted +grub +gtk-engine-murrine +hashcat +hedgewars +hexchat +hplip +htop +hunspell-de +hydra +hydrogen +imagemagick +inkscape +intel-ucode +iw +jdk8-openjdk +kde-applications +kde-l10n-de +kdenlive +kdialog +kodi +lib32-libva-intel-driver +lib32-libva-mesa-driver +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +lib32-opencl-nvidia +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +lxde +lxqt +lxqt-powermanagement +mate +mate-extra +mate-power-manager +megaglest +mesa-vdpau +metasploit +minetest +mkinitcpio-nfs-utils +mplayer +mtr-gtk +mumble +nbd +netbeans +network-manager-applet +networkmanager +networkmanager-openvpn +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +obs-studio +onboard +opencl-nvidia +openra +openshot +openssh +openttd +openvpn +os-prober +oxygen-icons +pavucontrol +pcsx2 +pcsxr +pixz +plasma +ppp +ppsspp +pulseaudio +pulseaudio-alsa +python +python-pip +python-pykf5 +python2-pip +python2-pybluez +python2-pykf5 +qemu +qemu-arch-extra +rsync +screen +simplescreenrecorder +squashfs-tools +steam +supertux +supertuxkart +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +teeworlds +telegram-desktop +telepathy-morse +thunderbird +thunderbird-i18n-de +tigervnc +traceroute +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +unrar +unzip +vlc +warzone2100 +wget +widelands +wine +wine-mono +wine_gecko +wireless_tools +wireshark-gtk +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4 +xfce4-goodies +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm +youtube-dl diff --git a/packages_xfce4.txt b/packages_xfce4.txt new file mode 100755 index 0000000..cca2ed4 --- /dev/null +++ b/packages_xfce4.txt @@ -0,0 +1,132 @@ +acpid +aircrack-ng +alsa-tools +alsa-utils +android-tools +android-udev +arandr +arc-gtk-theme +arc-icon-theme +arch-install-scripts +atom +avahi +base +base-devel +bash-completion +bless +blueman +bmon +brasero +btrfs-progs +cdrtools +cmake +cronie +cups +dbus +dialog +dosfstools +dsniff +efibootmgr +efitools +exfat-utils +fail2ban +ffmpeg +file-roller +filezilla +firefox +firefox-i18n-de +gdisk +git +gnuchess +gparted +grub +gtk-engine-murrine +htop +hunspell-de +hydra +intel-ucode +iw +jdk8-openjdk +lib32-libva-vdpau-driver +lib32-libvdpau +lib32-mesa-vdpau +lib32-nvidia-libgl +libdvdcss +libdvdnav +libdvdread +libreoffice-fresh +libreoffice-fresh-de +libva-intel-driver +libva-mesa-driver +libva-vdpau-driver +libvdpau-va-gl +links +mesa-vdpau +mkinitcpio-nfs-utils +mplayer +mumble +nbd +network-manager-applet +networkmanager +nmap +noto-fonts +noto-fonts-emoji +ntfs-3g +ntp +nvidia +nvidia-libgl +nvidia-settings +onboard +opencl-nvidia +openssh +openvpn +os-prober +pavucontrol +pixz +ppp +pulseaudio +pulseaudio-alsa +python +python-pip +python2-pip +qemu +rsync +screen +squashfs-tools +steam +syslinux +system-config-printer +tar +tcpdump +teamspeak3 +telegram-desktop +thunderbird +thunderbird-i18n-de +tigervnc +transmission-gtk +ttf-dejavu +ttf-liberation +ufw +vlc +wget +wireless_tools +wpa_supplicant +x11vnc +xdg-utils +xf86-input-synaptics +xfce4 +xfce4-goodies +xfce4-power-manager +xfce4-pulseaudio-plugin +xfce4-sensors-plugin +xfce4-xkb-plugin +xorg +xorg-drivers +xorg-server +xorg-twm +xorg-xclock +xorg-xdm +xorg-xinit +xorriso +xscreensaver +xterm diff --git a/pacman.conf b/pacman.conf new file mode 100755 index 0000000..ea8a612 --- /dev/null +++ b/pacman.conf @@ -0,0 +1,102 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -4 -v -C - -f %u > %o +#XferCommand = /usr/bin/wget -4 --passive-ftp -c -t 0 -O %o %u +#XferCommand = /usr/bin/snarf -N %u +#XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +Color +#TotalDownload +CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Never +LocalFileSigLevel = Optional +RemoteFileSigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +# If you want to run 32 bit applications on your x86_64 system, +# enable the multilib repositories as required here. + +#[multilib-testing] +#Include = /etc/pacman.d/mirrorlist + +[multilib] +Include = /etc/pacman.d/mirrorlist + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs diff --git a/pacman.conf_libre b/pacman.conf_libre new file mode 100755 index 0000000..a8d82bc --- /dev/null +++ b/pacman.conf_libre @@ -0,0 +1,147 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Never +LocalFileSigLevel = Optional +RemoteFileSigLevel = Never + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all Arch/Parabola packagers +# with `pacman-key --populate archlinux` and `pacman-key --populate parabola`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +# NOTE: Nonprism is a particular repository that aims to provide software built +# and patched without services under global data surveillance programs like PRISM, +# XKeyscore and Tempora. For more info see: https://wiki.parabola.nu/Nonprism + +#[nonprism-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +#[nonprism] +#Include = /etc/pacman.d/mirrorlist_libre + +#[libre-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +[libre] +Include = /etc/pacman.d/mirrorlist_libre + +#[testing] +#Include = /etc/pacman.d/mirrorlist_libre + +[core] +Include = /etc/pacman.d/mirrorlist_libre + +[extra] +Include = /etc/pacman.d/mirrorlist_libre + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +[community] +Include = /etc/pacman.d/mirrorlist_libre + +# The PCR (Parabola Community Repository) contains packages maintained by trusted +# members of the Parabola community. It also contains packages maintained by +# Parabola developers, but that the developer decided didn't belong in core/libre. + +#[pcr-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +[pcr] +Include = /etc/pacman.d/mirrorlist_libre + +# If you want to run 32 bit applications on your x86_64 system, +# enable the libre-multilib, multilib and pcr-multilib repositories as required here. + +#[nonprism-multilib-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +#[nonprism-multilib] +#Include = /etc/pacman.d/mirrorlist_libre + +#[libre-multilib-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +#[libre-multilib] +#Include = /etc/pacman.d/mirrorlist_libre + +#[multilib-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +[multilib] +Include = /etc/pacman.d/mirrorlist_libre + +#[pcr-multilib-testing] +#Include = /etc/pacman.d/mirrorlist_libre + +#[pcr-multilib] +#Include = /etc/pacman.d/mirrorlist_libre + +# Parabola also supports another community projects and personal repositories, to +# find them check out this wiki page: https://wiki.parabola.nu/Repositories + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs diff --git a/pacstrap b/pacstrap new file mode 100755 index 0000000..7f31d29 --- /dev/null +++ b/pacstrap @@ -0,0 +1,377 @@ +#!/bin/bash + +# +# Assumptions: +# 1) User has partitioned, formatted, and mounted partitions on /mnt +# 2) Network is functional +# 3) Arguments passed to the script are valid pacman targets +# 4) A valid mirror appears in /etc/pacman.d/mirrorlist +# + +shopt -s extglob + +# generated from util-linux source: libmount/src/utils.c +declare -A pseudofs_types=([anon_inodefs]=1 + [autofs]=1 + [bdev]=1 + [binfmt_misc]=1 + [cgroup]=1 + [configfs]=1 + [cpuset]=1 + [debugfs]=1 + [devfs]=1 + [devpts]=1 + [devtmpfs]=1 + [dlmfs]=1 + [fuse.gvfs-fuse-daemon]=1 + [fusectl]=1 + [hugetlbfs]=1 + [mqueue]=1 + [nfsd]=1 + [none]=1 + [pipefs]=1 + [proc]=1 + [pstore]=1 + [ramfs]=1 + [rootfs]=1 + [rpc_pipefs]=1 + [securityfs]=1 + [sockfs]=1 + [spufs]=1 + [sysfs]=1 + [tmpfs]=1) + +# generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort +declare -A fsck_types=([cramfs]=1 + [exfat]=1 + [ext2]=1 + [ext3]=1 + [ext4]=1 + [ext4dev]=1 + [jfs]=1 + [minix]=1 + [msdos]=1 + [reiserfs]=1 + [vfat]=1 + [xfs]=1) + +out() { printf "$1 $2\n" "${@:3}"; } +error() { out "==> ERROR:" "$@"; } >&2 +msg() { out "==>" "$@"; } +msg2() { out " ->" "$@";} +die() { error "$@"; exit 1; } + +ignore_error() { + "$@" 2>/dev/null + return 0 +} + +in_array() { + local i + for i in "${@:2}"; do + [[ $1 = "$i" ]] && return 0 + done + return 1 +} + +chroot_add_mount() { + mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}") +} + +chroot_maybe_add_mount() { + local cond=$1; shift + if eval "$cond"; then + chroot_add_mount "$@" + fi +} + +chroot_setup() { + CHROOT_ACTIVE_MOUNTS=() + [[ $(trap -p EXIT) ]] && die '(BUG): attempting to overwrite existing EXIT trap' + trap 'chroot_teardown' EXIT + + chroot_maybe_add_mount "! mountpoint -q '$1'" "$1" "$1" --bind && + chroot_add_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev && + chroot_add_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro && + ignore_error chroot_maybe_add_mount "[[ -d '$1/sys/firmware/efi/efivars' ]]" \ + efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev && + chroot_add_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid && + chroot_add_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec && + chroot_add_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev && + chroot_add_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 && + chroot_add_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid +} + +chroot_teardown() { + umount "${CHROOT_ACTIVE_MOUNTS[@]}" + unset CHROOT_ACTIVE_MOUNTS +} + +try_cast() ( + _=$(( $1#$2 )) +) 2>/dev/null + +valid_number_of_base() { + local base=$1 len=${#2} i= + + for (( i = 0; i < len; i++ )); do + try_cast "$base" "${2:i:1}" || return 1 + done + + return 0 +} + +mangle() { + local i= chr= out= + + unset {a..f} {A..F} + + for (( i = 0; i < ${#1}; i++ )); do + chr=${1:i:1} + case $chr in + [[:space:]\\]) + printf -v chr '%03o' "'$chr" + out+=\\ + ;; + esac + out+=$chr + done + + printf '%s' "$out" +} + +unmangle() { + local i= chr= out= len=$(( ${#1} - 4 )) + + unset {a..f} {A..F} + + for (( i = 0; i < len; i++ )); do + chr=${1:i:1} + case $chr in + \\) + if valid_number_of_base 8 "${1:i+1:3}" || + valid_number_of_base 16 "${1:i+1:3}"; then + printf -v chr '%b' "${1:i:4}" + (( i += 3 )) + fi + ;; + esac + out+=$chr + done + + printf '%s' "$out${1:i}" +} + +optstring_match_option() { + local candidate pat patterns + + IFS=, read -ra patterns <<<"$1" + for pat in "${patterns[@]}"; do + if [[ $pat = *=* ]]; then + # "key=val" will only ever match "key=val" + candidate=$2 + else + # "key" will match "key", but also "key=anyval" + candidate=${2%%=*} + fi + + [[ $pat = "$candidate" ]] && return 0 + done + + return 1 +} + +optstring_remove_option() { + local o options_ remove=$2 IFS=, + + read -ra options_ <<<"${!1}" + + for o in "${!options_[@]}"; do + optstring_match_option "$remove" "${options_[o]}" && unset 'options_[o]' + done + + declare -g "$1=${options_[*]}" +} + +optstring_normalize() { + local o options_ norm IFS=, + + read -ra options_ <<<"${!1}" + + # remove empty fields + for o in "${options_[@]}"; do + [[ $o ]] && norm+=("$o") + done + + # avoid empty strings, reset to "defaults" + declare -g "$1=${norm[*]:-defaults}" +} + +optstring_append_option() { + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=${!1},$2" + fi + + optstring_normalize "$1" +} + +optstring_prepend_option() { + local options_=$1 + + if ! optstring_has_option "$1" "$2"; then + declare -g "$1=$2,${!1}" + fi + + optstring_normalize "$1" +} + +optstring_get_option() { + local opts o + + IFS=, read -ra opts <<<"${!1}" + for o in "${opts[@]}"; do + if optstring_match_option "$2" "$o"; then + declare -g "$o" + return 0 + fi + done + + return 1 +} + +optstring_has_option() { + local "${2%%=*}" + + optstring_get_option "$1" "$2" +} + +dm_name_for_devnode() { + read dm_name <"/sys/class/block/${1#/dev/}/dm/name" + if [[ $dm_name ]]; then + printf '/dev/mapper/%s' "$dm_name" + else + # don't leave the caller hanging, just print the original name + # along with the failure. + print '%s' "$1" + error 'Failed to resolve device mapper name for: %s' "$1" + fi +} + +fstype_is_pseudofs() { + (( pseudofs_types["$1"] )) +} + +fstype_has_fsck() { + (( fsck_types["$1"] )) +} + + +hostcache=0 +copykeyring=1 +copymirrorlist=1 + +usage() { + cat < tempdatei + mv tempdatei $1 + shift +done diff --git a/releng/all/archiso-x86_64-cd-cinnamon.conf b/releng/all/archiso-x86_64-cd-cinnamon.conf new file mode 100755 index 0000000..fe14b7c --- /dev/null +++ b/releng/all/archiso-x86_64-cd-cinnamon.conf @@ -0,0 +1,5 @@ +# default cinnamon +title %ISO_LABEL% %arch% UEFI DVD DEFAULT CINNAMON +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=cinnamon diff --git a/releng/all/archiso-x86_64-cd-gnome.conf b/releng/all/archiso-x86_64-cd-gnome.conf new file mode 100755 index 0000000..64ce5d8 --- /dev/null +++ b/releng/all/archiso-x86_64-cd-gnome.conf @@ -0,0 +1,5 @@ +# default gnome +title %ISO_LABEL% %arch% UEFI DVD DEFAULT GNOME +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=gnome diff --git a/releng/all/archiso-x86_64-cd-kde.conf b/releng/all/archiso-x86_64-cd-kde.conf new file mode 100755 index 0000000..6456a61 --- /dev/null +++ b/releng/all/archiso-x86_64-cd-kde.conf @@ -0,0 +1,5 @@ +# default kde +title %ISO_LABEL% %arch% UEFI DVD DEFAULT KDE +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=kde diff --git a/releng/all/archiso-x86_64-cd-lxde.conf b/releng/all/archiso-x86_64-cd-lxde.conf new file mode 100755 index 0000000..3ca126e --- /dev/null +++ b/releng/all/archiso-x86_64-cd-lxde.conf @@ -0,0 +1,5 @@ +# default lxde +title %ISO_LABEL% %arch% UEFI DVD DEFAULT LXDE +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxde diff --git a/releng/all/archiso-x86_64-cd-lxqt.conf b/releng/all/archiso-x86_64-cd-lxqt.conf new file mode 100755 index 0000000..c600e18 --- /dev/null +++ b/releng/all/archiso-x86_64-cd-lxqt.conf @@ -0,0 +1,5 @@ +# default lxqt +title %ISO_LABEL% %arch% UEFI DVD DEFAULT LXQT +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxqt diff --git a/releng/all/archiso-x86_64-cd-mate.conf b/releng/all/archiso-x86_64-cd-mate.conf new file mode 100755 index 0000000..1f887c2 --- /dev/null +++ b/releng/all/archiso-x86_64-cd-mate.conf @@ -0,0 +1,5 @@ +# default mate +title %ISO_LABEL% %arch% UEFI DVD DEFAULT MATE +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=mate diff --git a/releng/all/archiso-x86_64-cd-xfce4.conf b/releng/all/archiso-x86_64-cd-xfce4.conf new file mode 100755 index 0000000..384a294 --- /dev/null +++ b/releng/all/archiso-x86_64-cd-xfce4.conf @@ -0,0 +1,5 @@ +# default xfce4 +title %ISO_LABEL% %arch% UEFI DVD DEFAULT XFCE4 +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=xfce4 diff --git a/releng/all/archiso-x86_64-usb-cinnamon.conf b/releng/all/archiso-x86_64-usb-cinnamon.conf new file mode 100755 index 0000000..beedce8 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-cinnamon.conf @@ -0,0 +1,5 @@ +# default cinnamon +title %ISO_LABEL% %arch% UEFI USB DEFAULT CINNAMON +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=cinnamon diff --git a/releng/all/archiso-x86_64-usb-gnome.conf b/releng/all/archiso-x86_64-usb-gnome.conf new file mode 100755 index 0000000..ced191c --- /dev/null +++ b/releng/all/archiso-x86_64-usb-gnome.conf @@ -0,0 +1,5 @@ +# default gnome +title %ISO_LABEL% %arch% UEFI USB DEFAULT GNOME +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=gnome diff --git a/releng/all/archiso-x86_64-usb-kde.conf b/releng/all/archiso-x86_64-usb-kde.conf new file mode 100755 index 0000000..78b3cd2 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-kde.conf @@ -0,0 +1,5 @@ +# default kde +title %ISO_LABEL% %arch% UEFI USB DEFAULT KDE +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=kde diff --git a/releng/all/archiso-x86_64-usb-lxde.conf b/releng/all/archiso-x86_64-usb-lxde.conf new file mode 100755 index 0000000..cba2729 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-lxde.conf @@ -0,0 +1,5 @@ +# default lxde +title %ISO_LABEL% %arch% UEFI USB DEFAULT LXDE +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxde diff --git a/releng/all/archiso-x86_64-usb-lxqt.conf b/releng/all/archiso-x86_64-usb-lxqt.conf new file mode 100755 index 0000000..8280020 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-lxqt.conf @@ -0,0 +1,5 @@ +# default lxqt +title %ISO_LABEL% %arch% UEFI USB DEFAULT LXQT +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxqt diff --git a/releng/all/archiso-x86_64-usb-mate.conf b/releng/all/archiso-x86_64-usb-mate.conf new file mode 100755 index 0000000..01a9cf0 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-mate.conf @@ -0,0 +1,5 @@ +# default mate +title %ISO_LABEL% %arch% UEFI USB DEFAULT MATE +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=mate diff --git a/releng/all/archiso-x86_64-usb-xfce4.conf b/releng/all/archiso-x86_64-usb-xfce4.conf new file mode 100755 index 0000000..ae86a76 --- /dev/null +++ b/releng/all/archiso-x86_64-usb-xfce4.conf @@ -0,0 +1,5 @@ +# default xfce4 +title %ISO_LABEL% %arch% UEFI USB DEFAULT XFCE4 +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=xfce4 diff --git a/releng/archiso-x86_64-cd-default-checksum.conf b/releng/archiso-x86_64-cd-default-checksum.conf new file mode 100755 index 0000000..b945980 --- /dev/null +++ b/releng/archiso-x86_64-cd-default-checksum.conf @@ -0,0 +1,5 @@ +# default checksum +title %ISO_LABEL% %arch% UEFI DVD DEFAULT Check disc for defects +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M checksum=y diff --git a/releng/archiso-x86_64-cd-default.conf b/releng/archiso-x86_64-cd-default.conf new file mode 100755 index 0000000..3a7f917 --- /dev/null +++ b/releng/archiso-x86_64-cd-default.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI DVD DEFAULT +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M diff --git a/releng/archiso-x86_64-cd-default_noimage-toram.conf b/releng/archiso-x86_64-cd-default_noimage-toram.conf new file mode 100755 index 0000000..2a5ebe2 --- /dev/null +++ b/releng/archiso-x86_64-cd-default_noimage-toram.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI DVD DEFAULT NOIMAGE TORAM +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_label=cow_device copytoram=y diff --git a/releng/archiso-x86_64-cd-default_noimage.conf b/releng/archiso-x86_64-cd-default_noimage.conf new file mode 100755 index 0000000..57c7ef0 --- /dev/null +++ b/releng/archiso-x86_64-cd-default_noimage.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI DVD DEFAULT NOIMAGE +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_label=cow_device diff --git a/releng/archiso-x86_64-cd-default_toram.conf b/releng/archiso-x86_64-cd-default_toram.conf new file mode 100755 index 0000000..5ddc246 --- /dev/null +++ b/releng/archiso-x86_64-cd-default_toram.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI DVD DEFAULT TORAM +linux /EFI/archiso/vmlinuz.efi +initrd /EFI/archiso/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% copytoram=y cow_spacesize=1024M diff --git a/releng/archiso-x86_64-usb-default-checksum.conf b/releng/archiso-x86_64-usb-default-checksum.conf new file mode 100755 index 0000000..b4aa86c --- /dev/null +++ b/releng/archiso-x86_64-usb-default-checksum.conf @@ -0,0 +1,5 @@ +# default checksum +title %ISO_LABEL% %arch% UEFI USB DEFAULT Check disc for defects +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M checksum=y diff --git a/releng/archiso-x86_64-usb-default.conf b/releng/archiso-x86_64-usb-default.conf new file mode 100755 index 0000000..1494d5a --- /dev/null +++ b/releng/archiso-x86_64-usb-default.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI USB DEFAULT +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_spacesize=1024M diff --git a/releng/archiso-x86_64-usb-default_noimage-toram.conf b/releng/archiso-x86_64-usb-default_noimage-toram.conf new file mode 100755 index 0000000..1f231ee --- /dev/null +++ b/releng/archiso-x86_64-usb-default_noimage-toram.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI USB DEFAULT NOIMAGE TORAM +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_label=cow_device copytoram=y diff --git a/releng/archiso-x86_64-usb-default_noimage.conf b/releng/archiso-x86_64-usb-default_noimage.conf new file mode 100755 index 0000000..6052b12 --- /dev/null +++ b/releng/archiso-x86_64-usb-default_noimage.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI USB DEFAULT NOIMAGE +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% cow_label=cow_device diff --git a/releng/archiso-x86_64-usb-default_toram.conf b/releng/archiso-x86_64-usb-default_toram.conf new file mode 100755 index 0000000..72176d7 --- /dev/null +++ b/releng/archiso-x86_64-usb-default_toram.conf @@ -0,0 +1,5 @@ +# default +title %ISO_LABEL% %arch% UEFI USB DEFAULT TORAM +linux /%INSTALL_DIR%/boot/%arch%/vmlinuz +initrd /%INSTALL_DIR%/boot/%arch%/archiso.img +options archisobasedir=%INSTALL_DIR% archisolabel=%ISO_LABEL% copytoram=y cow_spacesize=1024M diff --git a/santana.tar.xz b/santana.tar.xz new file mode 100755 index 0000000..54e3be1 Binary files /dev/null and b/santana.tar.xz differ diff --git a/script/archiso_shutdown b/script/archiso_shutdown new file mode 100755 index 0000000..41b3945 --- /dev/null +++ b/script/archiso_shutdown @@ -0,0 +1,37 @@ +#!/bin/ash + +# /oldroot depends on things inside /oldroot/run/archiso... +mkdir /oldrun +mount -n --move /oldroot/run /oldrun + +# Unmount all mounts now. +umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r) + +# Remove all dm-snapshot devices. +dmsetup remove_all + +# Remove all loopback devices. +for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do + if ! losetup -d ${_lup} 2> /dev/null; then + umount -d ${_lup} + fi +done + +# Unmount the space used to store *.cow. +umount /oldrun/archiso/cowspace + +# Unmount boot device if needed (no copytoram=y used) +if [[ ! -d /oldrun/archiso/copytoram ]]; then + if [[ -d /oldrun/archiso/img_dev ]]; then + umount /oldrun/archiso/img_dev + else + umount /oldrun/archiso/bootmnt + fi +fi + +# reboot / poweroff / halt, depending on the argument passed by init +# if something invalid is passed, we halt +case "$1" in + reboot|poweroff|halt) "$1" -f ;; + *) halt -f;; +esac diff --git a/sgit b/sgit new file mode 100755 index 0000000..2398471 --- /dev/null +++ b/sgit @@ -0,0 +1,27 @@ +#!/bin/bash + +set -ex + +if [[ "--help" == "${1}" ]]; then +echo "bash ./sgit user.email commit" +fi + +if [[ -z "${2}" ]]; then +echo "Bitte email und commit angeben!!!" +exit 1 +fi + +push="${3}" +[[ -z "${push}" ]] && push="origin" + +git config --global core.editor "nano" +git config --global user.email "${1}" +git config --global user.name "${1}" +git config --global push.default simple +git status +git add --all +git commit --all -m "${2}" +git pull +git show +git push "${push}" +git status diff --git a/sgit-amend b/sgit-amend new file mode 100755 index 0000000..6f39958 --- /dev/null +++ b/sgit-amend @@ -0,0 +1,10 @@ +#!/bin/bash + +set -ex + +git config --global core.editor "nano" +git add --all +git commit --amend +git show +git push -f +git status diff --git a/snapshot.sh b/snapshot.sh new file mode 100755 index 0000000..8ce5d71 --- /dev/null +++ b/snapshot.sh @@ -0,0 +1,66 @@ +#!/bin/bash + +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 0 +fi +echo "Als root Angemeldet" + +if [ "make" == "$1" ]; then + + while (( "$(expr $# - 1)" )) + do + + pfad="${2}" + + echo `date "+%Y%m%d-%H%M%S"` > /run/btrfs-root/__current/${pfad}/SNAPSHOT + echo "BACKUP" >> /run/btrfs-root/__current/${pfad}/SNAPSHOT + + mkdir -p /run/btrfs-root/__snapshot/${pfad%/*} + btrfs subvolume snapshot -r /run/btrfs-root/__current/${pfad} /run/btrfs-root/__snapshot/${pfad}@`head -n 1 /run/btrfs-root/__current/${pfad}/SNAPSHOT` + + rm /run/btrfs-root/__current/${pfad}/SNAPSHOT + + shift + + done + +elif [ "restore" == "$1" ]; then + + while (( "$(expr $# - 1)" )) + do + + pfad="${2}" + + if [ -d /run/btrfs-root/__current/${pfad/@*}.old ]; then + btrfs subvolume delete /run/btrfs-root/__current/${pfad/@*}.old + fi + mv /run/btrfs-root/__current/${pfad/@*} /run/btrfs-root/__current/${pfad/@*}.old + btrfs subvolume snapshot /run/btrfs-root/__snapshot/${pfad} /run/btrfs-root/__current/${pfad/@*} + + shift + + done + + + btrfs subvolume list -p / + + #echo "Bitte noch die /etc/fstab editieren und die neuen IDs eintragen!!!" + + echo "Bitte damit die Änderungen wirksam werden das System neustarten!!!" + + #reboot + +else + + echo "bash ./snapshot.sh PARAMETER PFAD" + echo "Parameters: make restore" + echo "make ROOT home opt var/cache/pacman/pkg" + echo "restore ROOT@20170725-235544 home@20170725-235544 opt@20170725-235544 var/cache/pacman/pkg@20170725-235544" + + btrfs subvolume list -p / + +fi diff --git a/sort.sh b/sort.sh new file mode 100755 index 0000000..85a700b --- /dev/null +++ b/sort.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -ex + +while (( "$(expr $#)" )) +do + for i in $(cat $1) ; do echo $i ; done | sort | uniq > test + cp test $1 + shift +done diff --git a/ssh-keygen-auto.sh b/ssh-keygen-auto.sh new file mode 100755 index 0000000..87f22a3 --- /dev/null +++ b/ssh-keygen-auto.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -ex + +server="$1" +[[ -z "${server}" ]] && echo "Bitte einen SSH-Server eintragen!!!" && exit 1 + +server=root@${server} + +ssh-keygen -b 4096 +cat ~/.ssh/id_rsa.pub +ssh-copy-id -i ~/.ssh/id_rsa.pub ${server} + +echo "Fertig!!!" diff --git a/sshd_config b/sshd_config new file mode 100755 index 0000000..86b094f --- /dev/null +++ b/sshd_config @@ -0,0 +1,118 @@ +# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_dsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +PermitRootLogin yes +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#PubkeyAuthentication yes + +# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 +# but this is overridden so installations will only check .ssh/authorized_keys +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +PasswordAuthentication no +#PermitEmptyPasswords no + +# Change to no to disable s/key passwords +ChallengeResponseAuthentication no + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and ChallengeResponseAuthentication to 'no'. +UsePAM yes + +#AllowAgentForwarding yes +AllowTcpForwarding yes +#GatewayPorts no +X11Forwarding yes +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +PrintMotd no # pam does that +#PrintLastLog yes +TCPKeepAlive yes +#UseLogin no +#PermitUserEnvironment no +#Compression delayed +ClientAliveInterval 120 +ClientAliveCountMax 15 +#UseDNS no +#PidFile /run/sshd.pid +#MaxStartups 10:30:100 +PermitTunnel yes +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# override default of no subsystems +Subsystem sftp /usr/lib/ssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server diff --git a/startup b/startup new file mode 100755 index 0000000..8f58170 --- /dev/null +++ b/startup @@ -0,0 +1,69 @@ +#!/bin/bash + +echo "Start!!!" + +date >> /startup.txt + +if [ -f /usr/bin/run ] +then + chmod +x /usr/bin/run + /usr/bin/run + rm /usr/bin/run +fi + +# Disable IPv6 +#echo 0 > /proc/sys/net/ipv6/conf/wlan0/accept_ra +#echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 + +# tunneling +#echo 1 > /proc/sys/net/ipv4/ip_forward + +if cat /proc/cmdline | grep "nvidia=y"; then + + echo ":: nvidia driver loaded" + + mkdir -p -m 755 /etc/X11/xorg.conf.d/ + + echo "Section \"Device\"" > /etc/X11/xorg.conf + echo " Identifier \"Device0\"" >> /etc/X11/xorg.conf + echo " Driver \"nvidia\"" >> /etc/X11/xorg.conf + echo " VendorName \"NVIDIA Corporation\"" >> /etc/X11/xorg.conf + echo "EndSection" >> /etc/X11/xorg.conf + +fi + +echo ":: set graphical-desktop!" +mkdir -p -m 755 "/etc/X11/xinit" +if cat /proc/cmdline | grep "desktop=gnome"; then + echo "exec gnome-session" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=gnomeflash"; then + echo "export XDG_CURRENT_DESKTOP=GNOME-Flashback:GNOME" > /etc/X11/xinit/xinitrc + echo "exec gnome-session --session=gnome-flashback-metacity" >> /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=gnomeclassic"; then + echo "export XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME" > /etc/X11/xinit/xinitrc + echo "export GNOME_SHELL_SESSION_MODE=classic" >> /etc/X11/xinit/xinitrc + echo "exec gnome-session --session=gnome-classic" >> /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=cinnamon"; then + echo "exec cinnamon-session" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=mate"; then + echo "exec mate-session" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=lxde"; then + echo "exec startlxde" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=lxqt"; then + echo "exec startlxqt" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=xfce4"; then + echo "exec startxfce4" > /etc/X11/xinit/xinitrc + +elif cat /proc/cmdline | grep "desktop=kde"; then + echo "exec startkde" > /etc/X11/xinit/xinitrc + +else + echo ":: default graphical-desktop" +fi diff --git a/startup.service b/startup.service new file mode 100755 index 0000000..338b3e3 --- /dev/null +++ b/startup.service @@ -0,0 +1,11 @@ +[Unit] +Description=startup +After=multi-user.target + +[Service] +User=root +Type=simple +ExecStart=/usr/bin/startup + +[Install] +WantedBy=multi-user.target diff --git a/syslinux-noimage.cfg b/syslinux-noimage.cfg new file mode 100755 index 0000000..fbbd3ee --- /dev/null +++ b/syslinux-noimage.cfg @@ -0,0 +1,6 @@ +# default noimage +LABEL arch +MENU LABEL SPECTRE_OS DEFAULT NOIMAGE +LINUX /arch/boot/x86_64/vmlinuz +INITRD /arch/boot/x86_64/archiso.img +APPEND archisolabel=SPECTRE_OS cow_label=cow_device diff --git a/syslinux-standart.cfg b/syslinux-standart.cfg new file mode 100755 index 0000000..b1c8b14 --- /dev/null +++ b/syslinux-standart.cfg @@ -0,0 +1,35 @@ +# default +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M + +# default toram +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT TORAM +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% copytoram=y cow_spacesize=1024M + +# default noimage +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT NOIMAGE +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_label=cow_device + +# default noimage toram +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT NOIMAGE TORAM +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_label=cow_device copytoram=y + +# default checksum +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT Check disc for defects +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M checksum=y + diff --git a/syslinux.cfg b/syslinux.cfg new file mode 100755 index 0000000..be8b22c --- /dev/null +++ b/syslinux.cfg @@ -0,0 +1,84 @@ +# default +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M + +# default Gnome +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT GNOME +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=gnome + +# default cinnamon +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT CINNAMON +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=cinnamon + +# default mate +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT MATE +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=mate + +# default lxde +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT LXDE +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxde + +# default lxqt +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT LXQT +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=lxqt + +# default xfce4 +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT XFCE4 +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=xfce4 + +# default kde +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT KDE +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M desktop=kde + +# default toram +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT TORAM +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% copytoram=y cow_spacesize=1024M + +# default noimage +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT NOIMAGE +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_label=cow_device + +# default noimage toram +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT NOIMAGE TORAM +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_label=cow_device copytoram=y + +# default checksum +LABEL arch +MENU LABEL %ISO_LABEL% DEFAULT Check disc for defects +LINUX /%INSTALL_DIR%/boot/%arch%/vmlinuz +INITRD /%INSTALL_DIR%/boot/%arch%/archiso.img +APPEND archisolabel=%ISO_LABEL% cow_spacesize=1024M checksum=y + diff --git a/uefi-shell-v1-x86_64.conf b/uefi-shell-v1-x86_64.conf new file mode 100755 index 0000000..9597ff2 --- /dev/null +++ b/uefi-shell-v1-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v1 +efi /EFI/shellx64_v1.efi diff --git a/uefi-shell-v2-x86_64.conf b/uefi-shell-v2-x86_64.conf new file mode 100755 index 0000000..0dde77a --- /dev/null +++ b/uefi-shell-v2-x86_64.conf @@ -0,0 +1,2 @@ +title UEFI Shell x86_64 v2 +efi /EFI/shellx64_v2.efi diff --git a/update.sh b/update.sh new file mode 100755 index 0000000..643f497 --- /dev/null +++ b/update.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# +# sudo update standart username userpass +# +set -ex + +echo "Version : Fr 22. Dez 00:00:41 CET 2017" + +WEBADDRESS="http://137.74.140.105/simono41/SpectreOS.git" +repo="SpectreOS" +user="user1" + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + sudo $0 + exit 0 +fi +echo "Als root Angemeldet" + +function gitclone() { + cd /root/ + if [ -d "${repo}" ]; then + echo "${repo} existiert bereits!!!" + cd ${repo} + git pull + cd .. + else + git clone ${WEBADDRESS} + fi + cd / +} + +if [ "${1}" != "n" ] +then + read -p "Soll im Internet geguckt werden ob es neue Updates gibt?: [Y/n] " update + if [ "${update}" == "debug" ] + then + echo "Überspringe das herunterladen einen neuen Scriptes!!!" + else + if [ "${update}" != "n" ] + then + if [ -f /usr/bin/git ]; then + gitclone + else + echo "Git is not installet" + pacman -S git --needed --noconfirm + fi + /root/${repo}/arch-graphical-install-auto "$1" "$2" "$3" + read -p "Aktualisierung erfolgreich Abgeschlossen. Wollen sie den PC NEUSTARTEN?: [Y/n] " sicherheitsabfrage + if [ "$sicherheitsabfrage" != "n" ] + then + echo "starte neu" + reboot + fi + exit 0 + fi + fi +fi diff --git a/write_cowspace b/write_cowspace new file mode 100755 index 0000000..6b9b611 --- /dev/null +++ b/write_cowspace @@ -0,0 +1,77 @@ +#!/bin/bash + +set -ex + +if [[ $EUID -ne 0 ]]; then + echo "This script must be run as root" 1>&2 + exit 1 +fi +# Satz="Hallo du schöne Welt" +# echo "${Satz:0:5} ${Satz:16}" + +#system=$(blkid -L SIMON_OS) +#echo $system + +#/dev/sdd +#system1=$(echo "${system:0:8}") +#echo $system1 + +fdisk -l + +function secureumount() { + #statements + # + if cat /proc/mounts | grep ${device}1 > /dev/null; then + echo "gemountet" + umount ${device}1 + else + echo "nicht gemountet" + fi + # + if cat /proc/mounts | grep ${device}2 > /dev/null; then + echo "gemountet" + umount ${device}2 + else + echo "nicht gemountet" + fi + # + if cat /proc/mounts | grep ${device}3 > /dev/null; then + echo "gemountet" + umount ${device}3 + else + echo "nicht gemountet" + fi + # +} + +read -p "Soll das Image jetzt eine Partition zum Offline-Schreiben erhalten? [Y/n] " partition +if [ "$partition" != "n" ] +then + if [ "$device" == "" ] + then + fdisk -l + read -p "Wo das Image jetzt geschrieben werden? /dev/sda " device + [[ -z "${device}" ]] && device=/dev/sda + fi + + secureumount + + fdisk -W always ${device} <