MAL - Memória Auxiliar do Lutieri

quarta-feira, setembro 12, 2007

Reiniciar Linux com R-E-I-S-U-B

Tá aí uma dica interessante que eu sei que vou precisar e também sei que não vou conseguir acessar usando minha memória principal.

--------

You finally got your Linux environment to crash. Ctrl+Alt+Backspace does nothing, nor do the F-keys. You know you shouldn’t have installed that bad driver, but you did it anyway.

So you reach for the power button.

Stop.

Mashing in the power button to reboot could cause a problem if your hard drive is still being written to, and usually causes more problems than it solves. The Linux kernel includes a secret method of restarting your PC should it ever stop doing its job.

  1. Hold down the Alt and SysRq (Print Screen) keys.
  2. While holding those down, type the following in order. Nothing will appear to happen until the last letter is pressed: REISUB
  3. Watch your computer reboot magically.

What the individual keys do in that sequence are not as important as what it does as a whole: stops all programs, unmounts all drives, and reboots. A lot safer than just cutting the power.


Here it is again: REISUB. Remember that, as it will save you a lot of time when you are configuring a system and something gets messed up. Need a mnemonic? Try Raising Elephants Is So Utterly Boring.

As an aside, don’t try this if you just want to reboot. A normal reboot, if it can be done, should always be used instead of the REISUB keys.

--------


Check out Wikipedia for a full explanation:
http://en.wikipedia.org/wiki/Magic_SysRq_key


Dica retirada daqui: http://fosswire.com/2007/09/08/fix-a-frozen-system-with-the-magic-sysrq-keys/

Marcadores:

quinta-feira, setembro 06, 2007

Simples Benchmark para discos

Como instalei um sistema operacional em uma máquina nova gostaria de testar a velocidade de escrita no HD. Para fazer isso é simples:

Commands:
512k: time dd if=/dev/zero of=./8gbfile bs=512k count=16384
1024k: time dd if=/dev/zero of=./8gbfile bs=1024k count=8192
4096k: time dd if=/dev/zero of=./8gbfile bs=4096k count=2048
with “rm -rf 8gbfile && sync” run after every instance

O teste é feito criando um arquivo de 8 Gigabytes no disco. Para isso são utilizados blocos de 512k, 1024k e 4096k e medindo o tempo que esse processo demorou. Paralelo a isso pode-se utilizar comandos como:

  • gstat -I 500ms
  • systat -v 1
  • iostat -c 100

Que irão mostrar a velocidade de transferência.
Existem ainda outras ferramentas que se encontram em /usr/ports/benchmarks/.

Fonte: http://pcburn.com/article-Linux_SATA_vs_IDE_Performance-pg2.php

Marcadores: ,

Compile kernel in FreeBSD

# cat /usr/local/etc/src-supfile
----INICIO----
*default host=cvsup16.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_6
*default delete use-rel-suffix

*default compress

src-sys
src-sys-crypto
---- FIM ----



# cat /usr/src/sys/amd64/conf/LGB
---- INICIO ----
#
# GENERIC -- Generic kernel configuration file for FreeBSD/amd64
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.439.2.18 2007/03/27 02:33:00 yongari Exp $

machine amd64
cpu HAMMER
ident LGB

# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.

#makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols

options SCHED_4BSD # 4BSD scheduler
options PREEMPTION # Enable kernel thread preemption
options INET # InterNETworking
###options INET6 # IPv6 communications protocols
options FFS # Berkeley Fast Filesystem
options SOFTUPDATES # Enable FFS soft updates support
options UFS_ACL # Support for access control lists
options UFS_DIRHASH # Improve performance on big directories
options MD_ROOT # MD is a potential root device
options NFSCLIENT # Network Filesystem Client
options NFSSERVER # Network Filesystem Server
options NFS_ROOT # NFS usable as /, requires NFSCLIENT
###options NTFS # NT File System
###options MSDOSFS # MSDOS Filesystem
options CD9660 # ISO 9660 Filesystem
options PROCFS # Process filesystem (requires PSEUDOFS)
options PSEUDOFS # Pseudo-filesystem framework
options GEOM_GPT # GUID Partition Tables.
options COMPAT_43 # Needed by COMPAT_LINUX32
options COMPAT_IA32 # Compatible with i386 binaries
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
options COMPAT_LINUX32 # Compatible with i386 linux binaries
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
options KTRACE # ktrace(1) support
options SYSVSHM # SYSV-style shared memory
options SYSVMSG # SYSV-style message queues
options SYSVSEM # SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options ADAPTIVE_GIANT # Giant mutex is adaptive.

# Workarounds for some known-to-be-broken chipsets (nVidia nForce3-Pro150)
device atpic # 8259A compatability

# Linux 32-bit ABI support
options LINPROCFS # Cannot be a module yet.

# Bus support.
device acpi
device pci

# Floppy drives
###device fdc

