Compare commits

...

8 Commits
v1.09 ... v1.11

9 changed files with 263 additions and 17 deletions

6
TODO
View File

@@ -2,6 +2,12 @@
-include WinMTR, build Mac OS X MTR for dist/tools on CD -include WinMTR, build Mac OS X MTR for dist/tools on CD
-include pre-compiled DoxBox for opening LUKS parts on Windows (https://github.com/t-d-k/doxbox) -include pre-compiled DoxBox for opening LUKS parts on Windows (https://github.com/t-d-k/doxbox)
-include benchmarking
-- http://sourceforge.net/projects/unixbench/
-- https://code.google.com/p/byte-unixbench/
-- https://github.com/akopytov/sysbench
-- (http://blog.due.io/2014/linode-digitalocean-and-vultr-comparison/ etc.)
-write doc on required chroot packages (e.g. pv, archiso*, etc.) so those wanting to remaster know which packages to leave in
## NETWORKING ## ## NETWORKING ##

3
extra/external/SMC_DumpKey/README vendored Normal file
View File

@@ -0,0 +1,3 @@
taken with graces to http://www.contrib.andrew.cmu.edu/~somlo/OSXKVM/
Needs to be compiled on linux with gcc, and only runs on genuine Apple hardware (as it polls the SMC chip for the given value)

193
extra/external/SMC_DumpKey/SmcDumpKey.c vendored Normal file
View File

@@ -0,0 +1,193 @@
/*
* prints out 4-character name of the SMC key at given index position;
*
* by Gabriel L. Somlo <somlo@cmu.edu>, Summer 2014
*
* Compile with: gcc -O2 -o SmcDumpKey SmcDumpKey.c -Wall
*
* You probably want to "modprobe -r applesmc" before running this...
*
* Code bits and pieces shamelessly ripped from the linux kernel driver
* (drivers/hwmon/applesmc.c by N. Boichat and H. Rydberg)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License v2 as published by the
* Free Software Foundation.
*
* 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, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <limits.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <sys/io.h>
#include <linux/byteorder/little_endian.h>
#define APPLESMC_START 0x300
#define APPLESMC_RANGE 0x20
#define APPLESMC_DATA_PORT (APPLESMC_START + 0x00)
#define APPLESMC_CMD_PORT (APPLESMC_START + 0x04)
#define APPLESMC_READ_CMD 0x10
#define APPLESMC_GET_KEY_BY_INDEX_CMD 0x12
#define APPLESMC_GET_KEY_TYPE_CMD 0x13
/* wait up to 128 ms for a status change. */
#define APPLESMC_MIN_WAIT 0x0010
#define APPLESMC_RETRY_WAIT 0x0100
#define APPLESMC_MAX_WAIT 0x20000
#define APPLESMC_KEY_NAME_LEN 4
#define APPLESMC_KEY_TYPE_LEN 4
typedef struct key_type {
uint8_t data_len;
uint8_t data_type[APPLESMC_KEY_TYPE_LEN];
uint8_t flags;
} __attribute__((packed)) key_type;
/* wait_read - Wait for a byte to appear on SMC port. */
static int
wait_read(void)
{
uint8_t status;
int us;
for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) {
usleep(us);
status = inb(APPLESMC_CMD_PORT);
/* read: wait for smc to settle */
if (status & 0x01)
return 0;
}
fprintf(stderr, "wait_read() fail: 0x%02x\n", status);
return -1;
}
/*send_byte - Write to SMC port, retrying when necessary. */
static int
send_byte(uint8_t cmd, unsigned short port)
{
uint8_t status;
int us;
outb(cmd, port);
for (us = APPLESMC_MIN_WAIT; us < APPLESMC_MAX_WAIT; us <<= 1) {
usleep(us);
status = inb(APPLESMC_CMD_PORT);
/* write: wait for smc to settle */
if (status & 0x02)
continue;
/* ready: cmd accepted, return */
if (status & 0x04)
return 0;
/* timeout: give up */
if (us << 1 == APPLESMC_MAX_WAIT)
break;
/* busy: long wait and resend */
usleep(APPLESMC_RETRY_WAIT);
outb(cmd, port);
}
fprintf(stderr,
"send_byte(0x%02x, 0x%04x) fail: 0x%02x\n", cmd, port, status);
return -1;
}
static int
send_argument(const uint8_t *key)
{
int i;
for (i = 0; i < APPLESMC_KEY_NAME_LEN; i++)
if (send_byte(key[i], APPLESMC_DATA_PORT))
return -1;
return 0;
}
static int
read_smc(uint8_t cmd, const uint8_t *key, uint8_t *buf, uint8_t len)
{
int i;
if (send_byte(cmd, APPLESMC_CMD_PORT) || send_argument(key)) {
fprintf(stderr, "%.4s: read arg fail\n", key);
return -1;
}
if (send_byte(len, APPLESMC_DATA_PORT)) {
fprintf(stderr, "%.4s: read len fail\n", key);
return -1;
}
for (i = 0; i < len; i++) {
if (wait_read()) {
fprintf(stderr, "%.4s: read data[%d] fail\n", key, i);
return -1;
}
buf[i] = inb(APPLESMC_DATA_PORT);
}
return 0;
}
int
main(int argc, char **argv)
{
key_type kt;
uint8_t data_buf[UCHAR_MAX];
uint8_t i;
if (argc != 2 || strlen(argv[1]) != APPLESMC_KEY_NAME_LEN) {
fprintf(stderr, "\nUsage: %s <4-char-key-name>\n\n", argv[0]);
return -1;
}
if (ioperm(APPLESMC_START, APPLESMC_RANGE, 1) != 0) {
perror("ioperm failed");
return -2;
}
if (read_smc(APPLESMC_GET_KEY_TYPE_CMD,
(uint8_t *)argv[1], (uint8_t *)&kt, sizeof(kt)) != 0) {
fprintf(stderr, "\nread_smc get_key_type error\n\n");
return -3;
}
printf(" type=\"");
for (i = 0; i < APPLESMC_KEY_TYPE_LEN; i++)
printf(isprint(kt.data_type[i]) ? "%c" : "\\x%02x",
(uint8_t)kt.data_type[i]);
printf("\" length=%d flags=%x\n", kt.data_len, kt.flags);
if (read_smc(APPLESMC_READ_CMD,
(uint8_t *)argv[1], data_buf, kt.data_len) != 0) {
fprintf(stderr, "\nread_smc get_key_data error\n\n");
return -4;
}
printf(" data=\"");
for (i = 0; i < kt.data_len; i++)
printf(isprint(data_buf[i]) ? "%c" : "\\x%02x",
(uint8_t)data_buf[i]);
printf("\"\n");
return 0;
}

View File

@@ -130,6 +130,7 @@ iotop
iozone iozone
ipcalc ipcalc
iperf iperf
iperf3
iproute2 iproute2
ipsec-tools ipsec-tools
iptraf-ng iptraf-ng

View File

@@ -46,7 +46,8 @@ _mnt_sfs() {
if [[ "${copytoram}" == "y" ]]; then if [[ "${copytoram}" == "y" ]]; then
msg -n ":: Copying squashfs image to RAM..." msg -n ":: Copying squashfs image to RAM..."
if ! cp "${img}" "/run/archiso/copytoram/${img_fullname}" ; then #if ! cp "${img}" "/run/archiso/copytoram/${img_fullname}" ; then
if ! pv -pterabT "${img}" > "/run/archiso/copytoram/${img_fullname}" ; then
echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'" echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'"
launch_interactive_shell launch_interactive_shell
fi fi

View File

@@ -13,6 +13,7 @@ build() {
add_binary losetup add_binary losetup
add_binary mountpoint add_binary mountpoint
add_binary truncate add_binary truncate
add_binary pv
add_file /usr/lib/udev/rules.d/60-cdrom_id.rules 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/10-dm.rules

View File

@@ -32,16 +32,16 @@ function stuffy {
# now for setting up loader config/entries. maybe add memtest or something in the future? i dunno. # now for setting up loader config/entries. maybe add memtest or something in the future? i dunno.
cat > ${TEMPDIR}/loader/loader.conf << EOF cat > ${TEMPDIR}/loader/loader.conf << EOF
timeout 3 timeout 3
default ${UXNAME}_ram default ${UXNAME}
EOF EOF
cat > ${TEMPDIR}/loader/entries/${UXNAME}_ram.conf << EOF cat > ${TEMPDIR}/loader/entries/${UXNAME}_ram.conf << EOF
title ${PNAME} title ${PNAME} (RAM)
linux /boot/${UXNAME}.kern linux /boot/${UXNAME}.kern
initrd /boot/${UXNAME}.img initrd /boot/${UXNAME}.img
options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
EOF EOF
cat > ${TEMPDIR}/loader/entries/${UXNAME}.conf << EOF cat > ${TEMPDIR}/loader/entries/${UXNAME}.conf << EOF
title ${PNAME} (Run from media) title ${PNAME} (Media)
linux /boot/${UXNAME}.kern linux /boot/${UXNAME}.kern
initrd /boot/${UXNAME}.img initrd /boot/${UXNAME}.img
options archisobasedir=${DISTNAME} archisolabel=${DISTNAME} options archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -73,16 +73,16 @@ EOF
# GETTING DEJA VU HERE. # GETTING DEJA VU HERE.
cat > ${SRCDIR}/efiboot/loader/loader.conf << EOF cat > ${SRCDIR}/efiboot/loader/loader.conf << EOF
timeout 3 timeout 3
default ${UXNAME}_ram default ${UXNAME}
EOF EOF
cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}_ram.conf << EOF cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}_ram.conf << EOF
title ${PNAME} title ${PNAME} (RAM)
linux /EFI/${DISTNAME}/${UXNAME}.efi linux /EFI/${DISTNAME}/${UXNAME}.efi
initrd /EFI/${DISTNAME}/${UXNAME}.img initrd /EFI/${DISTNAME}/${UXNAME}.img
options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} options copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
EOF EOF
cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}.conf << EOF cat > ${SRCDIR}/efiboot/loader/entries/${UXNAME}.conf << EOF
title ${PNAME} (Run from media) title ${PNAME} (Media)
linux /EFI/${DISTNAME}/${UXNAME}.efi linux /EFI/${DISTNAME}/${UXNAME}.efi
initrd /EFI/${DISTNAME}/${UXNAME}.img initrd /EFI/${DISTNAME}/${UXNAME}.img
options archisobasedir=${DISTNAME} archisolabel=${DISTNAME} options archisobasedir=${DISTNAME} archisolabel=${DISTNAME}

