Hello all, here we go again! This patch contains the integration of kboot_sl with Werner's kboot. Patch 2 and 3 together allow to build a fully functional ramdisk for the i386 platform (and maybe some others too). Depending on the parameters on the kernel command line it can be used as described in the kboot_sl documentation or as a traditional kboot ramdisk. best regards Michael === the patch starts here === diff -Nuar kboot-10/config/answers kboot-10_patch3_integration/config/answers --- kboot-10/config/answers 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/config/answers 2006-06-26 16:07:09.000000000 +0200 @@ -0,0 +1,15 @@ +# MACHINE-GENERATED - TRY NOT TO EDIT ! + +copy_fstab=false +booted_config=false +inetworking=true +use_dhcp=false +ipv4_addr="192.168.1.23" +ipv4_netmask="255.255.255.0" +ipv4_default="192.168.1.1" +ipv4_nameserver="192.168.1.1" +dns_domain="my.net" +ssh_client=true +ssh_server=true +ssh_convert_keys=true +nfs_client=false diff -Nuar kboot-10/config/fstab kboot-10_patch3_integration/config/fstab --- kboot-10/config/fstab 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/config/fstab 2006-01-18 15:32:38.000000000 +0100 @@ -0,0 +1,8 @@ +# /etc/fstab: filesystem table. +# +# filesystem mountpoint type options dump pass + +proc /proc proc defaults 0 0 +usbfs /proc/bus/usb usbfs devmode=0666 0 0 +sysfs /sys sysfs defaults 0 0 +tmpfs /dev/shm tmpfs defaults 0 0 diff -Nuar kboot-10/config/group kboot-10_patch3_integration/config/group --- kboot-10/config/group 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/config/group 2006-05-30 09:43:37.000000000 +0200 @@ -0,0 +1 @@ +root:x:0 diff -Nuar kboot-10/config/kboot.conf kboot-10_patch3_integration/config/kboot.conf --- kboot-10/config/kboot.conf 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/config/kboot.conf 2006-01-18 15:32:38.000000000 +0100 @@ -0,0 +1 @@ +cd /usr/kboot diff -Nuar kboot-10/config/passwd kboot-10_patch3_integration/config/passwd --- kboot-10/config/passwd 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/config/passwd 2006-05-16 10:14:18.000000000 +0200 @@ -0,0 +1 @@ +kboot:$1$$0sjudJqLzkkHDiPSYcXRE1:0:0:kboot user:/:/sbin/kboot_ssh diff -Nuar kboot-10/kboot.spec kboot-10_patch3_integration/kboot.spec --- kboot-10/kboot.spec 1970-01-01 01:00:00.000000000 +0100 +++ kboot-10_patch3_integration/kboot.spec 2006-02-24 14:03:15.000000000 +0100 @@ -0,0 +1,65 @@ +Summary: New System Loader based on the kboot project +Name: kboot +Version: 9 +Release: 3 +License: GPL +Group: Applications/System +Source0: %{name}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root + +%description +The kboot system loader provides a platform independent second stage +bootloader that offers an interactive boot menu to select between +several boot kernels. It supports booting from generic block devices on +all platforms and several zSeries specific boot configurations in addition. +For configuration examples see /boot/example_kboot.conf and +/etc/example_zipl.conf . + +%prep +%setup -q + +%build +make + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT/boot +mkdir -p $RPM_BUILD_ROOT/etc +mkdir -p $RPM_BUILD_ROOT/usr +mkdir -p $RPM_BUILD_ROOT/usr/share/man/man8 +mkdir -p $RPM_BUILD_ROOT/usr/share/man/man5 +install -m0644 kboot-root-glibc.cpio.gz $RPM_BUILD_ROOT/boot/initrd.kboot +install -m0644 ui/example_kboot.conf $RPM_BUILD_ROOT/boot/example_kboot.conf +install -m0644 ui/example_zipl.conf $RPM_BUILD_ROOT/etc/example_zipl.conf +install -m0644 ui/kboot.8.gz $RPM_BUILD_ROOT/usr/share/man/man8/kboot.8.gz +install -m0644 ui/kboot.conf.5.gz $RPM_BUILD_ROOT/usr/share/man/man5/kboot.conf.5.gz +%ifarch s390x +install -m0644 linux-2.6.15/arch/s390/boot/image $RPM_BUILD_ROOT/boot/image.kboot +%endif +%ifarch s390 +install -m0644 linux-2.6.15/arch/s390/boot/image $RPM_BUILD_ROOT/boot/image.kboot +%endif +%ifarch i386 +install -m0644 linux-2.6.15/arch/i386/boot/bzImage $RPM_BUILD_ROOT/boot/image.kboot +%endif + +%clean +rm -rf $RPM_BUILD_ROOT + +%files +%defattr(-,root,root,-) +%doc + +/boot/image.kboot +/boot/initrd.kboot +/boot/example_kboot.conf +/etc/example_zipl.conf +/usr/share/man/man8/kboot.8.gz +/usr/share/man/man5/kboot.conf.5.gz + +%changelog +* Mon Dec 12 2005 Michael Loehr - a-1 +- kboot kernel (re-)integrated + +* Mon Dec 5 2005 Michael Loehr - +- Initial build. diff -Nuar kboot-10/Makefile kboot-10_patch3_integration/Makefile --- kboot-10/Makefile 2006-04-04 03:51:23.000000000 +0200 +++ kboot-10_patch3_integration/Makefile 2006-06-26 16:56:03.000000000 +0200 @@ -13,10 +13,16 @@ # ----- Local configuration data ---------------------------------------------- +# set to false for glibc or true for uclibc! +# +# we gave up building kboot_sl with uclibc because +# size does not matter as soon as we include big packages like EVMS. +config_uclibc=false LOCAL_KERNEL_CONFIG=$(PWD)/config/kernel-config LOCAL_HOSTS=$(PWD)/config/hosts LOCAL_PASSWD=$(PWD)/config/passwd +LOCAL_GROUP=$(PWD)/config/group LOCAL_KBOOT_CONF=$(PWD)/config/kboot.conf LOCAL_OPENSSH_RSA=$(PWD)/config/ssh_host_rsa_key LOCAL_OPENSSH_DSA=$(PWD)/config/ssh_host_dsa_key @@ -67,13 +73,28 @@ KBD_DIR=kbd-$(KBD_VERSION) KBD_URL=ftp://ftp.win.tue.nl/pub/linux-local/utils/kbd/$(KBD_PACKAGE) +DHCPCD_PACKAGE=dhcpcd-$(DHCPCD_VERSION).tar.gz +DHCPCD_DIR=dhcpcd-$(DHCPCD_VERSION) +DHCPCD_URL=http://www.phystech.com/ftp/$(DHCPCD_PACKAGE) + +OPENSSL_PACKAGE=openssl-$(OPENSSL_VERSION).tar.gz +OPENSSL_DIR=openssl-$(OPENSSL_VERSION) +OPENSSL_URL=http://www.openssl.org/source/$(OPENSSL_PACKAGE) + +LIBSSH_PACKAGE=libssh-$(LIBSSH_VERSION).tgz +LIBSSH_DIR=libssh-$(LIBSSH_VERSION) +LIBSSH_URL=http://0xbadc0de.be/libssh/$(LIBSSH_PACKAGE) + +EVMS_PACKAGE=evms-$(EVMS_VERSION).tar.gz +EVMS_DIR=evms-$(EVMS_VERSION) +EVMS_URL=http://mesh.dl.sourceforge.net/sourceforge/evms/$(EVMS_PACKAGE) + LILO_PACKAGE=lilo-$(LILO_VERSION).src.tar.gz LILO_DIR=lilo-$(LILO_VERSION) LILO_URL=http://home.san.rr.com/johninsd/pub/linux/lilo/$(LILO_PACKAGE) DL=$(if $(wildcard ../dl/.),../dl,dl) - # ----- Macros ---------------------------------------------------------------- @@ -104,12 +125,23 @@ .PHONY: all reconfig config download packages keymaps .PHONY: try reset clean spotless dist upload +ifeq ($(config_uclibc),false) +all: kboot-root-glibc.cpio.gz +kboot_utils = utils/readline utils/getctty utils/fsbyname +KEXEC_CC = gcc +else all: kboot-root.cpio.gz - using_uclibc_cross=PATH=$(PWD)/build/bin:$$PATH using_uclibc=PATH=$(PWD)/build/bin:$(PWD)/build/uclibc/bin:$$PATH using_safe_gcc=PATH=$(PWD)/build/bin:$(PWD)/build/host/bin:$$PATH - +kboot_utils = utils/uclibc-readline utils/uclibc-getctty utils/uclibc-fsbyname +KEXEC_CC = uclibc-gcc +root_meta_inst_uclibc = root-meta/installed/uclibc +build_inst_uclibc = build/installed/uclibc +build_inst_gcc_uclibc = build/installed/gcc-uclibc +root_meta_inst_uclibc = root-meta/installed/uclibc +UTILS_PREFIX=uclibc- +endif # ----- (Re)Configuration ----------------------------------------------------- @@ -135,6 +167,10 @@ $(DL)/$(UDEV_PACKAGE).ok \ $(DL)/$(KEXEC_TOOLS_PACKAGE).ok \ $(DL)/$(DROPBEAR_PACKAGE).ok \ + $(DL)/$(DHCPCD_PACKAGE).ok \ + $(DL)/$(OPENSSL_PACKAGE).ok \ + $(DL)/$(LIBSSH_PACKAGE).ok \ + $(DL)/$(EVMS_PACKAGE).ok \ $(DL)/$(KBD_PACKAGE).ok \ # $(DL)/$(LILO_PACKAGE).ok @@ -147,6 +183,10 @@ @echo $(UDEV_PACKAGE) @echo $(KEXEC_TOOLS_PACKAGE) @echo $(DROPBEAR_PACKAGE) + @echo $(DHCPCD_PACKAGE) + @echo $(OPENSSL_PACKAGE) + @echo $(LIBSSH_PACKAGE) + @echo $(EVMS_PACKAGE) @echo $(KBD_PACKAGE) # @echo $(LILO_PACKAGE) @@ -162,17 +202,23 @@ $(DL)/$(GCC_PACKAGE).ok: mkdir -p dl +ifeq ($(config_uclibc),true) wget -c -O $(DL)/$(GCC_PACKAGE) $(GCC_URL) +endif touch $@ $(DL)/$(BINUTILS_PACKAGE).ok: mkdir -p dl +ifeq ($(config_uclibc),true) wget -c -O $(DL)/$(BINUTILS_PACKAGE) $(BINUTILS_URL) +endif touch $@ $(DL)/$(UCLIBC_PACKAGE).ok: mkdir -p dl +ifeq ($(config_uclibc),true) wget -c -O $(DL)/$(UCLIBC_PACKAGE) $(UCLIBC_URL) +endif touch $@ $(DL)/$(BUSYBOX_PACKAGE).ok: @@ -180,6 +226,26 @@ wget -c -O $(DL)/$(BUSYBOX_PACKAGE) $(BUSYBOX_URL) touch $@ +$(DL)/$(DHCPCD_PACKAGE).ok: + mkdir -p dl + wget -c -O $(DL)/$(DHCPCD_PACKAGE) $(DHCPCD_URL) + touch $@ + +$(DL)/$(OPENSSL_PACKAGE).ok: + mkdir -p dl + wget -c -O $(DL)/$(OPENSSL_PACKAGE) $(OPENSSL_URL) + touch $@ + +$(DL)/$(LIBSSH_PACKAGE).ok: + mkdir -p dl + wget -c -O $(DL)/$(LIBSSH_PACKAGE) $(LIBSSH_URL) + touch $@ + +$(DL)/$(EVMS_PACKAGE).ok: + mkdir -p dl + wget -c -O $(DL)/$(EVMS_PACKAGE) $(EVMS_URL) + touch $@ + $(DL)/$(UDEV_PACKAGE).ok: mkdir -p dl wget -c -O $(DL)/$(UDEV_PACKAGE) $(UDEV_URL) @@ -215,7 +281,12 @@ touch $@ # may be cached root: root/etc/kboot-features root/etc/fstab \ - root-meta/installed/uclibc root-meta/installed/busybox \ + $(root_meta_inst_uclibc) \ + root-meta/installed/busybox \ + $(DHCPCD_DIR)/.kboot-built \ + $(OPENSSL_DIR)/.kboot-built \ + $(LIBSSH_DIR)/.kboot-built \ + $(EVMS_DIR)/.kboot-built \ root-meta/installed/udev \ $(if $(subst false,,$(ssh_client)),root-meta/installed/dropbear) \ $(if $(subst false,,$(ssh_server)),root-meta/installed/dropbear) \ @@ -224,11 +295,13 @@ $(if $(subst false,,$(ssh_convert_keys)),\ $(DROPBEAR_DIR)-host/.kboot-built) \ root-meta/installed/kexec-tools \ + root-meta/installed/kboot-ui \ Makefile scripts/kboot scripts/common-all \ $(if $(subst false,,$(use_dhcp)),scripts/udhcpc.script) \ - utils/uclibc-readline utils/uclibc-getctty utils/uclibc-fsbyname \ + $(kboot_utils) \ $(if $(wildcard $(LOCAL_HOSTS)),$(LOCAL_HOSTS)) \ $(if $(wildcard $(LOCAL_PASSWD)),$(LOCAL_PASSWD)) \ + $(if $(wildcard $(LOCAL_GROUP)),$(LOCAL_GROUP)) \ $(if $(wildcard $(LOCAL_KBOOT_CONF)),$(LOCAL_KBOOT_CONF)) \ $(if $(wildcard $(KBOOT_MESSAGE)),$(KBOOT_MESSAGE)) \ $(if $(wildcard $(LOCAL_OPENSSH_RSA)),$(LOCAL_OPENSSH_RSA)) \ @@ -239,20 +312,29 @@ $(if $(wildcard config/*.bkeymap),config/*.bkeymap) rm -f etc/root/{hosts,passwd,kboot.conf,message} rm -rf root/tmp root/dev + mkdir -p root/root/systemloader/kboot/root/lib/evms + ln -sf /lib/evms/$(EVMS_VERSION) \ + root/root/systemloader/kboot/root/lib/evms/$(EVMS_VERSION) mkdir -p root/etc root/tmp root/proc root/dev root/sys - mkdir -p root/mnt/tmp root/mnt/root + mkdir -p root/mnt/tmp root/mnt/root root/bin root/sbin [ -e root/dev/console ] || mknod root/dev/console c 5 1 [ -e root/dev/null ] || mknod root/dev/null c 1 3 + [ -e root/dev/tty ] || mknod root/dev/tty c 5 0 [ -e root/dev/tty1 ] || mknod root/dev/tty1 c 4 1 + [ -e root/dev/random ] || mknod root/dev/random c 1 8 + [ -e root/dev/urandom ] || mknod root/dev/urandom c 1 9 [ ! -r "$(LOCAL_HOSTS)" ] || cp "$(LOCAL_HOSTS)" root/etc/ if [ -r "$(LOCAL_PASSWD)" ]; then \ cp "$(LOCAL_PASSWD)" root/etc/; \ - else \ - echo 'kboot:*:0:0:kboot user:/:/sbin/kboot' >root/etc/passwd; \ + fi + if [ -r "$(LOCAL_GROUP)" ]; then \ + cp "$(LOCAL_GROUP)" root/etc/; \ fi [ ! -r "$(LOCAL_KBOOT_CONF)" ] || cp "$(LOCAL_KBOOT_CONF)" root/etc/ [ ! -r "$(KBOOT_MESSAGE)" ] || cp "$(KBOOT_MESSAGE)" root/etc/ - cp scripts/kboot scripts/common-all root/sbin/ # stupid place ... + chmod a+x scripts/* + cp scripts/kboot scripts/common-all scripts/init.kboot root/sbin/ # stupid place... + cp scripts/kboot_ssh root/sbin ifeq ($(use_dhcp),true) cp scripts/udhcpc.script root/sbin/ endif @@ -285,9 +367,12 @@ fi ifeq ($(ssh_server),true) echo /sbin/kboot >root/etc/shells + echo /sbin/kboot_ssh >>root/etc/shells + echo /bin/ash >>root/etc/shells touch root/etc/group mkdir -p root/dev/pts root/var/run endif + mkdir -p root/var/log rm -f root/etc/default.bkeymap if [ "`echo config/*.bkeymap`" != 'config/*.bkeymap' ]; then \ if [ ! -r "`echo config/*.bkeymap`" ]; then \ @@ -296,10 +381,44 @@ fi; \ cp config/*.bkeymap root/etc/default.bkeymap; \ fi - install -s utils/uclibc-readline root/bin/readline - install -s utils/uclibc-getctty root/sbin/getctty - install -s utils/uclibc-fsbyname root/sbin/fsbyname - ln -sf /sbin/kboot root/init + install -s utils/$(UTILS_PREFIX)readline root/bin/readline + install -s utils/$(UTILS_PREFIX)getctty root/sbin/getctty + install -s utils/$(UTILS_PREFIX)fsbyname root/sbin/fsbyname + ln -sf /sbin/init.kboot root/init + ifeq ($(config_uclibc),false) # copy dynamic libraries + cp /usr/bin/strace root/bin + cp /etc/localtime root/etc + cp /etc/evms.conf root/etc + for FILE in $$( find root/bin root/sbin root/usr/bin root/usr/sbin \ + -type f -perm -100 ) ; do \ + LIBS=$$( ldd $$FILE | awk '/=>.*\.so/ { print $$3 }' ) ; \ + for LIB in $$LIBS ; do \ + LIB_PATH=$$( echo $$LIB | sed -e 's/[^/]*$$//' ) ; \ + mkdir -p root/$$LIB_PATH ; \ + cp $$LIB root/$$LIB_PATH ; \ + done ; \ + done ; \ + cp $$LIB_PATH/libnss_files.so.2 root/$$LIB_PATH ; \ + cp $$LIB_PATH/libnss_dns.so.2 root/$$LIB_PATH ; \ + cp $$LIB_PATH/libresolv.so.2 root/$$LIB_PATH ; \ + cp $$LIB_PATH/libgcc_s.so.1 root/$$LIB_PATH ; \ + for FILE in $$( find root/lib root/usr/lib root/usr/local/lib \ + -type f -perm -100 ) ; do \ + LIBS=$$( ldd $$FILE | awk '/=>.*\.so/ { print $$3 }' ) ; \ + for LIB in $$LIBS ; do \ + LIB_PATH=$$( echo $$LIB | sed -e 's/[^/]*$$//' ) ; \ + mkdir -p root/$$LIB_PATH ; \ + cp $$LIB root/$$LIB_PATH ; \ + done ; \ + done ; \ + echo $$LIB_PATH + LIB=$$( ldd root/bin/busybox | tail -n1 | awk '{ print $$1 }' ) ; \ + LIB_PATH=$$( echo $$LIB | sed -e 's/[^/]*$$//' ) ; \ + mkdir -p root/$$LIB_PATH ; \ + cp $$LIB root/$$LIB_PATH + touch root/etc/ld.so.conf + ldconfig -r root + endif kboot-root.cpio.gz: \ root @@ -308,6 +427,35 @@ gzip >../kboot-root.cpio.gz; ) || \ { rm -f kboot-root.cpio.gz; exit 1; } +kboot-root-glibc.cpio.gz: \ + root + rm -f kboot-root-glibc.cpio.gz # make sure we get the right permissions + (umask 077; cd root && find . | cpio -o -H newc | \ + gzip >../kboot-root-glibc.cpio.gz; ) || \ + { rm -f kboot-root-glibc.cpio.gz; exit 1; } + + +# ----- building an rpm package ----------------------------------------------- + +redhat-rpm: \ + download + mkdir -p /usr/src/redhat/SOURCES/ + cd ..; ln -s kboot kboot-9; \ + tar cvzf /usr/src/redhat/SOURCES/kboot.tar.gz kboot kboot-9; cd kboot + rpmbuild -ba kboot.spec + +# ----- testing the ui build -------------------------------------------------- + + +root-meta/installed/kboot-ui: + mkdir -p root-meta/installed + ifeq ($(config_uclibc),false) + make INSTDIR=../root/usr/kboot -C ui install + else + $(using_uclibc_cross) make INSTDIR=../root/usr/kboot CROSS=uclibc- -C ui install + endif + touch $@ + # ----- Build the kernel ------------------------------------------------------ @@ -333,7 +481,7 @@ $(KERNEL_DIR)/.kboot-built: \ $(KERNEL_DIR)/.kboot-configured rm -f $@ - make -C $(KERNEL_DIR) + # make -C $(KERNEL_DIR) touch $@ @@ -342,25 +490,32 @@ $(BINUTILS_DIR)/.kboot-extracted: \ $(DL)/$(BINUTILS_PACKAGE).ok +ifeq ($(config_uclibc),true) rm -f $@ $(BINUTILS_DIR)/.kboot-configured \ $(BINUTILS_DIR)/.kboot-built build/installed/binutils tar xfj $(DL)/$(BINUTILS_PACKAGE) +endif touch $@ $(BINUTILS_DIR)/.kboot-configured: \ $(BINUTILS_DIR)/.kboot-extracted +ifeq ($(config_uclibc),true) rm -f $@ $(BINUTILS_DIR)/.kboot-built build/installed/binutils ( cd $(BINUTILS_DIR) && ./configure --prefix=$(PWD)/build; ) +endif touch $@ $(BINUTILS_DIR)/.kboot-built: \ $(BINUTILS_DIR)/.kboot-configured +ifeq ($(config_uclibc),true) rm -f $@ build/installed/binutils make -C $(BINUTILS_DIR) +endif touch $@ build/installed/binutils: \ $(BINUTILS_DIR)/.kboot-built +ifeq ($(config_uclibc),true) rm -f $@ mkdir -p build/installed make -C $(BINUTILS_DIR) install @@ -371,6 +526,7 @@ ln -sf $$n uclibc-$$n || exit 1; \ fi; \ done; ) +endif touch $@ @@ -379,15 +535,18 @@ $(GCC_DIR)/.kboot-extracted: \ $(DL)/$(GCC_PACKAGE).ok +ifeq ($(config_uclibc),true) rm -f $@ \ $(GCC_DIR)-host/.kboot-configured $(GCC_DIR)-host/.kboot-built \ build/installed/gcc-host $(GCC_DIR)-uclibc/.kboot-configured \ $(GCC_DIR)-uclibc/.kboot-built build/installed/gcc-uclibc tar xfj $(DL)/$(GCC_PACKAGE) +endif touch $@ $(GCC_DIR)-host/.kboot-configured: \ $(GCC_DIR)/.kboot-extracted build/installed/binutils +ifeq ($(config_uclibc),true) rm -f $@ $(GCC_DIR)-host/.kboot-built build/installed/gcc-host mkdir -p $(GCC_DIR)-host mkdir -p $(PWD)/build/usr/include @@ -395,22 +554,27 @@ ../$(GCC_DIR)/configure \ --prefix=$(PWD)/build/host \ --enable-languages=c; ) +endif touch $@ $(GCC_DIR)-host/.kboot-built: \ $(GCC_DIR)-host/.kboot-configured +ifeq ($(config_uclibc),true) rm -f $@ build/installed/gcc-host make -C $(GCC_DIR)-host +endif touch $@ build/installed/gcc-host: \ $(GCC_DIR)-host/.kboot-built +ifeq ($(config_uclibc),true) rm -f $@ mkdir -p build/installed make -C $(GCC_DIR)-host install (cd build/bin && \ for n in gcc cpp; do ln -sf ../host/bin/$$n host-$$n || exit 1; \ done; ) +endif touch $@ @@ -421,23 +585,28 @@ $(GCC_DIR)/.kboot-extracted build/installed/binutils rm -f $@ $(GCC_DIR)-uclibc/.kboot-built build/installed/gcc-uclibc mkdir -p $(GCC_DIR)-uclibc +ifeq ($(config_uclibc),true) ( cd $(GCC_DIR)-uclibc && \ ../$(GCC_DIR)/configure \ --with-sysroot=$(PWD)/build \ --prefix=$(PWD)/build/uclibc \ --enable-languages=c; ) +endif touch $@ $(GCC_DIR)-uclibc/.kboot-built: \ $(GCC_DIR)-uclibc/.kboot-configured +ifeq ($(config_uclibc),true) rm -f $@ build/installed/gcc-uclibc make -C $(GCC_DIR)-uclibc +endif touch $@ build/installed/gcc-uclibc: \ $(GCC_DIR)-uclibc/.kboot-built rm -f $@ mkdir -p build/installed + ifeq ($(config_uclibc),true) make -C $(GCC_DIR)-uclibc install # @@@ ugly hack. I wonder how to make gcc pick of the right linker ... perl -pi -e 's|/lib/ld-linux.so.\d+|/lib/ld-uClibc.so.0|g' \ @@ -445,6 +614,7 @@ (cd build/bin && \ for n in gcc cpp; do ln -sf ../uclibc/bin/$$n uclibc-$$n || exit 1; \ done; ) + endif touch $@ @@ -455,12 +625,15 @@ $(DL)/$(UCLIBC_PACKAGE).ok rm -f $@ $(UCLIBC_DIR)/.kboot-configured $(UCLIBC_DIR)/.kboot-built \ build/installed/uclibc root-meta/installed/uclibc +ifeq ($(config_uclibc),true) tar xfj $(DL)/$(UCLIBC_PACKAGE) +endif touch $@ $(UCLIBC_DIR)/.kboot-configured: \ $(UCLIBC_DIR)/.kboot-extracted $(KERNEL_DIR)/.kboot-built rm -f $@ $(UCLIBC_DIR)/.kboot-built build/installed/uclibc +ifeq ($(config_uclibc),true) make -C $(UCLIBC_DIR) defconfig $(edit_config) $(UCLIBC_DIR)/.config \ 'KERNEL_SOURCE="$(PWD)/$(KERNEL_DIR)"' \ @@ -472,28 +645,35 @@ UCLIBC_HAS_RPC=y UCLIBC_HAS_FULL_RPC=n endif make -C $(UCLIBC_DIR) oldconfig +endif touch $@ $(UCLIBC_DIR)/.kboot-built: \ $(UCLIBC_DIR)/.kboot-configured build/installed/gcc-host rm -f $@ build/installed/uclibc root-meta/installed/uclibc +ifeq ($(config_uclibc),true) $(using_safe_gcc) make -C $(UCLIBC_DIR) +endif touch $@ build/installed/uclibc: \ $(UCLIBC_DIR)/.kboot-built rm -f $@ mkdir -p build/installed +ifeq ($(config_uclibc),true) make -C $(UCLIBC_DIR) PREFIX=$(PWD)/build install_runtime make -C $(UCLIBC_DIR) PREFIX=$(PWD)/build install_dev +endif touch $@ root-meta/installed/uclibc: \ $(UCLIBC_DIR)/.kboot-built rm -f $@ mkdir -p root root-meta/installed +ifeq ($(config_uclibc),true) make -C $(UCLIBC_DIR) PREFIX=$(PWD)/root install_runtime rm -f root/lib/lib{dl,m,nsl,pthread,rt}[.-]* +endif touch $@ @@ -508,110 +688,137 @@ touch $@ $(BUSYBOX_DIR)/.kboot-configured: \ - $(BUSYBOX_DIR)/.kboot-extracted build/installed/uclibc + $(BUSYBOX_DIR)/.kboot-extracted \ + $(build_inst_uclibc) rm -f $@ $(BUSYBOX_DIR)/.kboot-built root-meta/installed/busybox - make -C $(BUSYBOX_DIR) allnoconfig - # General Configuration - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_FEATURE_VERBOSE_USAGE=y \ - CONFIG_FEATURE_DEVPTS=y + make -C $(BUSYBOX_DIR) defconfig # Installation Options - $(edit_config) $(BUSYBOX_DIR)/.config \ - 'PREFIX="$(PWD)/root"' - # Busybox Library Tuning - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_MD5_SIZE_VS_SPEED=3 - # Archival Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_BUNZIP2=y \ - CONFIG_GUNZIP=y \ - CONFIG_GZIP=y \ - CONFIG_TAR=y CONFIG_FEATURE_TAR_CREATE=y CONFIG_FEATURE_TAR_BZIP2=y \ - CONFIG_FEATURE_TAR_GZIP=y CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY=y \ - CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y \ - CONFIG_UNZIP=y + echo 'PREFIX="$(PWD)/root"' >>$(BUSYBOX_DIR)/.config # Coreutils - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_CAT=y CONFIG_CHROOT=y CONFIG_CP=y \ - CONFIG_DATE=y \ - CONFIG_DD=y CONFIG_DF=y \ - CONFIG_DU=y CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K=y \ - CONFIG_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y \ - CONFIG_ENV=y \ - CONFIG_EXPR=y \ - CONFIG_HEAD=y \ - CONFIG_LN=y \ - CONFIG_LS=y CONFIG_FEATURE_LS_FILETYPES=y \ - CONFIG_FEATURE_LS_FOLLOWLINKS=y CONFIG_FEATURE_LS_RECURSIVE=y \ - CONFIG_FEATURE_LS_SORTFILES=y CONFIG_FEATURE_LS_TIMESTAMPS=y \ - CONFIG_FEATURE_LS_USERNAME=y \ - CONFIG_MD5SUM=y CONFIG_MKDIR=y CONFIG_MKNOD=y CONFIG_MV=y \ - CONFIG_RM=y CONFIG_RMDIR=y \ - CONFIG_SHA1SUM=y CONFIG_SORT=y CONFIG_SYNC=y \ - CONFIG_TAIL=y CONFIG_FEATURE_FANCY_TAIL=y \ - CONFIG_TOUCH=y CONFIG_TRUE=y \ - CONFIG_UNAME=y \ - CONFIG_FEATURE_PRESERVE_HARDLINKS=y \ - CONFIG_FEATURE_HUMAN_READABLE=y -# CONFIG_EXPR=n CONFIG_FALSE=n CONFIG_TRUE=n + echo 'CONFIG_BASENAME=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CHGRP=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CHMOD=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CHOWN=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CMP=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CUT=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_DIRNAME=n"' >>$(BUSYBOX_DIR)/.config +# echo 'CONFIG_EXPR=n"' >>$(BUSYBOX_DIR)/.config +# echo 'CONFIG_FALSE=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_ID=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_INSTALL=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_LS_COLOR=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_MD5SUM=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_PWD=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_SHA1SUM=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_SLEEP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TEE=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TR=y"' >>$(BUSYBOX_DIR)/.config +# echo 'CONFIG_TRUE=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TTY=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_UNIQ=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_USLEEP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_WC=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_WHOAMI=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_YES=n"' >>$(BUSYBOX_DIR)/.config # Console Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_LOADKMAP=y + echo 'CONFIG_CHVT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_CLEAR=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_DEALLOCVT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_LOADKMAP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_OPENVT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_RESET=n"' >>$(BUSYBOX_DIR)/.config # Debian Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_WHICH=y + echo 'CONFIG_MKTEMP=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_READLINK=y"' >>$(BUSYBOX_DIR)/.config + # Editors + echo 'CONFIG_AWK=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_AWK_MATH=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_SED=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_VI=y"' >>$(BUSYBOX_DIR)/.config + # Finding Utilities + echo 'CONFIG_FIND=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_GREP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_GREP_EGREP_ALIAS=y' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_GREP_FGREP_ALIAS=y' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_XARGS=n"' >>$(BUSYBOX_DIR)/.config # Init Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_HALT=y -# CONFIG_HALT=n (reboot) - # Linux System Utilities - ifeq ($(nfs_client),true) - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_FEATURE_MOUNT_NFS=y - endif - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_DMESG=y \ - CONFIG_HEXDUMP=y \ - CONFIG_MORE=y CONFIG_FEATURE_USE_TERMIOS=y \ - CONFIG_MOUNT=y \ - CONFIG_SWITCH_ROOT=y \ - CONFIG_UMOUNT=y \ - CONFIG_FEATURE_MOUNT_LOOP=y + echo 'CONFIG_INIT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_HALT=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_POWEROFF=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_REBOOT=y"' >>$(BUSYBOX_DIR)/.config + # Miscellaneous Utilities + echo 'CONFIG_STRINGS=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TIME=n"' >>$(BUSYBOX_DIR)/.config # Networking Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_IFCONFIG=y CONFIG_FEATURE_IFCONFIG_STATUS=y \ - CONFIG_PING=y CONFIG_FEATURE_FANCY_PING=y \ - CONFIG_ROUTE=y \ - CONFIG_TFTP=y CONFIG_FEATURE_TFTP_GET=y \ - CONFIG_WGET=y CONFIG_FEATURE_WGET_STATUSBAR=y \ - CONFIG_FEATURE_WGET_AUTHENTICATION=y + echo 'CONFIG_HOSTNAME=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TFTP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TFTP_GET=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TFTP_PUT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TFTP_BLOCKSIZE=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TFTP_DEBUG=n"' >>$(BUSYBOX_DIR)/.config + # some utilities just for testing (remove later?) + echo 'CONFIG_FTPGET=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FTPPUT=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_NSLOOKUP=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_TELNET=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TELNET_TTYPE=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_TELNET_AUTOLOGIN=y"' >>$(BUSYBOX_DIR)/.config + #end of utilities for testing ifeq ($(use_dhcp),true) - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_UDHCPC=y + echo 'CONFIG_UDHCPC=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_UDHCP_SYSLOG=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_UDHCP_DEBUG=n"' >>$(BUSYBOX_DIR)/.config endif # Process Utilities - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_FREE=y - # Shells - $(edit_config) $(BUSYBOX_DIR)/.config \ - CONFIG_FEATURE_SH_IS_ASH=y \ - CONFIG_ASH=y CONFIG_ASH_JOB_CONTROL=y \ - CONFIG_ASH_OPTIMIZE_FOR_SIZE=y CONFIG_ASH_EXPAND_PRMT=y \ - CONFIG_FEATURE_COMMAND_EDITING=y \ - CONFIG_FEATURE_COMMAND_HISTORY=15 \ - CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y \ - CONFIG_FEATURE_SH_FANCY_PROMPT=y + echo 'CONFIG_KILL=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_PIDOF=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_PS=y"' >>$(BUSYBOX_DIR)/.config +# echo 'CONFIG_SYSCTL=y"' >>$(BUSYBOX_DIR)/.config # @@@ workaround + echo 'CONFIG_UPTIME=n"' >>$(BUSYBOX_DIR)/.config + # Another Bourne-like Shell + echo 'CONFIG_ASH_MATH_SUPPORT=n"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_SH_IS_ASH=y"' >>$(BUSYBOX_DIR)/.config + # System Logging Utilities + echo 'CONFIG_SYSLOGD=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_ROTATE_LOGFILE=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_IPC_SYSLOG=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_LOGREAD=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_KLOGD=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_LOGGER=y"' >>$(BUSYBOX_DIR)/.config + # Linux System Utilities + ifeq ($(nfs_client),true) + echo 'CONFIG_NFSMOUNT=y"' >>$(BUSYBOX_DIR)/.config + endif + echo 'CONFIG_SWAPONOFF=n"' >>$(BUSYBOX_DIR)/.config +#SWEN's additions + echo 'CONFIG_NETSTAT=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_PASSWORD=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_SU=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_PWD=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_GETTY=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_LOGIN=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_MODPROBE=y"' >>$(BUSYBOX_DIR)/.config + echo 'CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y"' >>$(BUSYBOX_DIR)/.config + make -C $(BUSYBOX_DIR) oldconfig touch $@ $(BUSYBOX_DIR)/.kboot-built: \ - $(BUSYBOX_DIR)/.kboot-configured build/installed/gcc-uclibc + $(BUSYBOX_DIR)/.kboot-configured \ + $(build_inst_gcc_uclibc) rm -f $@ root-meta/installed/busybox + ifeq ($(config_uclibc),false) + $(using_uclibc_cross) make -C $(BUSYBOX_DIR) + else $(using_uclibc_cross) make -C $(BUSYBOX_DIR) CROSS=uclibc- + endif touch $@ root-meta/installed/busybox: \ - $(BUSYBOX_DIR)/.kboot-built root-meta/installed/uclibc + $(BUSYBOX_DIR)/.kboot-built \ + $(root_meta_inst_uclibc) rm -f $@ mkdir -p root root-meta/installed make -C $(BUSYBOX_DIR) install @@ -629,21 +836,34 @@ $(UDEV_DIR)/.kboot-built: \ $(UDEV_DIR)/.kboot-extracted $(KERNEL_DIR)/.kboot-built \ - build/installed/gcc-uclibc + $(build_inst_gcc_uclibc) rm -f $@ root-meta/udev/installed - $(using_uclibc_cross) make -C $(UDEV_DIR) CROSS_COMPILE=uclibc- \ + ifeq ($(config_uclibc),false) + $(using_uclibc_cross) make -C $(UDEV_DIR) \ prefix=$(PWD)/root \ KERNEL_DIR=$(PWD)/$(KERNEL_DIR) \ USE_KLIBC=false USE_LOG=false + else + $(using_uclibc_cross) make -C $(UDEV_DIR) CROSS=uclibc- \ + prefix=$(PWD)/root \ + KERNEL_DIR=$(PWD)/$(KERNEL_DIR) \ + USE_KLIBC=false USE_LOG=false + endif touch $@ root-meta/installed/udev: \ - $(UDEV_DIR)/.kboot-built build/installed/gcc-uclibc \ - root-meta/installed/uclibc + $(UDEV_DIR)/.kboot-built \ + $(build_inst_gcc_uclibc) \ + $(root_meta_inst_uclibc) rm -f $@ mkdir -p root root-meta/installed - $(using_uclibc_cross) make -C $(UDEV_DIR) CROSS_COMPILE=uclibc- \ + ifeq ($(config_uclibc),false) + $(using_uclibc_cross) make -C $(UDEV_DIR) \ + DESTDIR=$(PWD)/root V=true install + else + $(using_uclibc_cross) make -C $(UDEV_DIR) CROSS=uclibc- \ DESTDIR=$(PWD)/root V=true install + endif cp $(UDEV_DIR)/udevstart root/sbin/ rm -f root/usr/bin/udev{test,info} rm -f root/usr/sbin/udev{monitor,info} @@ -664,6 +884,8 @@ $(DROPBEAR_DIR)-host/.kboot-built # don't use --strip-components et al. for compatibility with older tar tar xfz $(DL)/$(DROPBEAR_PACKAGE) + patch -d $(DROPBEAR_DIR) -p1 -s \ + /dev/null", SSH_KEY_CONVERT, temp, res_str); + cfg_strprintf(&ex_str,"%s openssh dropbear %s %s 2>/dev/null", + SSH_KEY_CONVERT, temp, res_str); - ex_code = system(ex_str); //convert openssh key to dropbear format + //convert openssh key to dropbear format + ex_code = system(ex_str); if(WEXITSTATUS(ex_code) > 0) //error for key conversion { - sprintf(ex_str,"%s dropbear dropbear %s %s 2>/dev/null", SSH_KEY_CONVERT, temp, res_str); - ex_code = system(ex_str); //check if key is a dropbear key already - } + cfg_strprintf(&ex_str,"%s dropbear dropbear %s %s 2>/dev/null", + SSH_KEY_CONVERT, temp, res_str); - free(ex_str); //free memory (execution string) + //check if key is a dropbear key already + ex_code = system(ex_str); + } - if( (WEXITSTATUS(ex_code) == 0) && (rename(res_str, temp) == 0) ) //conversion and renaming ok + //conversion and renaming ok + if( (WEXITSTATUS(ex_code) == 0) && (rename(res_str, temp) == 0) ) { - sprintf(res_str,"%s %s", (strcmp(type,"DSS") == 0) ? "-d" : "-r", temp); - free(temp); //free memory for process specific key file name + cfg_strprintf(&res_str,"%s %s", + (strcmp(type,"DSS") == 0) ? "-d" : "-r", temp); + + //free memory for process specific key file name + cfg_strfree(&temp); + cfg_strfree(&ex_str); return(res_str); } } //something went wrong (conversion || renaming || execution || loading) - sprintf(res_str,"%s %s", (strcmp(type,"DSS") == 0) ? "-d" : "-r", def_str); - free(temp); + cfg_strprintf(&res_str,"%s %s", + (strcmp(type,"DSS") == 0) ? "-d" : "-r", def_str); + + cfg_strfree(&temp); + cfg_strfree(&ex_str); return(res_str); } + int main(int argc,char **argv) { char const *cmd_name = basename(argv[0]); @@ -115,10 +131,10 @@ char *rsa_key = get_value("rsa_key",argv); char *dss_key = get_value("dss_key",argv); - char *temp_fn; //pid-file name - char *ex_str; //execution string + char *temp_fn = NULL; //pid-file name + char *ex_str = NULL; //execution string - FILE *temp_fh; //pid-file handle + FILE *temp_fh = NULL; //pid-file handle struct stat buf; //result buffer for stat() call @@ -127,31 +143,39 @@ openlog(cmd_name, LOG_PID, LOG_USER); - portnumber = portnumber ? portnumber : SSH_PORT; //assign port number + //assign port number + portnumber = portnumber ? portnumber : SSH_PORT; syslog(LOG_INFO,"Starting SSH on port %s", portnumber); - temp_fn = malloc(strlen(SSH_PID) + strlen(portnumber) + 2); - sprintf(temp_fn,"%s.%s",SSH_PID,portnumber); + cfg_strinit(&temp_fn); + cfg_strprintf(&temp_fn,"%s.%s",SSH_PID,portnumber); - if(stat(temp_fn,&buf) == 0) //check for existence of PID file + //check for existence of PID file + if(stat(temp_fn,&buf) == 0) { if((temp_fh = fopen(temp_fn,"r"))) { - fscanf(temp_fh,"%ld",(long *) &ssh_pid); //read PID for SSHD which is serving our port - fclose(temp_fh); - syslog(LOG_WARNING,"PID file exists already"); - if(kill(ssh_pid, 0) == 0) //PID is running - { - syslog(LOG_ERR,"already running on port %s", portnumber); - exit(10); - } - syslog(LOG_INFO,"not running on port %s. Removing stale PID file\n", portnumber); + //read PID for SSHD which is serving our port + fscanf(temp_fh,"%ld",(long *) &ssh_pid); + fclose(temp_fh); + syslog(LOG_WARNING,"PID file exists already"); + //PID is running + if(kill(ssh_pid, 0) == 0) + { + syslog(LOG_ERR,"already running on port %s", + portnumber); + exit(10); + } + syslog(LOG_INFO, + "not running on port %s. Removing stale PID file\n", + portnumber); } - unlink(temp_fn); //delete stale PID file + //delete stale PID file + unlink(temp_fn); } - free(temp_fn); + cfg_strfree(&temp_fn); if(! rsa_key) { @@ -159,7 +183,8 @@ sprintf(rsa_key,"-r %s", SSH_RSA_HOST_KEY); } else if(! (rsa_key = assemble_key_param("RSA", rsa_key, portnumber))) - syslog(LOG_ERR,"Cannot retrieve RSA host key file. Using default instead.\n"); + syslog(LOG_ERR, + "Cannot retrieve RSA host key file. Using default instead.\n"); if(! dss_key) { @@ -167,13 +192,21 @@ sprintf(dss_key,"-d %s", SSH_DSS_HOST_KEY); } else if(! (dss_key = assemble_key_param("DSS", dss_key, portnumber))) - syslog(LOG_ERR,"Cannot retrieve DSS host key file. Using default instead.\n"); - - ex_str = malloc(strlen(SSH_CMD) + strlen(SSH_PID) + 2 * strlen(portnumber) + strlen(dss_key) + strlen(rsa_key) + 15); + syslog(LOG_ERR, + "Cannot retrieve DSS host key file. Using default instead.\n"); - sprintf(ex_str,"%s -a -p %s -P %s.%s %s %s", SSH_CMD, portnumber, SSH_PID, portnumber, dss_key, rsa_key); + cfg_strinit(&ex_str); + cfg_strprintf(&ex_str,"%s -a -p %s %s %s", + SSH_CMD, portnumber, dss_key, rsa_key); ex_code = system(ex_str); + /* workaround for missing -P option */ + cfg_strprintf(&ex_str,"cp %s %s.%s", + DROPBEAR_PIDFILE, SSH_PID, portnumber); + cfg_system(ex_str); + + cfg_strfree(&ex_str); + closelog(); return( (ex_code <= 0) ? ex_code : WEXITSTATUS(ex_code) ); } diff -Nuar kboot-10/VERSIONS kboot-10_patch3_integration/VERSIONS --- kboot-10/VERSIONS 2006-04-02 03:45:09.000000000 +0200 +++ kboot-10_patch3_integration/VERSIONS 2006-06-26 14:41:13.000000000 +0200 @@ -3,9 +3,13 @@ GCC_VERSION=3.4.6 BINUTILS_VERSION=2.16.1 UCLIBC_VERSION=0.9.28 -BUSYBOX_VERSION=1.1.1 +BUSYBOX_VERSION=1.1.3 UDEV_VERSION=088 KEXEC_TOOLS_VERSION=1.101 DROPBEAR_VERSION=0.48.1 +DHCPCD_VERSION=1.3.22-pl4 +EVMS_VERSION=2.5.5 KBD_VERSION=1.12 LILO_VERSION=22.7.1 +OPENSSL_VERSION=0.9.8b +LIBSSH_VERSION=0.11 Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Kboot-general mailing list Kboot-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kboot-general