# ATA and ATAPI devices
device ata
device atadisk # ATA disk drives
device ataraid # ATA RAID drives
device atapicd # ATAPI CDROM drives
device atapifd # ATAPI floppy drives
device atapist # ATAPI tape drives
options ATA_STATIC_ID # Static device numbering

# SCSI Controllers
device ahc # AHA2940 and onboard AIC7xxx devices
options AHC_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~128k to driver.
device ahd # AHA39320/29320 and onboard AIC79xx devices
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
device amd # AMD 53C974 (Tekram DC-390(T))
device isp # Qlogic family
#device ispfw # Firmware for QLogic HBAs- normally a module
device mpt # LSI-Logic MPT-Fusion
#device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets + those of `ncr')
device trm # Tekram DC395U/UW/F DC315U adapters

device adv # Advansys SCSI adapters
device adw # Advansys wide SCSI adapters
device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
device bt # Buslogic/Mylex MultiMaster SCSI adapters


# SCSI peripherals
device scbus # SCSI bus (required for SCSI)
device ch # SCSI media changers
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI access)
device ses # SCSI Environmental Services (and SAF-TE)

# RAID controllers interfaced to the SCSI subsystem
device amr # AMI MegaRAID
device arcmsr # Areca SATA II RAID
device ciss # Compaq Smart RAID 5*
device dpt # DPT Smartcache III, IV - See NOTES for options
device hptmv # Highpoint RocketRAID 182x
device rr232x # Highpoint RocketRAID 232x
device iir # Intel Integrated RAID
device ips # IBM (Adaptec) ServeRAID
device mly # Mylex AcceleRAID/eXtremeRAID
device twa # 3ware 9000 series PATA/SATA RAID

# RAID controllers
device aac # Adaptec FSA RAID
device aacp # SCSI passthrough for aac (requires CAM)
device ida # Compaq Smart RAID
device mfi # LSI MegaRAID SAS
device mlx # Mylex DAC960 family
#XXX pointer/int warnings
#device pst # Promise Supertrak SX6000
device twe # 3ware ATA RAID

# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc # AT keyboard controller
device atkbd # AT keyboard
device psm # PS/2 mouse

device kbdmux # keyboard multiplexer

device vga # VGA video card driver

device splash # Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device sc

device agp # support several AGP chipsets

# PCCARD (PCMCIA) support
# PCMCIA and cardbus bridge support
###device cbb # cardbus (yenta) bridge
###device pccard # PC Card (16-bit) bus
###device cardbus # CardBus (32-bit) bus

# Serial (COM) ports
device sio # 8250, 16[45]50 based serial ports

# Parallel port
###device ppc
###device ppbus # Parallel port bus (required)
###device lpt # Printer
###device plip # TCP/IP over parallel
###device ppi # Parallel port interface device
#device vpo # Requires scbus and da

# If you've got a "dumb" serial or parallel PCI card that is
# supported by the puc(4) glue driver, uncomment the following
# line to enable it (connects to the sio and/or ppc drivers):
#device puc

# PCI Ethernet NICs.
###device de # DEC/Intel DC21x4x (``Tulip'')
device em # Intel PRO/1000 adapter Gigabit Ethernet Card
###device ixgb # Intel PRO/10GbE Ethernet Card
###device le # AMD Am7900 LANCE and Am79C9xx PCnet
###device txp # 3Com 3cR990 (``Typhoon'')
###device vx # 3Com 3c590, 3c595 (``Vortex'')

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device miibus # MII bus support
###device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet
###device bfe # Broadcom BCM440x 10/100 Ethernet
###device bge # Broadcom BCM570xx Gigabit Ethernet
###device dc # DEC/Intel 21143 and various workalikes
###device fxp # Intel EtherExpress PRO/100B (82557, 82558)
###device lge # Level 1 LXT1001 gigabit Ethernet
###device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet
###device nge # NatSemi DP83820 gigabit Ethernet
###device nve # nVidia nForce MCP on-board Ethernet Networking
###device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le')
###device re # RealTek 8139C+/8169/8169S/8110S
###device rl # RealTek 8129/8139
###device sf # Adaptec AIC-6915 (``Starfire'')
###device sis # Silicon Integrated Systems SiS 900/SiS 7016
###device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet
###device ste # Sundance ST201 (D-Link DFE-550TX)
###device ti # Alteon Networks Tigon I/II gigabit Ethernet
###device tl # Texas Instruments ThunderLAN
###device tx # SMC EtherPower II (83c170 ``EPIC'')
###device vge # VIA VT612x gigabit Ethernet
###device vr # VIA Rhine, Rhine II
###device wb # Winbond W89C840F
###device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA Ethernet NICs. pccard NICs included.
device cs # Crystal Semiconductor CS89x0 NIC
# 'device ed' requires 'device miibus'
device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards
device ex # Intel EtherExpress Pro/10 and Pro/10+
device ep # Etherlink III based cards
device fe # Fujitsu MB8696x based cards
device sn # SMC's 9000 series of Ethernet chips
device xe # Xircom pccard Ethernet

