HOWTO-rozpracováno a hlavně dezorganizováno !!!
V tomto HOWTO se budu snažit zdokumentovat postupy, které jsem zvolil při řešení problémů, konfigurací a situací během práce na operačních systémech GNU/Linux. Nejedná se o přesné popisy či oficiální návody ale spíše o "laboratorní protokoly" se záznamy mých experimentů. Takže to rači doma nezkoušejte :-).
Takto vypadá řádek z /etc/fstab
sloužíci k připojení disku "Z":
#.... HTTP()
//mandarinka/home/bernauem /home/milan/mnt/z cifs users,noauto,uid=milan,gid=milan,file_mode=0644,dir_mode=0755,username=bernauem,rw 0 0
A takto lze připojit síťový disk "pyr"
#.... PYR
//pyr/scratch /home/milan/mnt/p cifs users,noauto,uid=milan,gid=milan,file_mode=0644,dir_mode=0755,username=bernauem,rw 0 0
Do souboru /etc/fstab
se zapisují diskové
svazky-oddíly a jiná zařízení, po kterých bude chtěno aby se
přimontovala (připojila) do námi zvoleného adresáře. Nacházejí se
zde samozrejmě řádky, které patří standartním oddílům jako je
např. / - kořenový, /home - domovský, swap atd... To jsou oddíly
které se většinou mountují automaticky při startu systému
(viz Start systému GNU/Linux). No a pak
jsou tu "exoti", které si tam sami naťukáme. Zápis do /etc/fstab
podléhá těmto pravidlům:
- Co řádek to jeden svazek
- V každém řádku je 6 sloupců oddělených mezerami popisující způsob připojení svazku a svazek samotný
- Pořadí techto šesti položek je pevně dano:
- Svazek, zařízení, které se bude připojovat
- Přípojný bod. Jinýmy slovy sem našroubujeme zařízení z bodu 1. Tento bod-adresář musí již v systému existovat
- Typ připojovaného souborového systému
- Parametry, které charakterizují připojení
- Zde určíme jestli se bude svazek zálohovat
- A tady se nastavuje na jaké pozici bude svazek při kontrole během startu systému
vysvětlení jednotlivých položek z výše uvedeného příkladu ...
Nejlepší je začít
man xargs
Ten obsahuje, jako obvykle, spoustu
informací a asi nejlepší je přeskočit úvod a vrhnout se na
sekci EXAMPLES . Tak hned první příklad
find /tmp -name core -type f -print | xargs /bin/rm -f
je hodně názorný. Lidsky řečeno: najdi všechny
soubory core v adresáři /tmp a odstraň je. A jaká je role
xargs v tomhle všem? Proste vezme řetezec se standartního vstupu
(v tomto případě roury "|") a sestaví nám příkaz rm
-f
. Asi by to šlo řešit i následovně
rm -f $(find /tmp -name core -type f -print).
Problém nastane když by bylo hafo souborů core tak by
expanze v shellu provedená pomocí $(...)
byla pomalá
až nemožná. Na dalších příkladech se tvrdě maká ...
O
zavedení celého systému se stará LILO nebo GRUB. V první fázi se
rozbalí a zavede námi zvolený obraz jádra. Potom se provede
detekce hardwaru. Jádro následně vytvoří první
proces, init, který se postará o start dalších
procesů. Konfigurace init je k nalezení
v /etc/inittab
V něm je definován např. implicitní
runlevel, počet konzolí...atd. Init potom spustí skript
(Mandrake, RedHat) /etc-rc.d/rc.sysinit
Debian /etc/init.d/rcS
který, zjednodušeně řečeno,
"namountuje" disky (oddíly), postará se o zavedení modulů
(ovladačů) atd. Po dokonční bootovacího procesu init
spustí startovací skripty, které jsou uloženy
v /etc/rcX.d
kde X odpovídá
defaultnímu runlevelu. X může nabývat hodnot 0-6. Tyto
hodnoty odpovídají různým runlevelům. V debianu je
defaultním runlevelem X=2. Takto vypadjí
jednotlivé runlevely v Debianu:
- 0 (Zastavení systému = shutdown)
- 1 (jednouživatelský režim = single user mode)
- 2-5 (víceuživatelské režimy)
- 6 (reboot)
Debian:
deborphan
resp. orphaner
Mandrake:
rpm -e `urpmi_rpm-find-leaves -g`
Nejdříve je
třeba zkompilovat program s podporou debugovaní. To samozřejmě
záleží na použitém kompilátoru. Používám Intelovský kompilátor
(verze 8.1). je třeba při kompilaci přidat tyto argumenty:
ifort -g -debug ...
V Makefile
to může vypadat následovně:
#-----------------------------------------------------------------
# CVS log
# $Id: Makefile,v 2.7 2006/05/25 16:53:09 milan Exp $
# ICT.
# $Log: Makefile,v $
# Revision 1.1.1.1 2006/04/27 12:48:19 milan
# Initial revision. CVS IMPORT
#
# $Revision: 1.0 $
#-----------------------------------------------------------------
#PATH_TO_COMPILER=/opt/intel_fc_80/bin/
COMPILER=ifort
FC=$(PATH_TO_COMPILER)$(COMPILER)
#source, object and include
SRC=mscr-1.f dbanpre.f dlinpk.f daux.f ddaspk.f rrate.f alfaeq.f nush.f
OBJ=mscr-1.o dbanpre.o dlinpk.o daux.o ddaspk.o rrate.o alfaeq.o nush.o
INCLUDE=basic_declar.inc
#other files to put in the archive
MISC=Makefile
#common name of archive output files
ARCHIVE_FILE=mscr_d1
# macros
FFLAGS=""
OPT=""
EXECS=mscr-1
DEXECS=mscrdbg-1
OPT=-O3 -zero
DOPT=-O0 -zero -g -debug variable_locations -inline_debug_info \
-fpstkchk
.DEFAULT: .f
.SUFFIXES: .f
#=================================================================
all:
@echo "Error - please specify a target!"
@echo "Permissible targets for this Makefile are:"
@echo " "
@echo "bin (normal)"
@echo "debug (debug)"
@echo "clean - remove alle object and temporary files"
@echo "tgz - make tgz archive of all source files"
@echo "zip - make zip archive of all source files"
# Build a speed-optimized (-O3) binary
bin:
$(MAKE) FFLAGS="-132 -O3 " $(OBJ) $(INCLUDE)
$(FC) $(OPT) -o $(EXECS) $(OBJ)
# Build a non-optimized binary with more debugging information
debug:
$(MAKE) FFLAGS="-132 -O0 -g -traceback" $(OBJ) $(INCLUDE)
$(FC) $(DOPT) -o $(DEXECS) $(OBJ)
# make ordnug:=)
clean:
rm -f $(OBJ) *~
# make archive of all source files and other stuff
tgz:
tar -zcvf $(ARCHIVE_FILE).tgz $(SRC) $(MISC)
zip:
zip $(ARCHIVE_FILE).zip $(SRC) $(MISC)
Potom už stačí spustit gdb
buď z příkazového řádku
a nebo z emacs (například F10, t, d). ...
DL_POLY example (Makefile):
#========== gfortran (MPI) ===========================================
gfortran: dpp
cp /usr/include/mpich2/mpif.h .
$(MAKE) LD="mpif90 -o" LDFLAGS="" TIMER="" \
FC=mpif90 \
FFLAGS="-c -O3 -ffast-math -funroll-all-loops -fpeel-loops -ftracer -funswitch-loops -funit-at-a-time \
-fopenmp -I/usr/lib64/mpi/gcc/openmpi/include -pthread -I/usr/lib64/mpi/gcc/openmpi/lib64 " \
CPFLAGS="-D$(STRESS) -DMPI -P -D'POINTER=integer' -DFLUORO -DFLUSH" \
EX=$(EX) BINROOT=$(BINROOT) $(TYPE)
Then run from shell:
[milan@ofey-bent0.0]$ mpirun.mpich2 -n 4 ../../src/dl_poly_2.13/execute/DLPOLY.X &
M.B 22 Jan 2013