View File

@@ -60,7 +60,7 @@ MENU BACKGROUND /${UXNAME}.png
LABEL check LABEL check
MENU LABEL Your best supported kernel should be detected automatically. MENU LABEL Your best supported kernel should be detected automatically.
COM32 ifcpu64.c32 COM32 ifcpu64.c32
APPEND ${UXNAME}_ram_64 -- ${UXNAME}_ram_32 APPEND ${UXNAME}_64 -- ${UXNAME}_32
MENU DEFAULT MENU DEFAULT
@@ -84,10 +84,10 @@ MENU SEPARATOR
## 64 BIT ## 64 BIT
MENU BEGIN 64BIT MENU BEGIN 64BIT
MENU LABEL ^1) 64-Bit ... MENU LABEL ^1) 64-Bit ...
ONTIMEOUT ${UXNAME}_ram_64 ONTIMEOUT ${UXNAME}_64
LABEL ${UXNAME}_ram_64 LABEL ${UXNAME}_ram_64
MENU LABEL ^1) ${PNAME} (run from RAM) (Default) MENU LABEL ^1) ${PNAME} (run from RAM)
LINUX /boot/${UXNAME}.64.kern LINUX /boot/${UXNAME}.64.kern
INITRD /boot/${UXNAME}.64.img INITRD /boot/${UXNAME}.64.img
APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -97,7 +97,7 @@ LABEL ${UXNAME}_ram_64
MENU DEFAULT MENU DEFAULT
LABEL ${UXNAME}_64 LABEL ${UXNAME}_64
MENU LABEL ^1) ${PNAME} MENU LABEL ^1) ${PNAME} (Default)
LINUX /boot/${UXNAME}.64.kern LINUX /boot/${UXNAME}.64.kern
INITRD /boot/${UXNAME}.64.img INITRD /boot/${UXNAME}.64.img
APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -110,11 +110,11 @@ MENU END
MENU BEGIN 32BIT MENU BEGIN 32BIT
MENU LABEL ^2) 32-Bit ... MENU LABEL ^2) 32-Bit ...
ONTIMEOUT ${UXNAME}_ram_32 ONTIMEOUT ${UXNAME}_32
## 32 BIT ## 32 BIT
LABEL ${UXNAME}_ram_32 LABEL ${UXNAME}_ram_32
MENU LABEL ^1) ${PNAME} (run from RAM) (Default) MENU LABEL ^1) ${PNAME} (run from RAM)
LINUX /boot/${UXNAME}.32.kern LINUX /boot/${UXNAME}.32.kern
INITRD /boot/${UXNAME}.32.img INITRD /boot/${UXNAME}.32.img
APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -124,7 +124,7 @@ LABEL ${UXNAME}_ram_32
MENU DEFAULT MENU DEFAULT
LABEL ${UXNAME}_32 LABEL ${UXNAME}_32
MENU LABEL ^2) ${PNAME} MENU LABEL ^2) ${PNAME} (Default)
LINUX /boot/${UXNAME}.32.kern LINUX /boot/${UXNAME}.32.kern
INITRD /boot/${UXNAME}.32.img INITRD /boot/${UXNAME}.32.img
APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -188,10 +188,10 @@ MENU SEPARATOR
MENU BEGIN ${ARCH}BIT MENU BEGIN ${ARCH}BIT
MENU LABEL ^1) ${ARCH}-Bit ... MENU LABEL ^1) ${ARCH}-Bit ...
ONTIMEOUT ${UXNAME}_ram_${ARCH} ONTIMEOUT ${UXNAME}_${ARCH}
LABEL ${UXNAME}_ram_${ARCH} LABEL ${UXNAME}_ram_${ARCH}
MENU LABEL ^1) ${PNAME} (run from RAM) (Default) MENU LABEL ^1) ${PNAME} (run from RAM)
LINUX /boot/${UXNAME}.${ARCH}.kern LINUX /boot/${UXNAME}.${ARCH}.kern
INITRD /boot/${UXNAME}.${ARCH}.img INITRD /boot/${UXNAME}.${ARCH}.img
APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND copytoram archisobasedir=${DISTNAME} archisolabel=${DISTNAME}
@@ -201,7 +201,7 @@ LABEL ${UXNAME}_ram_${ARCH}
MENU DEFAULT MENU DEFAULT
LABEL ${UXNAME}_${ARCH} LABEL ${UXNAME}_${ARCH}
MENU LABEL ^1) ${PNAME} MENU LABEL ^1) ${PNAME} (Default)
LINUX /boot/${UXNAME}.${ARCH}.kern LINUX /boot/${UXNAME}.${ARCH}.kern
INITRD /boot/${UXNAME}.${ARCH}.img INITRD /boot/${UXNAME}.${ARCH}.img
APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME} APPEND archisobasedir=${DISTNAME} archisolabel=${DISTNAME}