# Wireless NIC cards
###device wlan # 802.11 support
###device wlan_wep # 802.11 WEP support
###device wlan_ccmp # 802.11 CCMP support
###device wlan_tkip # 802.11 TKIP support
###device an # Aironet 4500/4800 802.11 wireless NICs.
###device ath # Atheros pci/cardbus NIC's
###device ath_hal # Atheros HAL (Hardware Access Layer)
###device ath_rate_sample # SampleRate tx rate control for ath
###device awi # BayStack 660 and others
###device ral # Ralink Technology RT2500 wireless NICs.
###device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs.

# Pseudo devices.
device loop # Network loopback
device random # Entropy device
device ether # Ethernet support
device sl # Kernel SLIP
device ppp # Kernel PPP
device tun # Packet tunnel.
device pty # Pseudo-ttys (telnet etc)
device md # Memory "disks"
device gif # IPv6 and IPv4 tunneling
device faith # IPv6-to-IPv4 relaying (translation)

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device bpf # Berkeley packet filter

# USB support
device uhci # UHCI PCI->USB interface
device ohci # OHCI PCI->USB interface
device ehci # EHCI PCI->USB interface (USB 2.0)
device usb # USB Bus (required)
#device udbp # USB Double Bulk Pipe devices
device ugen # Generic
device uhid # "Human Interface Devices"
device ukbd # Keyboard
###device ulpt # Printer
###device umass # Disks/Mass storage - Requires scbus and da
device ums # Mouse
###device ural # Ralink Technology RT2500USB wireless NICs
###device urio # Diamond Rio 500 MP3 player
###device uscanner # Scanners
# USB Ethernet, requires miibus
###device aue # ADMtek USB Ethernet
###device axe # ASIX Electronics USB Ethernet
###device cdce # Generic USB over Ethernet
###device cue # CATC USB Ethernet
###device kue # Kawasaki LSI USB Ethernet
###device rue # RealTek RTL8150 USB Ethernet

# FireWire support
###device firewire # FireWire bus code
###device sbp # SCSI over FireWire (Requires scbus and da)
###device fwe # Ethernet over FireWire (non-standard!)


############################################
# Custom Settings
############################################

##
# Performance Tunneup
# Multi-Processo conf
##
options SMP # Symmetric MultiProcessor Kernel
options HZ=2000
options DEVICE_POLLING # Soft intrrupt's

##
# Change the default Scheduler
##
###options SCHED_ULE # ULE scheduler

##
# Squid Tunneup
# pagesize of FreeBSD 6.1 --> 4096
##
options VFS_AIO

##
# System V Resources
##
options SYSVSHM #SYSV-style shared memory
options SYSVMSG #SYSV-style message queues
options SYSVSEM #SYSV-style semaphores

#
options MAXDSIZ=(4096UL*1024*1024) # Conf para 4Gb
options MAXSSIZ=(256UL*1024*1024) # E aqui vai pra 128
options DFLDSIZ=(4096UL*1024*1024) # 4096 tb!

##
# Message Queues [Based on Squid FAQ]
##
option MSGMNB=262144 # Number of bytes in a queue
option MSGMNI=128 # Need to be at least 2 times the number of cache_dir entries in the squid
option MSGSSZ=256 # Size of the message segment in a queue
option MSGTQL=16384 # Number of max queue identifiers versus 128 messages per queue (is the high mark of performance of messages per queue)
option MSGSEG=2048 # Number of messages segments
#
##

##
# Shared Memory [Based on Squid FAQ]
##
options SHMMNI=256 # The half of the message queues at least [1 for each cache_dir]
options SHMALL=65536 #
options SHMMAX=(128UL*1024*1024) #
options SHMSEG=128


##
# Firewall PF
##
device pf
device pflog
device pfsync


##
# ALTQ
##
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
---- FIM -----

