From 03d956bec03403ad7bc47b3e6005dffd63a8bd26 Mon Sep 17 00:00:00 2001 From: ms Date: Sat, 15 Sep 2007 19:10:07 +0000 Subject: [PATCH] Netzwerkinstallation und PXE ausgebaut. git-svn-id: http://svn.ipfire.org/svn/ipfire/trunk@892 ea5c0bd1-69bd-2848-81d8-4f18e57aeed8 --- lfs/pxe | 72 -------------------- make.sh | 1 - src/install+setup/install/Makefile | 2 +- src/install+setup/install/install.h | 6 -- src/install+setup/install/main.c | 100 +++++----------------------- src/install+setup/install/net.c | 73 -------------------- src/install+setup/install/nic.c | 94 -------------------------- 7 files changed, 18 insertions(+), 330 deletions(-) delete mode 100644 lfs/pxe delete mode 100644 src/install+setup/install/net.c delete mode 100644 src/install+setup/install/nic.c diff --git a/lfs/pxe b/lfs/pxe deleted file mode 100644 index abea72d041..0000000000 --- a/lfs/pxe +++ /dev/null @@ -1,72 +0,0 @@ -############################################################################### -# # -# IPFire.org - A linux based firewall # -# Copyright (C) 2007 Michael Tremer & Christian Schmidt # -# # -# 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 . # -# # -############################################################################### - -############################################################################### -# Definitions -############################################################################### - -include Config - -VER = ipfire - -THISAPP = pxe -TARGET = $(DIR_INFO)/$(THISAPP) - -############################################################################### -# Top-level Rules -############################################################################### - -install : $(TARGET) - -check : - -download : - -md5 : - -############################################################################### -# Installation Details -############################################################################### - -$(TARGET) : - # Create install pxe package as an alternate way to boot during install - rm -rf /tmp/* - mkdir -p /tmp/$(VERSION) /tmp/pxelinux.cfg - cp /usr/lib/syslinux/pxelinux.0 /tmp - cp /install/images/initrd /tmp/$(VERSION)/instroot - cp /boot/vmlinuz-$(KVER)-ipfire /tmp/$(VERSION)/vmlinuz - cp $(DIR_SRC)/config/syslinux/options.msg /tmp/$(VERSION)/options.msg - cp $(DIR_SRC)/config/syslinux/splash.lss /tmp/$(VERSION)/splash.lss - cp /usr/lib/memtest86+/memtest.bin /tmp/$(VERSION)/memtest - sed -e "s|splash.lss|$(VERSION)/splash.lss|" \ - $(DIR_SRC)/config/syslinux/boot.msg \ - > /tmp/$(VERSION)/boot.msg - sed -e "s|vmlinuz|$(VERSION)/vmlinuz|" \ - -e "s|instroot|$(VERSION)/instroot|" \ - -e "s|KERNEL memtest|KERNEL $(VERSION)/memtest|" \ - -e "s|boot.msg|$(VERSION)/boot.msg|" \ - -e "s|options.msg|$(VERSION)/options.msg|" \ - $(DIR_SRC)/config/syslinux/syslinux.cfg \ - > /tmp/pxelinux.cfg/$(SNAME)-pxe-$(VERSION).model - ln -s $(SNAME)-pxe-$(VERSION).model /tmp/pxelinux.cfg/default - chmod 444 /tmp/$(VERSION)/instroot - cd /tmp && tar cvzf \ - /install/images/$(SNAME)-$(VERSION).$(MACHINE)-pxe.tgz * - rm -rf /tmp/* diff --git a/make.sh b/make.sh index df26245fc8..cbae806fca 100755 --- a/make.sh +++ b/make.sh @@ -598,7 +598,6 @@ buildpackages() { if [ -e /dev/loop/0 ] || [ -e /dev/loop0 ]; then ipfiremake usb-stick fi - ipfiremake pxe mv $LFS/install/images/{*.iso,*.tgz,*.img.gz} $BASEDIR >> $LOGFILE 2>&1 ipfirepackages diff --git a/src/install+setup/install/Makefile b/src/install+setup/install/Makefile index a27dcb55eb..a3c95f7515 100644 --- a/src/install+setup/install/Makefile +++ b/src/install+setup/install/Makefile @@ -40,7 +40,7 @@ clean : ###### -OBJS=main.o nic.o net.o config.o ../libsmooth/libsmooth.o unattended.o +OBJS=main.o config.o ../libsmooth/libsmooth.o unattended.o install: $(OBJS) $(LINK) $(OBJS) -o $@ $(LIBS) diff --git a/src/install+setup/install/install.h b/src/install+setup/install/install.h index 14df0531ab..a6e110f44d 100644 --- a/src/install+setup/install/install.h +++ b/src/install+setup/install/install.h @@ -26,12 +26,6 @@ struct devparams char options[STRING_SIZE]; }; -/* nic.c */ -int networkmenu(struct keyvalue *ethernetkv); - -/* net.c */ -int checktarball(char *, char *message); - /* config.c */ int write_disk_configs(struct devparams *dp); int write_lang_configs( char *lang); diff --git a/src/install+setup/install/main.c b/src/install+setup/install/main.c index 938329f533..e0433c461a 100644 --- a/src/install+setup/install/main.c +++ b/src/install+setup/install/main.c @@ -11,9 +11,6 @@ #include "install.h" #define _GNU_SOURCE -#define CDROM_INSTALL 0 -#define URL_INSTALL 1 -#define DISK_INSTALL 2 #define INST_FILECOUNT 6200 #define UNATTENDED_CONF "/cdrom/boot/unattended.conf" @@ -34,23 +31,6 @@ struct knic knics[20] = { { "" , "" , "" , "" } }; // only defined for compile extern char *en_tr[]; extern char *de_tr[]; -int detect_smp() { - FILE *fd = NULL; - char line[STRING_SIZE]; - int cpu_count = 0; - - if ((fd = fopen("/proc/cpuinfo", "r")) == NULL) { - return 0; - } - while (fgets(line, STRING_SIZE, fd) != NULL) { - if (strstr(line, "processor") == line) { - cpu_count++; - } - } - (void)fclose(fd); - return (cpu_count > 1); -} - int main(int argc, char *argv[]) { char *langnames[] = { "Deutsch", "English", NULL }; @@ -59,11 +39,8 @@ int main(int argc, char *argv[]) char hdletter; char harddrive[11], sourcedrive[5]; /* Device holder. */ struct devparams hdparams, cdromparams; /* Params for CDROM and HD */ - int cdmounted = 0; /* Loop flag for inserting a cd. */ int rc = 0; char commandstring[STRING_SIZE]; - char *installtypes[] = { "CDROM/USB", "HTTP/FTP", NULL }; - int installtype = CDROM_INSTALL; char mkfscommand[STRING_SIZE]; char *fstypes[] = { "Reiser4", "ReiserFS", "ext3", NULL }; int fstype = REISER4; @@ -167,61 +144,25 @@ int main(int argc, char *argv[]) // Starting hardware detection runcommandwithstatus("/bin/probehw.sh", ctr[TR_PROBING_HARDWARE]); - if (!unattended) { - sprintf(message, ctr[TR_WELCOME], NAME); - newtWinMessage(title, ctr[TR_OK], message); - - sprintf(message, ctr[TR_SELECT_INSTALLATION_MEDIA_LONG], NAME); - rc = newtWinMenu(ctr[TR_SELECT_INSTALLATION_MEDIA], message, - 50, 5, 5, 6, installtypes, &installtype, ctr[TR_OK], - ctr[TR_CANCEL], NULL); - } else { - rc = 1; - installtype = CDROM_INSTALL; - } + sprintf(message, ctr[TR_WELCOME], NAME); + newtWinMessage(title, ctr[TR_OK], message); - if (rc == 2) + switch (mysystem("/bin/mountsource.sh")) { + case 0: + break; + case 10: + errorbox(ctr[TR_NO_CDROM]); goto EXIT; - - /* CDROM INSTALL */ - if (installtype == CDROM_INSTALL) { - switch (mysystem("/bin/mountsource.sh")) { - case 0: - installtype = CDROM_INSTALL; - cdmounted = 1; - break; - case 1: - installtype = DISK_INSTALL; - break; - case 10: - errorbox(ctr[TR_NO_CDROM]); - goto EXIT; - } - - /* read source drive letter */ - if ((handle = fopen("/tmp/source_device", "r")) == NULL) { - errorbox(ctr[TR_ERROR_PROBING_CDROM]); - goto EXIT; - } - fgets(sourcedrive, 5, handle); - fprintf(flog, "Source drive: %s\n", sourcedrive); - fclose(handle); } - /* Configure the network now! */ - if (installtype == URL_INSTALL) { - /* Network driver and params. */ - if (!(networkmenu(ethernetkv))) { - errorbox(ctr[TR_NETWORK_SETUP_FAILED]); - goto EXIT; - } - - /* Check for ipfire-.tbz2 */ - if (checktarball(SNAME "-" VERSION ".tbz2", ctr[TR_ENTER_URL])) { - errorbox(ctr[TR_NO_IPCOP_TARBALL_FOUND]); - goto EXIT; - } + /* read source drive letter */ + if ((handle = fopen("/tmp/source_device", "r")) == NULL) { + errorbox(ctr[TR_ERROR_PROBING_CDROM]); + goto EXIT; } + fgets(sourcedrive, 5, handle); + fprintf(flog, "Source drive: %s\n", sourcedrive); + fclose(handle); i = 0; while (found == 0) { @@ -489,15 +430,8 @@ int main(int argc, char *argv[]) goto EXIT; } - if (installtype == URL_INSTALL) { - snprintf(commandstring, STRING_SIZE, - "/bin/wget -q -O - %s/" SNAME "-" VERSION ".tbz2 | /bin/tar -C /harddisk -xvjf -", url); - } - - if (installtype == CDROM_INSTALL) { - snprintf(commandstring, STRING_SIZE, - "/bin/tar -C /harddisk -xvjf /cdrom/" SNAME "-" VERSION ".tbz2"); - } + snprintf(commandstring, STRING_SIZE, + "/bin/tar -C /harddisk -xvjf /cdrom/" SNAME "-" VERSION ".tbz2"); if (runcommandwithprogress(60, 4, title, commandstring, INST_FILECOUNT, ctr[TR_INSTALLING_FILES])) @@ -581,7 +515,7 @@ int main(int argc, char *argv[]) chmod("/harddisk/boot/grub/grubbatch", S_IXUSR | S_IRUSR | S_IXGRP | S_IRGRP | S_IXOTH | S_IROTH); snprintf(commandstring, STRING_SIZE, - "/sbin/chroot /harddisk /boot/grub/grubbatch"); + "/sbin/chroot /harddisk /usr/sbin/grub-install --no-floppy %s", hdparams.devnode_disk); if (runcommandwithstatus(commandstring, ctr[TR_INSTALLING_GRUB])) { errorbox(ctr[TR_UNABLE_TO_INSTALL_GRUB]); goto EXIT; diff --git a/src/install+setup/install/net.c b/src/install+setup/install/net.c deleted file mode 100644 index e4efc8f55e..0000000000 --- a/src/install+setup/install/net.c +++ /dev/null @@ -1,73 +0,0 @@ -/* SmoothWall install program. - * - * This program is distributed under the terms of the GNU General Public - * Licence. See the file COPYING for details. - * - * (c) Lawrence Manning, 2001 - * Stuff for downloading the smoothwall tarball using wget. - * - */ - -#include "install.h" - -extern FILE *flog; -extern char *mylog; - -extern char **ctr; - -static int got_url = 0; - -char url[STRING_SIZE] = "http://";; - -static int gettarballurl(char *url, char *message); - -int checktarball(char *file, char *message) -{ - int done; - int tries = 0; - char commandstring[STRING_SIZE]; - - done = 0; - while (!done) - { - if (!got_url && gettarballurl(url, message) != 1) - return 0; - - /* remove any successive /'s */ - while (url[strlen(url)-1] == '/') { url[strlen(url)-1] = '\0'; } - - snprintf(commandstring, STRING_SIZE, "/bin/wget -q --spider -O /dev/null %s/%s", url, file); - if (!(runcommandwithstatus(commandstring, ctr[TR_CHECKING]))) - { - done = 1; - got_url = 1; - } - else - { - errorbox(ctr[TR_FAILED_TO_FIND]); - got_url = 0; - if (tries == 3) - return 1; /* failure */ - } - tries++; - } - - return 0; -} - -static int gettarballurl(char *url, char *message) -{ - char *values[] = { url, NULL }; /* pointers for the values. */ - struct newtWinEntry entries[] = - { { "", &values[0], 0,}, { NULL, NULL, 0 } }; - char title[STRING_SIZE]; - int rc; - - sprintf (title, "%s %s - %s", NAME, VERSION, SLOGAN); - rc = newtWinEntries(title, message, - 60, 5, 5, 50, entries, ctr[TR_OK], ctr[TR_CANCEL], NULL); - - strncpy(url, values[0], STRING_SIZE); - - return rc; -} diff --git a/src/install+setup/install/nic.c b/src/install+setup/install/nic.c deleted file mode 100644 index 966f7c84c0..0000000000 --- a/src/install+setup/install/nic.c +++ /dev/null @@ -1,94 +0,0 @@ -/* SmoothWall install program. - * - * This program is distributed under the terms of the GNU General Public - * Licence. See the file COPYING for details. - * - * (c) Lawrence Manning, 2001 - * Contains stuff related to firing up the network card, including a crude - * autodector. - * - */ - -#include "install.h" - -#include -#include -#include - -extern FILE *flog; -extern char *mylog; - -extern char **ctr; - -//extern struct nic nics[]; -//extern struct knic knics[]; - -int networkmenu(struct keyvalue *ethernetkv) -{ - int rc; - char driver[STRING_SIZE] = ""; - char driveroptions[STRING_SIZE] = ""; - int result = 0; - char commandstring[STRING_SIZE]; - char address[STRING_SIZE], netmask[STRING_SIZE]; - int done; - char description[1000]; - char message[1000]; - char title[STRING_SIZE]; - done = 0; - - while (!done) - { - rc = newtWinTernary(ctr[TR_CONFIGURE_NETWORKING], ctr[TR_PROBE], - ctr[TR_SELECT], ctr[TR_CANCEL], ctr[TR_CONFIGURE_NETWORKING_LONG]); - - if (rc == 0 || rc == 1) - { - probecards(driver, driveroptions); - if (!strlen(driver)) - errorbox(ctr[TR_PROBE_FAILED]); - else - { - //findnicdescription(driver, description); - sprintf (title, "%s v%s - %s", NAME, VERSION, SLOGAN); - sprintf(message, ctr[TR_FOUND_NIC], NAME, description); - newtWinMessage(title, ctr[TR_OK], message); - } - } - else - done = 1; - - if (strlen(driver)) - done = 1; - } - - if (!strlen(driver)) - goto EXIT; - - /* Default is a GREEN nic only. */ - /* Smoothie is not untarred yet, so we have to delay actually writing the - * settings till later. */ - replacekeyvalue(ethernetkv, "CONFIG_TYPE", "0"); - replacekeyvalue(ethernetkv, "GREEN_DEV", "eth0"); - replacekeyvalue(ethernetkv, "GREEN_DISPLAYDRIVER", driver); - - if (!(changeaddress(ethernetkv, "GREEN", 0, ""))) - goto EXIT; - - strcpy(address, ""); findkey(ethernetkv, "GREEN_ADDRESS", address); - strcpy(netmask, ""); findkey(ethernetkv, "GREEN_NETMASK", netmask); - - snprintf(commandstring, STRING_SIZE, "/sbin/ifconfig eth0 %s netmask %s up", - address, netmask); - if (mysystem(commandstring)) - { - errorbox(ctr[TR_INTERFACE_FAILED_TO_COME_UP]); - goto EXIT; - } - - result = 1; - -EXIT: - - return result; -} -- 2.39.2