View File

@@ -7,3 +7,44 @@ chmod 700 /var/db/sudo/lectured
chgrp bdisk /var/db/sudo/lectured/bdisk chgrp bdisk /var/db/sudo/lectured/bdisk
chmod 600 /var/db/sudo/lectured/bdisk chmod 600 /var/db/sudo/lectured/bdisk
chmod 4755 /usr/bin/sudo chmod 4755 /usr/bin/sudo
function fuck_you_gimme_net() {
IFACE=$(ifconfig -a -s | egrep -E '^((en|wl)p?|em)' | awk '{print $1}' | tr '\n' ' ' | sed -e 's/\ $//g')
for i in ${IFACE};
do
LINK_STATE=$(ethtool ${i} | egrep '^[[:space:]]*Link' | sed -re 's/^[[:space:]]*Link detected:(.*)/\1/g')
DEV=$(echo ${i} | sed -re 's/^([A-Za-z]{1}).*/\1/g' | tr '[[:upper:]]' '[[:lower:]]' )
if [ "${DEV}" == "e" ];
then
if [ "${LINK_STATE}" != "no" ];
then
DEV='ethernet-dhcp'
else
# skip disconnected ethernet
continue
fi
else
DEV='wireless-open'
fi
ifconfig ${i} down
cp -a /etc/netctl/examples/${DEV} /etc/netctl/${i}
sed -i -re "s/^([[:space:]]*Interface[[:space:]]*=).*/\1${i}/g" /etc/netctl/${i}
if [ "${DEV}" == "wireless-open" ];
then
ifconfig ${i} up && \
ESSID=$(iwlist ${i} scanning | egrep -A5 -B5 '^[[:space:]]*Encryption key:off' | egrep '^[[:space:]]*ESSID:' | sed -re 's/^[[:space:]]*ESSID:(.*)/\1/g')
sed -i -re "s/^([[:space:]]*ESSID[[:space:]]*=).*/\1${ESSID}/g" /etc/netctl/${i}
ifconfig ${i} down
fi
netctl restart ${i} > /dev/null 2>&1
done
}
ping -c1 google.com | grep -q '1 received'
if [[ "${?}" != "0" ]];
then
fuck_you_gimme_net
systemctl restart openvpn@*
fi