# pciconf -lv
---- INICIO -----
pcib1@pci0:1:0: class=0x060400 card=0x00000000 chip=0x74501022 rev=0x13 hdr=0x01
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X Bridge'
class = bridge
subclass = PCI-PCI
ioapic0@pci0:1:1: class=0x080010 card=0x74511022 chip=0x74511022 rev=0x01 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X IOAPIC'
class = base peripheral
subclass = interrupt controller
pcib2@pci0:2:0: class=0x060400 card=0x00000000 chip=0x74501022 rev=0x13 hdr=0x01
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X Bridge'
class = bridge
subclass = PCI-PCI
ioapic1@pci0:2:1: class=0x080010 card=0x74511022 chip=0x74511022 rev=0x01 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X IOAPIC'
class = base peripheral
subclass = interrupt controller
pcib3@pci0:6:0: class=0x060400 card=0x00000000 chip=0x74601022 rev=0x07 hdr=0x01
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 PCI Bridge'
class = bridge
subclass = PCI-PCI
isab0@pci0:7:0: class=0x060100 card=0x74681022 chip=0x74681022 rev=0x05 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 LPC Bridge'
class = bridge
subclass = PCI-ISA
atapci0@pci0:7:1: class=0x01018a card=0x74691022 chip=0x74691022 rev=0x03 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 UltraATA/133 Controller'
class = mass storage
subclass = ATA
none0@pci0:7:2: class=0x0c0500 card=0x746a1022 chip=0x746a1022 rev=0x02 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 SMBus 2.0 Controller'
class = serial bus
subclass = SMBus
none1@pci0:7:3: class=0x068000 card=0x746b1022 chip=0x746b1022 rev=0x05 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 ACPI System Management Controller'
class = bridge
hostb0@pci0:24:0: class=0x060000 card=0x00000000 chip=0x11001022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron HyperTransport Technology Configuration'
class = bridge
subclass = HOST-PCI
hostb1@pci0:24:1: class=0x060000 card=0x00000000 chip=0x11011022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron Address Map'
class = bridge
subclass = HOST-PCI
hostb2@pci0:24:2: class=0x060000 card=0x00000000 chip=0x11021022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron DRAM Controller'
class = bridge
subclass = HOST-PCI
hostb3@pci0:24:3: class=0x060000 card=0x00000000 chip=0x11031022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron Miscellaneous Control'
class = bridge
subclass = HOST-PCI
hostb4@pci0:25:0: class=0x060000 card=0x00000000 chip=0x11001022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron HyperTransport Technology Configuration'
class = bridge
subclass = HOST-PCI
hostb5@pci0:25:1: class=0x060000 card=0x00000000 chip=0x11011022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron Address Map'
class = bridge
subclass = HOST-PCI
hostb6@pci0:25:2: class=0x060000 card=0x00000000 chip=0x11021022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron DRAM Controller'
class = bridge
subclass = HOST-PCI
hostb7@pci0:25:3: class=0x060000 card=0x00000000 chip=0x11031022 rev=0x00 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'Athlon 64 / Opteron Miscellaneous Control'
class = bridge
subclass = HOST-PCI
em0@pci1:1:0: class=0x020000 card=0x10118086 chip=0x10108086 rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82546EB Dual Port Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
em1@pci1:1:1: class=0x020000 card=0x10118086 chip=0x10108086 rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82546EB Dual Port Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
em2@pci1:2:0: class=0x020000 card=0x10118086 chip=0x10108086 rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82546EB Dual Port Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
em3@pci1:2:1: class=0x020000 card=0x10118086 chip=0x10108086 rev=0x03 hdr=0x00
vendor = 'Intel Corporation'
device = '82546EB Dual Port Gigabit Ethernet Controller (Copper)'
class = network
subclass = ethernet
mpt0@pci2:3:0: class=0x010000 card=0x30601000 chip=0x00501000 rev=0x02 hdr=0x00
vendor = 'LSI Logic (Was: Symbios Logic, NCR)'
class = mass storage
subclass = SCSI
ohci0@pci3:0:0: class=0x0c0310 card=0x74641022 chip=0x74641022 rev=0x0b hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 USB OpenHCI Host Controller'
class = serial bus
subclass = USB
ohci1@pci3:0:1: class=0x0c0310 card=0x74641022 chip=0x74641022 rev=0x0b hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8111 USB OpenHCI Host Controller'
class = serial bus
subclass = USB
none2@pci3:3:0: class=0x030000 card=0x4732108e chip=0x47521002 rev=0x27 hdr=0x00
vendor = 'ATI Technologies Inc'
device = 'Rage XL PCI'
class = display
subclass = VGA
pcib5@pci4:1:0: class=0x060400 card=0x00000000 chip=0x74501022 rev=0x13 hdr=0x01
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X Bridge'
class = bridge
subclass = PCI-PCI
ioapic2@pci4:1:1: class=0x080010 card=0x74511022 chip=0x74511022 rev=0x01 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X IOAPIC'
class = base peripheral
subclass = interrupt controller
pcib6@pci4:2:0: class=0x060400 card=0x00000000 chip=0x74501022 rev=0x13 hdr=0x01
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X Bridge'
class = bridge
subclass = PCI-PCI
ioapic3@pci4:2:1: class=0x080010 card=0x74511022 chip=0x74511022 rev=0x01 hdr=0x00
vendor = 'Advanced Micro Devices (AMD)'
device = 'AMD-8131 PCI-X IOAPIC'
class = base peripheral
subclass = interrupt controller
---- FIM ----


Essa configuração roda em um servidor Sun Fire X4100.



Passos para compilar o kernel:

Para baixar a última versão stable do kernel:

csup -L 2 -g /usr/local/etc/src-supfile

Os passos que eu segui para compilar o kernel são descritos aqui:
http://www.bsdguides.org/guides/freebsd/kernel/custom_kernel.php

Quando fui executar o make depend me deparei com o seguinte erro:

make: don't know how to make /usr/src/sys/crypto/rijndael/rijndael-alg-fst.c. Stop
*** Error code 2

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

