Re: Chnages in grub menu.lst will be overwritten
On Friday, 13. April 2007, Jens Strohschnitter wrote: Hi list, we install debian-servers running on CF-cards. While installation via FAI, we've got dma-timouts. Booting with paramter ide=no-dma on grub-bootscreen fixes this problem. So we have created a seperate menu.lst-File as a class and copied it with fcopy to /boot. But the menu.lst file will be overwritten by FAI, so that the no-dma-parameter is lost while installing the server. Check that you /var/lib/fai/FAI_CLASSES and see if your class you used comes after GRUB class. I can't find any file or class were this could be made. Does anyone know how and where FAI creates the menu.lst for grub after the install ? # grep -r menu.lst . ./scripts/GRUB/10-setup:fcopy -Uv boot/grub/menu.lst Achim -- Regards, Jens Strohschnitter - *!!!LINUX LINUX LINUX LINUX LINUX!!!* * http://www.jens-strohschnitter.de * - Set the controls for the heart of the sun - __ Raiffeisen Waren-Zentrale Rhein-Main eG 50668 Koeln, Altenberger Str. 1a Tel: 0221/1638-0 Fax: 0221/1638-254 Sitz: Koeln Amtsgericht Koeln, GnR 728 Vorstand: Hans-Josef Hilgers (Sprecher) Markus Stuettgen Dr. Karl-Heinrich Suemmermann Friedhelm Decker (Vorsitzender) Ingo Steitz Vorsitzender des Aufsichtsrates: Peter Bleser (MdB) St.Nr.: 215/5938/0152 Bankverbindung: WGZ Bank AG, Duesseldorf (BLZ 300 600 10) Konto-Nr.: 300 011 -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: managing passwords
On Tuesday, 10. April 2007, Rudy Gevaert wrote: Hello, I'm looking into softupdate and have a question about password management. E.g. we have a slapd.conf file that needs a a password in it. Up till now (not using softupdate) I fcopy the slapd.conf file on installation, and then afterwards I put the password in it. If I would use softupdate and fcopy copies each time the template I would have to edit it each time. But on the otherhand there shouldn't be any local modified files... so you would have to put the passwords on the install server. But each install server can be mounted from any machine that is hooked onto the installation subnet... How are you handling passwords in your environment? I've soon the same problem ;) I plan to look into cfengine2 to distribute these files. Alternatively try to patch fai-chboot to manage /etc/export: add on ip on add or enable. remove nfs export on fai-chboot -r. Achim Thanks in advance, -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Rudy Gevaert [EMAIL PROTECTED] tel:+32 9 264 4734 Directie ICT, afd. Infrastructuur ICT Department, Infrastructure office Groep SystemenSystems group Universiteit Gent Ghent University Krijgslaan 281, gebouw S9, 9000 Gent, Belgie www.UGent.be -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
sfdisk goes mad -- or -- my borked disk_config
Hi, I'm using 3.1.8ubuntu1 with feisty (No ubuntu change touches the config parts of fai) With the diskconfig file below (part1 is DellUtil vfat, part2 is Windows XP ntfs), fai computes way to high cylinder number (log below). $ cat disk_config/DELL_LAPTOP # generic disk configuration for one small disk # disk size from 500Mb up to what you can buy today # # type mountpoint size in mb [mount options] [;extra options] # Note: AFS: openafs-client/cachesize in debconf/thisclass afs cache partition disk_config disk1 primary - preserve1 primary - preserve2 primary / 50-defaults,errors=remount-ro ; -m 3 -j ext3 logical /var/cache/afs 2000 defaults; -m 0 -j ext3 logical swap 3000 sw ; gives this in fai.log: Mapping disk name disk1 to hda Creating partition table: LC_ALL=C sfdisk -q /dev/hda /var/log/fai/current/partition.hda Warning: The partition table looks like it was made for C/H/S=*/255/63 (instead of 116280/16/63). For this listing I'll assume that geometry. sfdisk: I don't like these partitions - nothing changed. (If you really want this, use the --force option.) SFDISK ERROR: Disk /dev/hda: 116280 cylinders, 16 heads, 63 sectors/track Old situation: Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls#blocks Id System /dev/hda1 0+ 6 7- 56196 de Dell Utility /dev/hda2 * 71222121697675207 HPFS/NTFS /dev/hda3 0 - 0 00 Empty /dev/hda4 0 - 0 00 Empty New situation: Units = sectors of 512 bytes, counting from 0 Device BootStart End #sectors Id System /dev/hda163112454 112392 de Dell Utility /dev/hda2112455 19647494 19535040 7 HPFS/NTFS /dev/hda3 * 19647936 106968959 87321024 83 Linux /dev/hda4 106968960 117210239 10241280 5 Extended /dev/hda5 106969023 1110654714096449 83 Linux /dev/hda6 111065535 1172102396144705 82 Linux swap / Solaris setup_harddisks version 0.42fai Probing disks: /dev/hda Disks found: hda - Here the cfdisk output: cfdisk 2.12r Disk Drive: /dev/hda Size: 60011642880 bytes, 60.0 GB Heads: 255 Sectors per Track: 63 Cylinders: 7296 Name Flags Part Type FS Type [Label] Size (MB) -- hda1 PrimaryDell Utility 57.58 hda2 Boot PrimaryNTFS [] 10001.95 Pri/LogFree Space 49952.13 -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: lpadmin/cups problem
On Wednesday, 31. January 2007, Per Foreby wrote: I'm trying to setup printers during the installation, using $ROOTCMD lpadmin However, since the is no cupsd in the installation environment, lpadmin doesn't have anyone to talk to, and the error message in shell.log is: lpadmin: Unable to connect to server: Connection refused I thougt about adding cupsys to the nfs environment, but cupsd wouldn't create the configuration in the rigth place. What I do now is to create /INSTALL.NEW at the end of the installation, and make that file trigger fai softupdate at the first boot, but it would of course be nice to avoid that extra stage. Has anyone had this problem and solved it? Would it for exampel work if I started cupds at the end of the installation ($ROOTCMD /etc/init.d/cupsys start) Any other suggestions? For my printer server I made a tar of /etc/cups that get's reinstalled. All others nodes just listen what the cups server announces. No need to do anything for them. If you had to add a local printer, I would setup it like: install the /etc/cups/ppd/my-printer.ppd And the section printer my-printer ... /printer from /etc/cups/printers.conf. During install cat my-printer.conf /etc/cups/printers.conf I.e. no need to use lpadmin and have cupsd running ;) Achim /Per -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
3.1.3: FAIBASE install fixes from kubuntu/edgy
Hi, I've tried an fai 3.1.3 installation on Edgy. The appended patch makes a FAIBASE installation succeed: * The changing /bin/sh with /bin/bash should not hurt if done in debian too. * Strange thing is the full path of update-grub. In Kubuntu Edgy there is only /sbin/update-grup. While in debian sid both exists: sbin/update-grubadmin/grub usr/sbin/update-grub admin/grub,admin/grub2 If there no plan to support grub2, it would be nice to switch to /sbin/update-grub too. Otherwise it will stay an kubuntu specific change. * extending doc/Makefile's clean rule is distro agnostic Thx, Achim -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED] diff -u fai-3.1.3ubuntu0/debian/changelog fai-3.1.3ubuntu0/debian/changelog --- fai-3.1.3ubuntu0/debian/changelog +++ fai-3.1.3ubuntu0/debian/changelog @@ -1,3 +1,23 @@ +fai (3.1.3ubuntu0-ach0edgy2) edgy; urgency=low + + * simple example config fixes: + ++ replace #!/bin/sh with #!/bin/bash in all script. ifclass is a + function that gets not defined if sh is dash. Also (error|1) got + trap statements were broken: + class/10-base-classes hooks/instsoft.FAIBASE scripts/DEMO/10-misc + scripts/FAIBASE/30-interface scripts/FAIBASE/10-misc + scripts/LAST/50-misc + ++ files/boot/grub/menu.lst/postinst: fix update-grub full path. It's + in /sbin not /usr/sbin + + * doc/Makefile clean target: add doc/fai-guide.tex-in doc/fai-guide.aux +doc/fai-guide.toc. They are left behind when building docs fails +or is interrupted. + + -- Achim Bohnet [EMAIL PROTECTED] Wed, 20 Dec 2006 23:07:13 +0100 + fai (3.1.3ubuntu0-ach0edgy1) edgy; urgency=low * Merge from debian unstable. only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/doc/Makefile +++ fai-3.1.3ubuntu0/doc/Makefile @@ -29,7 +29,7 @@ nsgmls -wall -E20 -gues $(fdocname) clean: - rm -rf $(docname).txt $(docname).dvi $(docname).pdf $(docname).html $(docname).sasp* *~ $(docname).texinfo $(docname).ps $(docname).out $(docname).tpt $(docname).tex + rm -rf $(docname).txt $(docname).dvi $(docname).pdf $(docname).html $(docname).sasp* *~ $(docname).texinfo $(docname).ps $(docname).out $(docname).tpt $(docname).tex $(docname).tex-in $(docname).aux $(docname).toc rm -f body.tmp head.tmp thb*.png *.log print: dvi only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/class/10-base-classes +++ fai-3.1.3ubuntu0/examples/simple/class/10-base-classes @@ -1,8 +1,8 @@ -#! /bin/sh +#! /bin/bash # echo architecture and OS name in upper case. Do NOT remove these two lines uname -s | tr '[:lower:]' '[:upper:]' [ -x `which dpkg` ] dpkg --print-installation-architecture | tr a-z A-Z [ -f /boot/RUNNING_FROM_FAICD ] echo FAICD -exit 0 \ No newline at end of file +exit 0 only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/class/50-host-classes +++ fai-3.1.3ubuntu0/examples/simple/class/50-host-classes @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash # assign classes hosts only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/files/boot/grub/menu.lst/postinst +++ fai-3.1.3ubuntu0/examples/simple/files/boot/grub/menu.lst/postinst @@ -13,7 +13,7 @@ grub-install --no-floppy --root-directory=$target $BOOT_DEVICE GROOT=$(device2grub $BOOT_PARTITION) perl -pi -e 's/#(\w+)#/$ENV{$1}/' $2 -$ROOTCMD /usr/sbin/update-grub +$ROOTCMD /sbin/update-grub echo Grub installed on $BOOT_DEVICE on $GROOT exit $error only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/hooks/instsoft.FAIBASE +++ fai-3.1.3ubuntu0/examples/simple/hooks/instsoft.FAIBASE @@ -1,3 +1,3 @@ -#! /bin/sh +#! /bin/bash [ -s $target/etc/kernel-img.conf ] || fcopy -Bi /etc/kernel-img.conf only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/scripts/DEMO/10-misc +++ fai-3.1.3ubuntu0/examples/simple/scripts/DEMO/10-misc @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # (c) Thomas Lange, 2001-2006, [EMAIL PROTECTED] only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/scripts/FAIBASE/30-interface +++ fai-3.1.3ubuntu0/examples/simple/scripts/FAIBASE/30-interface @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash error=0 ; trap error=$((error|1)) ERR only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/scripts/FAIBASE/10-misc +++ fai-3.1.3ubuntu0/examples/simple/scripts/FAIBASE/10-misc @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # (c) Thomas Lange, 2001-2006, [EMAIL PROTECTED] only in patch2: unchanged: --- fai-3.1.3ubuntu0.orig/examples/simple/scripts/LAST/50-misc +++ fai-3.1.3ubuntu0/examples/simple/scripts/LAST/50-misc @@ -1,4 +1,4 @@ -#! /bin/sh +#! /bin/bash # copyright Thomas Lange 2001-2006, [EMAIL PROTECTED]
Re: Extending fcopy
On Thursday, 7. December 2006 22:45, Michael Tautschnig wrote: Hi all, Janning has proposed quite a few enhancements to fcopy lately. I think the resulting discussion should be bundled in a single thread and it should actually move to linux-fai-devel (@Janning: don't know, whether you are subscribed to this one already). Just to summarize, the suggestions were: - some -k/--keep option (which I'd rather call --keep-permissions :-) ) to retain the permissions of the file which should be overwritten (BTW: what should happen if there is no such file?) I'm not against the option, but in the an FAI context, IMHO one should now user:group:permission before overriding a file. If there are different from host to host, then either it's wrong or I better 'code' this exception in the installation scripts. - IMHO of course. - some way to return the number of files that were actually copied. That does not sound unix'ish IMHO. Why not the paths of the files copied are listed on stdout. Num is then just adding '| wc -l'. And stuff like: fcopy --whatever | while read file; do ... are still possible. Philosophical: I favour postinst scripts for all this, i.e. event based programming ;) When using FAI the first time the split of data below files and scripts using then scattered over the rest of fai/config was very hard to follow. Now I use fcopy recursive once and logic is in postinst files. And if something is missing I would first think about adding another event script like postinst and filemode. My objections were - Adding code to a mission-critical tool like fcopy is dangerous. - More options may confuse users. - The intended behaviour may be simulated using pre-/postinst scripts. In my opinion the first and the second are still valid, however, the third has been proven to be _really_ clumsy. So I guess these options should be added, if a proper patch can be provided. Maybe, but I like the idea of object (config file) and methods (scripts) being at the same place and not scattered throughout the fai/config tree somewhere (hidden) in scripts. In my (limited) experience it's easier to figure out _later_ when-why-what happens with the config file. Just my 2 euro cent, Achim Hoping for further discussion, Michael -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: Extending fcopy
On Friday, 8. December 2006 13:47, Janning Vygen wrote: Am Freitag, 8. Dezember 2006 11:29 schrieben Sie: On Thursday, 7. December 2006 22:45, Michael Tautschnig wrote: - some -k/--keep option (which I'd rather call --keep-permissions :-) ) to retain the permissions of the file which should be overwritten (BTW: what should happen if there is no such file?) I'm not against the option, but in the an FAI context, IMHO one should now user:group:permission before overriding a file. If there are different from host to host, then either it's wrong or I better 'code' this exception in the installation scripts. - IMHO of course. Why should i know the user:group:permission of a file like /etc/sudoers. I know it is there i want to override it and want to keep the permissions of the orignial file. to me, it sounds very naturally, just to copy the content of a file and keep original permissions. If a file permission get borked it will never be fixed by an softupdate. In the case that it's not root:root 644 it has in most cases a special reason. If the file is missing there noting to preserve, what to use then? would be nice if a softupdate fixes it with right protections. - some way to return the number of files that were actually copied. That does not sound unix'ish IMHO. Why not the paths of the files copied are listed on stdout. Num is then just adding '| wc -l'. And stuff like: fcopy --whatever | while read file; do ... are still possible. your absolutely right and i already wrote it this way, but i did use a different format fcopy already uses: print fcopy: copied $sourcefile to $destfile\n ; that also okay. grep of sed can be used to transform i tried to use exit code, too: exit code is 0: if one or more files were changed (content or permissions) and no errors occured exit code is 1: if no files were changed (content nor permissions) and no warnings or errors occured exit code is 2: warnings or errors occured plus description of exit code 1 exit code is 3: warnings or errors occured plus description of exit code 1 exit code is 4: on all other conditions (show Usage etc.) this way you can say fcopy ... /etc/postgresql /etc/init.d/postgresql restart || exit 1; What do you think about using exit codes? First i sort it's not unix like, but diff does like this, too. Add $? to your prompt and you'll see that much more apps do it like this ;) So both methods can coexists with file list turned on (or off) with a file an option. Philosophical: I favour postinst scripts for all this, i.e. event based programming ;) When using FAI the first time the split of data below files and scripts using then scattered over the rest of fai/config was very hard to follow. Now I use fcopy recursive once and logic is in postinst files. And if something is missing I would first think about adding another event script like postinst and filemode. but if you have more than two (or more) config files for a daemon you need two (or more) postinst scripts which reloads the daemon. And the daemon is reloaded twice and maybe even before the second file is copied which might even include a security hole. Because the daemon is restarted with only one file changed, then copying the second file before restarting again. i don't like restarting a half-configured daemon. Yeah, that's right. I didn't run into this yet (or didn't realize ;) I _assume_ I would have added a cfggroup.desc/ tree with the correlated files in it and used fcopy -r ... desc-postinst construct like you. When it happened more often: groups/desc.{postinst,.d/,...} plus a little wrapper script, that loops, calls fcopy -r and the scripts. Achim kind regards janning -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: $FAI_REMOTESH and $LOGSERVER in FAI~beta
On Thursday 21 September 2006 15:20, Thomas Lange wrote: On Thu, 21 Sep 2006 15:04:40 +0200, Henning Sprang [EMAIL PROTECTED] said: LOGSERVER has been moved to CS. What does CS mean? Config space, so it's your /srv/fai/config tree. Not sure, try if it works to define that variable in the config file /etc/fai/fai.conf. If not it's probably worth a bugreport. I should be possible to define all variable in in fai.conf. But some people like to define it depending on a class. $SERVER is normally defined by a DHCP call. Have a look at boot.log. Reminds me about the problem of $SERVER not set during softinstall. My solution in bin/fai for 2.10.5 was (no 3.0 test here yet, sorry) @@ -59,7 +59,11 @@ get_fai_dir # check if monitor server is available +# Fallback for install: [ -z $monserver ] monserver=$SERVER +# Fallback for softupdate (as SERVER not defined) +[ -z $monserver ] monserver=${FAI_LOCATION%%:*} + faimond=1 sndhostname=$HOSTNAME # save current hostname if sndmon check; then Oh, bin/fai in 3.0 is quite different, but in case it's not already done, I would suggest define SERVER via ${FAI_LOCATION%%:*} unless it's already defined right at the beginning of bin/fai. Achim That's why Thomas is calling for beta tests since weeks! I think it's not yet too late to fix some things, but it might be a pointer for others to test FAI 3 and comment on the impact of all the changes - there should be some time, but not much, left to fix problems. Thanks. That's excatly my oppinion. -- regards Thomas -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: discover(2) and discover1 (kubuntu/dapper)
On Wednesday 06 September 2006 13:12, you wrote: On 9/5/06, Achim Bohnet [EMAIL PROTECTED] wrote: Just a little side note: (k)ubuntu/Dapper xserver-xorg pkg has a stupid Depends: ... discover1 ... So with fai + dapper one has to change discover back to discover1. Edgy will have a Recommends: ... discover1 | discover so no problem there. As Dapper is already in production, I guess there will be no sync of FAI to Dapper after this change, so I guess we are O.K. here. Yes. If not, the Ubuntu FAI maintainers/MOTU should be informed - we I'll ping siretart, but guess he's happy when I will take care of 2.10.5 and 3.0 kubuntu pkgs/backports ;) currently have no manpower in the FAI team to actively support Ubuntu as a platform for FAI servers, we just work on client installations with Ubuntu and other distributions. No problem. Achim Henning -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
Re: discover(2) and discover1 (kubuntu/dapper)
On Tuesday 05 September 2006 11:43, you wrote: Hi, for those who wondered why I posted this: Thomas asked me for this information, and based on this, he told he will switch FAI back to discover2. Hi, Just a little side note: (k)ubuntu/Dapper xserver-xorg pkg has a stupid Depends: ... discover1 ... So with fai + dapper one has to change discover back to discover1. Edgy will have a Recommends: ... discover1 | discover so no problem there. Achim regards, Holger -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED]
[patch] changelog cosmetics
Hi, use '#' in front of all debian bug number for consistency (and get selection-triggers-open-bug-report working ;) Achim -- To me vi is Zen. To use vi is to practice zen. Every command is a koan. Profound to the user, unintelligible to the uninitiated. You discover truth everytime you use it. -- [EMAIL PROTECTED] === debian/changelog == --- debian/changelog (revision 8655) +++ debian/changelog (local) @@ -13,7 +13,7 @@ with etch, existent .disable pxe file will be removed automatically, add headline when copying from template * subroutines-linux: task_updatebase does not use updatebase.log any -more (closes: 366823), try ftar $FAI/basefiles before extracting base.tgz +more (closes: #366823), try ftar $FAI/basefiles before extracting base.tgz * move /etc/fai/sources.list to /etc/fai/apt/sources.list * fix lintian error: build-depends-indep-should-be-build-depends debhelper * complies with policy 3.7.2 @@ -23,7 +23,7 @@ * conf/make-fai-nfsroot.conf: remove $nfssize variable, use discover1 * fai.conf: remove FAI_REMOTESH and FAI_REMOTECP, use FAI_LOGPROTO instead, LOGSERVER, LOGREMOTEDIR, LOGPASSWD removed -installserver removed (closes: 332837) +installserver removed (closes: #332837) * lib/subruotines-linux: replace $FAI_REMOTESH with local variable $remotesh * lib/subruotines: remove get_fai_cvs(), get_fai_dir(), now separate scripts * fai: replace $rclog with $LOGIDR/fai.log, add option -C,--class, @@ -32,18 +32,18 @@ change $HOME of LOGUSER (closes: #290449), do not use SERVERINTERFACE for getting hostname, add all IP addresses and host names to ssh_known_hosts, remove variable FAICLIENTS, use IP address and -netmask for exportfs line (closes: 381261) +netmask for exportfs line (closes: #381261) * make-fai-nfsroot: new subroutine all_host_entries(), install packages from $NFSROOT_PACKAGES at the same time as $packages * varaible $fstab replaced with fstab (no more Solaris support using vfstab) * savelog.LAST: set reboot=1 if no errors are found - * fcopy: fix bug (closes: 374415) + * fcopy: fix bug (closes: #374415) * control: update to Standards-Version: 3.7.2 * make-fai-bootfloppy: read make-fai-nfsroot.conf instead of fai.conf, replace backticks with $(), fix test (closes: #384624) * lib/get-boot-info: get network info via DHCP if ip=dhcp was set * prcopyleft: remove osname from copyright logo - * subroutines: add task dirinst (closes: 322634) + * subroutines: add task dirinst (closes: #322634) * move fai-divert to fai-client package * ftar: fix exit code when no matching class was found