A solução encontrei aqui. Que foi simplesmente adicionar src-sys-crypto ao src-supfile. E executar o csup de novo.

Link que ajuda na hora de escolher as opções.
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html

Marcadores: ,

quarta-feira, setembro 05, 2007

POG no Mysar

Já escrevi um artigo anteriormente falando do mysar.

Implementei o squid com autenticação NTLM. Sendo assim quando o browser envia uma requisição para o squid ele nega e aí o browser envia novamente a requisição acompanhada da autenticação. O problema é que esse primeiro registro, que é a requisição de um objeto sem a autenticação também é logado. Quando eu vou ver os relatórios tem um monte de acessos com username igual a hífen. E isso é um saco. Sendo assim tomei liberdade de modificar o código fonte do mysar-importer.php.

Esse é o script que faz a importação dos dados do arquivo access.log para o banco de dados MySql. Lá pela linha 170 do arquivo bin/mysql-importer.php, estou usando a versão 2.1.4, inseri mais uma simples condição que resolve o meu problema:

if($dbRecord['authuser']=='-') {
updateConfig('lastLogOffset',ftell($handle));
continue;
}


That's all folks!

Marcadores:

SQUID: Software caused connection abort

httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort
httpAccept: FD 47: accept failure: (53) Software caused connection abort

É assim que anda o cache.log do meu squid.

Procurei tanto as respostas pra isso e só via uma palavra que hoje ecoa dentro da minha cabeça:

harmless

Eu vou estar com 70 anos e não vou esquecer o significado: "que não causa danos".

Não causa danos... aham.. isso quando for lá de vez em quando que essa mensagem for vista. No meu caso essa desgraça aparece umas 40 vezes por minuto. Procurando mais próximo a fonte, leia-se squid-user mailing list, encontrei um dos desenvolvedores falando a mesmíssima coisa:
This is a harmless message.

Tá! o fato é que ela tava me causando danos sim. Estava criando arquivos de log com tamanhos desnecessários. Portanto resolvi apelar. Descobri que uma boa forma de ter um sistema rodando sem erros é indo lá e comentando a linha de código onde diz algo como: printf... echo... debug....

Pronto!!! Os erros não aparecem mais nos logs :-) Isso que é a real POG.

Bom... mas claro que eu como um administrador não posso simplesmente ocultar o erro. Mas Henrik Nordstrom pode. Ele é o cara que recomendou fazer essa gambiarra. E ele não é nada mais nada menos que o cara que desenvolve o squid. Portanto se ele diz que pode eu acredito.

Vamos ao workaround, a.k.a, POG:


No código fonte do squid temos o seguinte arquivo: src/client_side.c
No meu caso, estou rodando a versão 2.6stable14. Sendo assim, encontro dentro desse arquivo, mais precisamente na linha 4513, o seguinte comando:

debug(50, 1) ("httpAccept: FD %d: accept failure: %s\n",


HA HA! tá aqui a fonte da minha cefaléia.

Henrik recomenda aumentar o nível do log que é o segundo parâmetro do comando debug. Está atualmente setado para 1, como se pode ver. 0 é crítico, 1 é nível importante e acima de 2 é para debug.

Sendo assim nossa linha 4513 fica assim:

debug(50, 2) ("httpAccept: FD %d: accept failure: %s\n",

Henrik disse isso aqui.

Para efetuar esse procedimento no FreeBSD através do ports deve-se proceder da seguinte maneira:

cd /usr/ports/www/squid
make fetch
make config
make patch
vi work/squid-2.6STABLE14/src/client_side.c
:4513


Coloca o cursor sobre o número 1 e pressione CTRL+a. Isso incrementa o número. E só por curiosidade CTRL+x decrementa.

:x
make install clean

E todos viveram felizes para sempre.

Marcadores: ,

Backup de pacotes instalados no FreeBSD

Como já visto tive um briga das feias com o squid+freebsd+ntlm. Pois bem, está funcionando perfeitamente hoje, ou melhor, quase perfeitamente. Tem uma mensagem que aparece nos logs que está só ocupando espaço. Falo dessa mensagem no próximo post.

Por hora gostaria de remover essa mensagem mas para isso tenho que recompilar o squid. Tenho o squid rodando e tenho que recompilar. Mas confesso: Estou receoso quanto a este processo. Na verdade é um trauma do passado(semana passada). Pensa comigo: passei uma semana brigando com o squid. Isso deve dar por cima umas 50 horas. Pedi ajuda em 3 lista diferentes, os resultados do google não ajudaram muito.. Bom depois disso tudo eu quero mais é mudar a senha do root desse servidor e nunca mais nem se quer acessá-lo.

Mas esse procedimento de recompilá-lo vai ser necessário. Ou isso ou aguento os logs com infinitas mensagens :

httpAccept: FD 47: accept failure: (53) Software caused connection abort

Só pra me certificar vou fazer um backup do squid atualmente instalado e aí sim, qualquer problema tenho uma cópia de segurança ;-D

Procurando aqui e acolá descobri que é possível fazer um pacote a partir de um ports instalado no FreeBSD. Sendo essa a minha solução escolhida.

Antes de tudo e mais nada é necessário saber qual o nome do ports instalado atualmente no sistema para aí sim proceder com o backup.

ls /var/db/pkg | grep squid

ou

pkg_info | grep squid

Ambos fazem a mesma coisa.

No meu caso os comandos acima retornaram o seguinte:

squid-2.6.14

Pronto. É essa a informação que precisamos. Agora vamos criar o nosso pacote de backup com o seguinte comando:

pkg_create -b squid-2.6.14

ou
pkg_create -xb squid


O -x considera 'squid' como uma expressão regular.

No diretório onde você se encontra será criado um arquivo tipo isso:

squid-2.6.14 .tbz

tbz é uma abreviação pra tar.bz2.

Esse é o nosso pacote contendo o squid atualmente rodando no sistema. :-D

Agora sim... pode-se trabalhar com esse arquivo como se fosse um pacote qualquer.

Pode-se usar o comando pkg_add, portupgrade -P.

No caso do portupgrade -P é necessário que o arquivo se encontre no diretório /usr/ports/packges/All


Essa mesma dica pode ser usada no caso de você precisar atualizar o mesmo software em várias máquinas rodando a mesma versão de FreeBSD. Você pode, por exemplo, compilar e aplicar patches instalar, montar um pacote e copiar esse pacote para as outras máquinas. Assim nessas outras máquinas não será necessário compilar, aplicar patches enfim... Será apenas necessário fazer uma atualização de pacote. O que poupa tempo e recursos.

Dica retirada daqui

Adios, arrivederte, sayonara, goodbye, hasta la vista, au revoir, tchau.

Marcadores:

terça-feira, setembro 04, 2007

Seções squid para fazer debug

#cat debug-sections.txt

section 0 Announcement Server
section 0 CGI Cache Manager
section 0 Client Database
section 0 Debug Routines
section 0 DNS Resolver
section 0 WWW Client
section 1 Startup and Main Loop
section 2 Unlink Daemon
section 3 Configuration File Parsing
section 4 Error Generation
section 5 Socket Functions
section 6 Disk I/O Routines
section 7 Multicast
section 8 Swap File Bitmap
section 9 File Transfer Protocol (FTP)
section 10 Gopher
section 11 Hypertext Transfer Protocol (HTTP)
section 12 Internet Cache Protocol
section 13 High Level Memory Pool Management
section 14 IP Cache
section 15 Neighbor Routines
section 16 Cache Manager Objects
section 17 Request Forwarding
section 18 Cache Manager Statistics
section 19 Store Memory Primitives
section 20 Storage Manager
section 21 Misc Functions
section 22 Refresh Calculation
section 23 URL Parsing
section 24 WAIS Relay
section 25 MIME Parsing
section 26 Secure Sockets Layer Proxy
section 27 Cache Announcer
section 28 Access Control
section 29 Authenticator
section 30 Ident (RFC 931)
section 31 Hypertext Caching Protocol
section 32 Asynchronous Disk I/O
section 33 Client-side Routines
section 34 Dnsserver interface
section 35 FQDN Cache
section 36 Cache Directory Cleanup
section 37 ICMP Routines
section 38 Network Measurement Database
section 39 Cache Array Routing Protocol
section 40 User-Agent and Referer logging
section 41 Event Processing
section 42 ICMP Pinger program
section 43 AIOPS
section 44 Peer Selection Algorithm
section 45 Callback Data Registry
section 46 Access Log
section 47 Store Directory Routines
section 48 Persistent Connections
section 49 SNMP
section 50 Log file handling
section 51 Filedescriptor Functions
section 52 URN Parsing
section 53 AS Number handling
section 54 Interprocess Communication
section 55 HTTP Header
section 56 HTTP Message Body
section 57 HTTP Status-line
section 58 HTTP Reply (Response)
section 59 auto-growing Memory Buffer with printf
section 60 Packer: A uniform interface to store-like modules
section 61 Redirector
section 62 Generic Histogram
section 63 Low Level Memory Pool Management
section 64 HTTP Range Header
section 65 HTTP Cache Control Header
section 66 HTTP Header Tools
section 67 String
section 68 HTTP Content-Range Header
section 69 HTTP Header: Extension Field
section 70 Cache Digest
section 71 Store Digest Manager
section 72 Peer Digest Routines
section 73 HTTP Request
section 74 HTTP Message
section 75 WHOIS protocol
section 76 Internal Squid Object handling
section 77 Delay Pools
section 78 DNS lookups
section 79 Lowlevel store I/O
section 80 WCCP
section 81 Cache Store
section 82 External ACL
section 83 SSL accelerator support
section 84 Helper process maintenance

Exemplo:
debug_options ALL, 1 28,3

Marcadores:

segunda-feira, setembro 03, 2007

Lentidão no SQUID em FreeBSD

Pra quem quer acompanhar o sofrimento de um pobre admin unix acesse:

http://www.fug.com.br/historico/html/freebsd/2007-08/threads.html#00809

Acho que foi uma das threads mais longas da lista. Mas juro. Eu não queria.

Fui inventar de migrar o firewall e proxy que estão(avam) rodando com Debian para FreeBSD. Que vamos combinar: é muito melhor e mais fácil de usar. Isso mesmo. Eu sempre ouvi que o FreeBSD é casca grossa. Que tudo era difícil. Que difícil o que.. Em menos de um mês, bem folgado, fazendo outras coisas ao mesmo tempo, migrei o meu firewall de iptables para PF, migrei o serviço de DNS, HTTP, NTP, Nagios e migrei também o Squid. E é aí que começa meu problema.

Ouvi dizer por aí, que o squid tem problemas de I/O pra rodar no FreeBSD. Bom.. meu problema foi que quando fiz a migração dos clientes para esse proxy novo, no FreeBSD, após ter uns 45/50 usuários fazendo uso do mesmo, isso significa 10 minutos depois de mudar o IP do registro PROXY no servidor DSN, O acesso a internet ficava lentíssimo e cada vez piorava mais.

Aprendi que quando se instala um sistema operacional novo, antes de mais nada deve-se testar o hardware pra ter certeza de que tudo está em perfeita ordem. Do contrário, vai acontecer que você vai descobrir um problema como lentidão no squid e pode ser disco, memória, kernel, placa de rede, enfim... temos várias opções.

Então o melhor é testar todo o hardware antes de começar acusar um pobre software.

Faça algumas coisas como:
  • Teste a memória RAM;
  • Use ferramentas de benchmark;
  • Teste escrita/leitura de discos;
  • Teste a controladora SCSI;
  • Teste as placas de rede;
  • Obtenha velocidades máximas dos itens citados acima;
  • Instale ferramentas como o munin para acompanhar o status do servidor.

Eu descobri que isso deve ser feito de uma maneira não muito agradável. Comecei threads acusando o squid de lentidão quando lá pelas tantas descobri que podiam ser meus discos. Sorte que não foi.. senão eu ia passar vergonha...

Cheguei a entrar na lista de discussão freebsd-scsi para questionar sobre a velocidade da minha controladora. Sendo que eu achava que era baixa demais e me mostraram que era decente a velocidade que eu estava obtendo.

Portanto antes de sair por aí botando a culpa em alguma coisa, seja software, hardware, firmware tenha certeza disso. As pessoas vão se basear no que você fala para poder te ajudar.

Voltando ao problema:

A migração do squid, rodando em linux, para o novo, rodando em FreeBSD, era feita apenas mudando o IP de um registro DNS. Baixava o TTL do regsitro para 1 minuto e alterava-o para apontar para o servidor novo. No momento que batia a lentidão eu trocava o IP, de novo, para apontar para o servidor velho(linux).

Esse registro está configurado em todos os navegadores da empresa através de um GPO do windows.

É uma forma de fazer migração que eu considero bastante vantajosa. Uma vez que, se não funcionar de primeira é muito simples voltar para a situação anterior.

Acredite: troquei várias vezes esse IP. hehe

Iniciei meus testes recompilando o kernel. Fiz um artigo contendo os arquivos necessários e que devem ser modificados e os passos para compilar o kernel. Link aqui.

Bom alterei o cache do squid para diskd entre outras mudancas no squid.conf que coloco no final do artigo.

Bom as mudancas que fiz foram tantas e de uma vez soh que nao consegui saber exatamente o que solucionou o problema. Mas vamos analizando:

As alterações foram as seguintes:

  • Compilei o squid2.6stable14 com o gcc42
  • Utilizei os seguintes parâmetros para a compilação: make -DNO_KERBEROS SQUID_CONFIGURE_ARGS="--enable-dlmalloc --enable-async-io --with-pthreads --with-aio --enable-ntlm-fail-open" SQUID_LANGUAGES="English Portuguese" install
  • Atualizei o samba da versão que estava na versão 3.0.23 para a mais recente no ports a 3.0.25a. Com isso foi atualizado o /usr/local/bin/ntlm_auth também.

Apesar de ter feito todas as alterações, acima citadas, de uma só vez, acredito que a solução se deu por causa dos parâmetros passados ao squid.

Já havia compilado sem esses parâmetros com o gcc 4.2 e o problema persistia.
Já havia compilado com a opção --enable-async-io e também não havia resolvido.

Acredito ter sido por causa dos parâmetros restates: --enable-dlmalloc --with-pthreads --with-aio --enable-ntlm-fail-open

Na lista squid-users me indicaram setar a opção half_closed_clients para off. Também com ela sozinha não havia solucionado a lentidão.

Ou ainda a solução se deu por atualizar o samba. Uma vez que eu uso autenticação NTLM contra um AD W2k3.

Por fim, quando eu não usava autenticação o proxy funcionava extremamente bem, porém se eu ativasse apenas uma ACL se quer, que envolvesse autenticação, a lentidão dava sua cara.

Infelizmente testar opção por opção para descobrir qual foi a que solucionou o problema se torna inviável. Levando em consideração que esse proxy já deveria estar em produção há mais tempo não posso testar agora.

Lembre-se: São nessas horas de dificuldades que devemos honrar o saco no meio das pernas. Não desista, por mais difícil que esteja sendo. É apenas uma monte de linhas de código. Apenas instruções lógicas empilhadas. Tem que funcionar e ponto.

E vencendo as dificuldades você se sente melhor e se o seu chefe acompanhou seu sofrimento e viu que você venceu e dá crédito a você. E isso é bom... hehe






squid.conf:

grep -v "^#" /usr/local/etc/squid/squid.conf | grep -v "^\ " | grep -v ^$
http_port 1xxx.xxx.xxx.xxx:3128
http_port 127.0.0.1:3128
icp_port 0
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 600 MB
maximum_object_size 64 MB
minimum_object_size 0 KB
maximum_object_size_in_memory 2560 Kb
cache_replacement_policy heap LFUDA
memory_replacement_policy heap GDSF
cache_dir diskd /cache/1 4520 16 256 Q1=128 Q2=100
cache_dir diskd /cache/2 4520 16 256 Q1=128 Q2=100
access_log /usr/local/squid/logs/access.log squid
auth_param ntlm program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp -d 2
auth_param ntlm children 60
auth_param ntlm keep_alive on
auth_param basic program /usr/local/bin/ntlm_auth --helper-protocol=squid-2.5-basic
auth_param basic children 10
auth_param basic realm Proxy server
auth_param basic credentialsttl 2 hours
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 900 # Sinercom
acl CONNECT method CONNECT
acl password proxy_auth REQUIRED
acl redelocal src 192.168.0.0/16
acl redelocal src 172.16.0.0/16
acl sitesemcache url_regex -i "/usr/local/etc/squid/semcache.txt"
always_direct allow sitesemcache redelocal
no_cache deny sitesemcache
acl paginapare dstdomain squidweb.xyz.gov.br
acl usuarioslib proxy_auth -i "/usr/local/etc/squid/usuarioslib.txt"
acl usuariosrestritos proxy_auth -i "/usr/local/etc/squid/usuariosrestritos.txt"
acl usuarios_chineses proxy_auth -i "/usr/local/etc/squid/chineses_msn.txt"
acl msn_chineses url_regex -i gateway.messenger.
acl msn_chineses url_regex -i login.live.com
acl msn_chineses url_regex -i gateway.dll
acl msn_chineses url_regex -i msn.com
acl bloqueados url_regex -i "/usr/local/etc/squid/bloqueados.txt"
acl liberados url_regex -i "/usr/local/etc/squid/liberados.txt"
acl servidores src "/usr/local/etc/squid/servidores.txt"
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
deny_info http://malware.hiperlinks.com.br/denied.shtml malwares
http_access allow servidores
http_access allow liberados password
http_access allow usuarioslib
http_access deny usuariosrestritos
http_access deny bloqueados all
deny_info http://squidweb.xyz.gov.br bloqueados
http_access allow localhost
http_access allow redelocal password
http_access deny all
http_reply_access allow all
icp_access allow all
visible_hostname proxy
logfile_rotate 5
forwarded_for off
header_access From deny all
header_access Server deny all
header_access Link deny all
error_directory /usr/local/etc/squid/errors/Portuguese
coredump_dir /usr/local/squid/cache

Marcadores: ,

Listar arquivos dos pacotes no FreeBSD

Dica simples. Mas como eu sei que vão se passar alguns dias e o Hunz(senhor de idade que vive na minha memória arquivando e acessando, de vez em quando, minhas informações) não vai saber onde ele colocou essa dica eu já estou me precavendo e colocando ela aqui:

$ pkg_info -xL unzip

Information for unzip-5.52_2:

Files:
/usr/local/man/man1/funzip.1.gz
/usr/local/man/man1/unzip.1.gz
/usr/local/man/man1/unzipsfx.1.gz
/usr/local/man/man1/zipgrep.1.gz
/usr/local/man/man1/zipinfo.1.gz
/usr/local/bin/unzip
/usr/local/bin/funzip
/usr/local/bin/unzipsfx
/usr/local/bin/zipgrep
/usr/local/bin/zipinfo
/usr/local/share/doc/unzip/README
/usr/local/share/doc/unzip/WHERE

Dica retirada daqui.



Busca um determinado pacote instalado:
pkg_info | grep -i cacti

Exibe a mensagem pós instalação desse pacote:
pkg_info -D cacti-0.8.7b

ou

pkg_info -xD cacti

O -x trata o parâmetro como uma expressão regular ao invés do nome do pacote exato.

Marcadores:



Chat with Lutieri G. B.

Subscribe in a reader