Posts Tagged with system

posted by qubix on May 15, 2017

Ξαφνικά χωρίς λόγο και αιτία, το webmail δεν δείχνει κανένα email, τα emails κολλάνε στην ουρά και όταν κοιτάς το log βλέπεις ένα κάρο debug info σχεδόν ακατανόητο.

Φυσικά μιλάμε για τον dovecot server που αναλαμβάνει τις συνδέσεις pop/imap.
Το κλειδί εδώ είναι μέσα στο χάος του log να βρούμε το σημείο που αρχίζει το πρόβλημα. Αν λοιπόν δούμε τη γραμμή:

Panic: file mail-index-sync-keywords.c: assertion failed

τα πράγματα ξεκαθαρίζουν γρήγορα. Ο dovecot μας λέει πως δεν μπορεί να κάνει sync το index του mailbox.
Ο λόγος είναι πως το αρχείο dovecot.index είναι corrupted και η λύση απλή:
σβήνουμε το αρχείο dovecot.index και κάνουμε εκ νέου ένα login στο webmail για να ξαναδημιουργηθεί!

posted by qubix on March 26, 2016

Ως γνωστόν με διάφορες κάρτες wifi της intel όπως 4859, 5100, 5300 κλπ υπάρχει το θέμα πως ότι linux distro και να βάλεις απλά έχεις ταχύτητα χελώνας.

Ο λόγος είναι πως o iwlwifi driver έχει διάφορα θέματα (για παράδειγμα κακή υποστήριξη n πρωτοκόλλου) και ως εκ τούτου στο thinkpad laptop μου, σε σύγκριση με τα windows, η ταχύτητα είναι 5 φορές μικρότερη περίπου.

Μετά από ψάξιμο, βρήκα κάποια λύση:

sudo rmmod iwlwifi
sudo modprobe iwlwifi 11n_disable=1 bt_coex_active=0 power_save=0 auto_agg=0 swcrypto=1

Τι κάνουν αυτά ρωτάτε?

11n_disable=1 απενεργοποιεί το n support
bt_coex_active=0 απενεργοποιεί το bluetooth
power_save=0 η κάρτα δεν μπαίνει σε powersave mode όταν δε χρησιμοποιείται
auto_agg=0 disable Aggregate MAC Protocol Data Unit (AMPDU)
swcrypto=1 enable software encryption

Δεν είναι απαραίτητο πως χρειάζεστε όλες αυτές τις παραμέτρους, το πρόβλημα μπορεί να λύνεται και μόνο πχ με 11n_disable ή με auto_agg & swcrypto

Υπάρχουν και άλλες παράμετροι με τις οποίες μπορείτε να πειραματιστείτε, περισσότερα στο forums.debian.net/viewtopic.php?f=16&t=121696

Για να κάνετε μόνιμες τις όποιες αλλαγές θέλετε κατά την φόρτωση του driver στην εκκίνηση 1) φτιάχτε, αν δεν υπάρχει, το αρχείο
/etc/modprobe.d/iwlwifi.conf
Γράψτε σε αυτό κάτι σαν το παρακάτω (σύμφωνα με τις ανάγκες σας)
options iwlwifi 11n_disable=1

Στο επόμενο boot, θα ισχύουν οι ρυθμίσεις που θα βάλετε στο αρχείο αυτό

posted by qubix on December 29, 2015

Σε περίπτωση που χρειαστεί να φτιάξετε ένα iso από κάποιο dvd, στον κόσμο του linux είναι το πιο εύκολο πράγμα

cat /dev/sr0 > /path/to/myisofile.iso

ο λόγος που αυτό είναι δυνατό είναι επειδή το dvdrom σας στο linux είναι ένα block level device στο οποίο έχετε πρόσβαση από το ειδικό αρχείο /dev/sr0

brw-rw----+ 1 root cdrom 11, 0 Dec 29 12:39 /dev/sr0

Αν τώρα χρειαστεί να γράψετε αυτό το iso σε ένα usb disk/stick, και πάλι είναι μια γραμμή όλη κι όλη

dd bs=4 if=/path/to/myisofile.iso of=/dev/sdX

το bs είναι προαιρετικό αλλά καλό είναι να το βάλετε για να πάει λίγο πιο γρήγορα η αντιγραφή

/dev/sdX είναι το usb drive στο οποίο θέλετε να γράψετε το iso

για να βρείτε πιο είναι στο σύστημά σας, μπορείτε να γράψετε fdisk -l και να δείτε γενικά τους δίσκους -οπότε και να βρείτε ποιος είναι το usb drive-

τέλος, για να δείτε την πρόοδο μπορείτε να στείλετε ένα SIGINFO σήμα από ένα δεύτερο terminal

kill -USR1 $(pidof dd)

και στο terminal που τρέχει το dd θα δείτε στατιστικά όπως:

464300033+0 records in
464300033+0 records out
1857200132 bytes (1.9 GB) copied, 1438.94 s, 1.3 MB/s


posted by qubix on December 27, 2015

Πρόσφατα μου ανατέθηκε το task να μεγαλώσω ένα partition σε ένα vm. Μια χαρά λέω, πάμε. Τα είχα υπολογίσει όμως χωρίς τον ξενοδόχο..ο οποίος είχε κάνει την εγκατάσταση ΧΩΡΙΣ lvm οπότε το μόνο που έμενε ήταν το live resize...

Και πως γίνεται αυτό με ρωτάτε??

Ω ναι ... πρέπει να σβηστεί το partition και να ξαναγραφτεί..

αρχίζουμε κοιτάζοντας την υπάρχουσα κατάσταση:

# fdisk /dev/sda

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders, total 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d11b8

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   100663295    50330624   83  Linux
/dev/sda2       100665342   104855551     2095105    5  Extended
/dev/sda5       100665344   104855551     2095104   82  Linux swap / Solaris

Σβήνουμε τα partitions από το partition table
Command (m for help): d
Partition number (1-5): 1

Command (m for help): d
Partition number (1-5): 2

τσεκάρουμε και όντως έχουν σβηστεί
Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes
255 heads, 63 sectors/track, 15665 cylinders, total 251658240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000d11b8

Device Boot      Start         End      Blocks   Id  System

Φτιάχνουμε το νέο partition
Command (m for help): n
Partition type:
p   primary (0 primary, 0 extended, 4 free)
e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-251658239, default 2048): 2048
Last sector, +sectors or +size{K,M,G} (2048-251658239, default 251658239): 247468030

αν προσέξετε έχω αφήσει 251658239 - 247468030 = 4190209 sectors, το οποίο χοντρικά είναι 2G

Command (m for help): p
Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   247468030   123732991+  83  Linux

Πάμε τώρα να φτιάξουμε και το extended partition στο οποίο μέσα θα είναι και το ..swap (μη με ρωτάτε γιατί...)
Command (m for help): n
Partition type:
p   primary (1 primary, 0 extended, 3 free)
e   extended
Select (default p): e
Partition number (1-4, default 2): 2
First sector (247468031-251658239, default 247468031):
Using default value 247468031
Last sector, +sectors or +size{K,M,G} (247468031-251658239, default 251658239):
Using default value 251658239

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   247468030   123732991+  83  Linux
/dev/sda2       247468031   251658239     2095104+   5  Extended

Και τέλος φτιάχνουμε και το μελλοντικό swap
Command (m for help): n
Partition type:
p   primary (1 primary, 1 extended, 2 free)
l   logical (numbered from 5)
Select (default p): l
Adding logical partition 5
First sector (247470079-251658239, default 247470079):
Using default value 247470079
Last sector, +sectors or +size{K,M,G} (247470079-251658239, default 251658239):
Using default value 251658239

Ιδού το νέο partition table
Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   247468030   123732991+  83  Linux
/dev/sda2       247468031   251658239     2095104+   5  Extended
/dev/sda5       247470079   251658239     2094080+  83  Linux

αλλάζουμε το partition type στο swap
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)

Command (m for help): p

Disk /dev/sda: 128.8 GB, 128849018880 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048   247468030   123732991+  83  Linux
/dev/sda2       247468031   251658239     2095104+   5  Extended
/dev/sda5       247470079   251658239     2094080+  82  Linux swap / Solaris

βάζουμε το boot flag στο 1ο partition
Command (m for help): a
Partition number (1-5): 1

Command (m for help): p

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   247468030   123732991+  83  Linux
/dev/sda2       247468031   251658239     2095104+   5  Extended
/dev/sda5       247470079   251658239     2094080+  82  Linux swap / Solaris

και τέλος γράφουμε τις αλλαγές στον δίσκο
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

όπως βλέπετε οι αλλαγές δεν είναι ορατές από τον kernel οπότε πρέπε να δοκιμάσετε είτε με το partprobe, είτε με το kpartx. Αν κανένα από τα δύο δεν πιάσει, απλά κάνετε reboot και μπαίνετε σε single user mode

Αφού καταφέραμε να μεγαλώσουμε το partition, πρέπει τώρα να μεγαλώσουμε και το filesystem μέσα σε αυτό. Ευτυχώς για εμάς αυτό το κάνει το resize2fs

# resize2fs /dev/sda1
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/sda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 8
The filesystem on /dev/sda1 is now 30933247 blocks long.

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4      117G   20G   92G  18% /
none           tmpfs     4.0K     0  4.0K   0% /sys/fs/cgroup
udev           devtmpfs  991M   12K  991M   1% /dev
tmpfs          tmpfs     201M  488K  200M   1% /run
none           tmpfs     5.0M     0  5.0M   0% /run/lock
none           tmpfs    1001M     0 1001M   0% /run/shm
none           tmpfs     100M     0  100M   0% /run/user

===================

Για το τέλος αφήσαμε το swap:

# free -m
total       used       free     shared    buffers     cached
Mem:          2001        592       1409          0         62        459
-/+ buffers/cache:         71       1930
Swap:            0          0          0

όντως δεν υπάρχει swap αφού δεν το φτιάξαμε οπότε πάμε να το "φορμάρουμε"

# mkswap /dev/sda5
Setting up swapspace version 1, size = 2094076 KiB
no label, UUID=8d78c3dc-5ed9-42c1-a04f-050b99b8a39d

είμαστε έτοιμοι και χωρίς απώλειες ελπίζω!

posted by qubix on May 18, 2015

Αν ξαφνικά κάποια εφαρμογή που τρέχουμε πιάσει όλη τη διαθέσιμη ελεύθερη μνήμη, το πιθανότερο είναι ξαφνικά να κλείσει και να χάσουμε ότι δουλεύαμε. Υπάρχουν και άλλοι λόγοι για τους οποίους μπορεί η εφαρμογή να κλείσει απότομα, αλλά εδώ θα κοιτάξουμε την περίπτωση όπου απλά θα έπρεπε να έχουμε περισσότερη διαθέσιμη μνήμη RAM.

Προφανώς μία λύση είναι να ..αγοράσουμε περισσότερη RAM. Αυτό όμως δεν είναι πάντα εφικτό. Ίσως το μηχάνημα να μην παίρνει περισσότερη μνήμη, ίσως δεν υπάρχουν άλλα slots για να μπει, ίσως είναι κάποιο εταιρικό laptop το οποίο δεν μπορούμε ή δε θέλουμε να πειράξουμε.

Ήρθε η ώρα λοιπόν για τη δημιουργία ενός swapfile! Τι είναι αυτό καταρχάς. Το swapfile είναι ένα αρχείο το οποίο το λειτουργικό μπορεί να χρησιμοποιήσει ως εικονική μνήμη RAM όταν η κανονική τελειώσει. Αυτό έχει τα υπερ του, όπως για παράδειγμα το οτι μπορούμε να βάλουμε 64Gb αν θέλουμε και να σηκώσουμε 10 Virtual machines με windozzzee, αλλά έχει και το κατά πως οι σκληροί δίσκοι -ακόμη και οι ssd- είναι αργοί σα χελώνες σε σύγκριση με τη RAM και όλα θα σέρνονται.

Εν πάση περιπτώσει η διαδικασία είναι πολύ απλή. Χρειάζεται βέβαια να έχουμε δικαιώματα root ή παραπλήσια ώστε να την πραγματοποιήσουμε.

Πάμε παρακάτω λοιπόν:

1) τσεκάρουμε αν υπάρχει ήδη swap file ή κάποιο swap partition

free -m

αν δεν υπάρχει swap θα πρέπει να δείτε μια γραμμή

Swap: 0 0 0

2) εφόσον δεν υπάρχει κάποιο swap, πάμε να φτιάξουμε ένα με το utility fallocate

fallocate /swapfile -l 2G

έβαλα εγώ τώρα 2G, μπορείτε εσείς να βάλετε όσο θέλετε, κατά προτίμηση όσο και η διαθέσιμη RAM που έχετε, εκτός και έχετε πολύ λίγη οπότε βάλτε επί δύο ή τρία

3) κάνουμε το αρχείο swapfile format ως swap

mkswap /swapfile

4) του δίνουμε τα κατάλληλα δικαιώματα για να μη διαμαρτύρεται το σύστημα πως είναι "insecure"

chmod 600 /swapfile

5) του δίνουμε μία να ξεκινήσει :]

swapon /swapfile

6) τσεκάρουμε πως τώρα υπάρχει swap

swapon (σκέτο χωρίς ορίσματα)

πρέπει να δούμε κάτι σαν το παρακάτω:

NAME TYPE SIZE USED PRIO
/swapfile file 2G 0B -1

7) πάμε τώρα στο αρχείο /etc/fstab να το δηλώσουμε ώστε σε κάθε εκκίνηση να γίνεται mount

nano /etc/fstab (ή vim, emacs ότι editor προτιμάτε)

και προσθέτουμε τη γραμμή

/swapfile1 none swap sw 0 0

8) σώζουμε το αρχείο και είμαστε έτοιμοι!

posted by qubix on January 10, 2015

Πάμε λοιπόν να εγκαταστήσουμε τον κλειστό driver της AMD για την κάρτα μας. Όλα πάνε καλά μέχρι που στην κονσόλα βλέπουμε το εξής error:

Error! Bad return status for module build on kernel: 3.17-1-amd64 (x86_64)
Consult /var/lib/dkms/fglrx/14.9+ga14.201/build/make.log for more information.

ή κάποιο παρόμοιο ανάλογα με την έκδοση του kernel και τη διανομή που χρησιμοποιούμε

Τι σημαίνει αυτό το error ακριβώς; Για να παίξει ο driver χρειάζεται ένα module που θα φτιαχτεί για τον kernel που χρησιμοποιούμε και που θα φορτώνεται με την εκκίνηση.
Απότι φαίνεται κατά το "χτίσιμο" (build) του module από τον πηγαίο κώδικα, κάποιο λάθος συνέβη το οποίο εμπόδισε το module από το να φτιαχτεί με το πρόγραμμα dkms (dynamic kernel module support) το οποίο καταγράφηκε σε κάποιο αρχείο log.

Αν πάμε όντως να δούμε τι λέει το build log του module, θα δούμε κάποιο προγραμματιστικό λάθος του c compiler (o κώδικας του fglrx module είναι σε C γλώσσα) που λέει πως το struct ‘acpi_device_flags’ has no member named ‘no_hotplug’ στο αρχείο kcl_acpi.c. Δε θα επεκταθούμε στο γιατί συμβαίνει αυτό, είναι ένα γνωστό bug.

Πως το φτιάχνουμε:

1) βρίσκουμε τα sources του module. Στη δική μου περίπτωση είναι στο
/usr/src/fglrx-14.9+ga14.201
μπορείτε να βρείτε το εν λόγω αρχείο είτε με find, είτε με locate.
Στην περίπτωση που βρείτε 2 αρχεία, αυτό που θα χρειαστούμε είναι στον φάκελο /usr/src/...

2) ανοίγουμε το αρχείο kcl_acpi.c (με δικαιώματα root)

3) βρίσκουμε τη γραμμή που λέει:

if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,7)

και βεβαιωνόμαστε πως είναι κάτω από το

static acpi_status KCL_ACPI_Slot_No_Hotplug(KCL_ACPI_DevHandle handle, u32 lvl, void *data, void **rv)
{

4) σβήνουμε το

if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,7)

και βάζουμε στη θέση του το

if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,7) && LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)

5) κοιτάμε τις επόμενες 3εις γραμμές κώδικα και προσέχουμε να είναι ίδιες με τις παρακάτω:

struct acpi_device *tdev = NULL;
struct pci_dev *pdev = (struct pci_dev *)data;
int device = 0;

6) σώζουμε το αρχείο

7) κανονικά χρειάζεται πρώτα να κάνουμε dkms add -m module -v ώστε να προστεθεί το module στο kernel tree. Παρόλο όμως που η αρχική μας προσπάθεια ήταν αποτυχημένη -κατά την πρώτη εγκατάσταση-, το module έχει ήδη προστεθεί απλά απέτυχε το build. Εν πάση περιπτώσει, δε χρειάζεται να κάνουμε το βήμα αυτό

8) κάνουμε compile το module

dkms build -m fglrx -v 14.9+ga14.201

(την ακριβή έκδοσή σας θα την βρείτε από το πακέτο του driver, είτε από το /usr/share/fglrx-VERSION/)

Θα πρέπει να δουμε στο τέλος το μήνυμα

DKMS: build completed.

9) κάνουμε εγκατάσταση το module

dkms install -m fglrx -v 14.9+ga14.201

θα πρέπει να δούμε το μήνυμα

DKMS: install completed.

10) τώρα είμαστε έτοιμοι με το ati-config να φτιάξουμε ένα καλό αρχείο για τον x.org (ή το κάνουμε manual αν το'χουμε!)



posted by qubix on January 2, 2015

Εάν έχετε την ατυχία να δείτε το μήνυμα

Command: MLSD
Error: Connection timed out
Error: Failed to retrieve directory listing

σημαίνει πως ο client που χρησιμοποιείτε (πχ filezilla) προσπαθεί να ανοίξει κάποιες πόρτες για να επικοινωνήσει με τον server και δεν τα καταφέρνει.

Η λύση λοιπόν είναι να πούμε στον ftp server να ακούει σε συγκεκριμένο port range για passive connections.

Βήματα:

1) Ανοίγουμε το αρχείο /etc/pure-ftpd.conf
2) Ψάχνουμε για τη γραμμή που γράφει “PassivePortRange 30000 35000″
3) Βγάζουμε το comment "#" και αλλάζουμε τις πόρτες σε αυτές που θέλουμε (πχ 6000 6100)
4) Σώζουμε το αρχείο
5) Κάνουμε restart τον pure ftp server

Αν ακόμη έχετε πρόβλημα, τσεκάρετε μήπως σας κόβει κάποιο firewall

posted by qubix on October 15, 2014

Ας υποθέσουμε πως για κάποιον λόγο χρειάζεται να σταματήσουμε τον postfix από το να στέλνει email αλλά θέλουμε να λαμβάνουμε (πχ μας έχουν χακέψει τον server και τέτοια ωραία).

Είναι πολύ εύκολο:
1) κάνουμε edit το main.cf
2) προσθέτουμε τη γραμμή: default_transport = error: Local delivery only!
3) πατάμε στην κονσόλα ένα postfix check έτσι για να αποφύγουμε δυσάρεστες εκπλήξεις με τυχόν σφάλμα στο configuration



posted by qubix on December 18, 2013

Πρόσφατα προσπαθούσα να κάνω update το bios μιας σχετικά παλιάς μητρικής gigabyte του 2006. Το καλό της υπόθεσης (νόμιζα) ήταν πως είχε ένα flash utility μέσα από το bios το οποίο υποτίθεται πως αν βάλεις το bios file σε ένα floppy disk, το διαβάζει και κάνει το update (για usb stick ούτε λόγος..).
Μετά από κάποιες αποτυχημένες προσπάθειες μιας και ότι δισκέτα και να έβαζα κάποιο I/O error γινόταν και μιας και το pc είχε linux οπότε κάτι κουλά windoze flash bios utils δεν μπορούσα να τα δοκιμάσω..είπα να δω τι γίνεται από κονσόλα linux..

Ε λοιπόν, πιο απλό δεν γίνεται:

1) κάνουμε install το flashrom
2) τρέχουμε $flashrom --read bios.bak για να πάρουμε backup το υπάρχον bios
3) μετά τρέχουμε $flashrom --write to_arxeio_tou_bios -p internal
Από την παραπάνω γραμμή που είναι αρκετά self-explaining, το μόνο που χρειάζεται να εξηγήσουμε είναι η παράμετρος -p, με την οποία λέμε στο flashrom ποιο chip να χρησιμοποιήσει για να γράψει το bios. O λόγος είναι πως υποστηρίζει παραπάνω από μια συσκευή, δηλαδή μπορεί να γράψει το bios/firmware σε κάρτες γραφικών, controllers και φυσικά και στην ίδια την μητρική οπότε χρειάζεται να του πούμε τι να κάνει.
To internal λοιπόν, το βάζουμε για flash σε μητρικές.

Για να πάρετε μια ιδέα του τι υποστηρίζει, πάτε εδώ: supported programmers

posted by qubix on October 10, 2013

Αρκετά πακέτα στο arch δεν βρίσκονται στα επίσημα repositories αλλά στο Arch User Repository.
Στον παρόν οδηγό δε θα χρησιμοποιήσουμε το yaourt που είναι ένα utility βοηθητικό για το AUR. Παρακάτω ακολουθεί η διαδικασία εγκατάστασης του πακέτου gimp-gap (GIMP Animation Package).

1) Πάμε στη σελίδα του aur για το πακέτο gimp-gap
https://aur.archlinux.org/packages/gimp-gap/

2) κατεβάζουμε στο /tmp/ το tarball
cd /tmp/ && wget https://aur.archlinux.org/packages/gi/gimp-gap/gimp-gap.tar.gz

2.5) αν δεν έχουμε το base-devel το κάνουμε install:
pacman -Su base-devel

3) κάνουμε untar το tarball και μπαίνουμε στο directory που θα δημιουργηθεί
tar xvzf gimp-gap.tar.gz && cd gimp-gap

4) φτιάχνουμε το πακέτο και το κάνουμε install
makepkg -i --asroot
4.5) σε περίπτωση που υπάρχουν dependancies τα οποία απαιτούνται για να συνεχιστεί η εγκατάσταση, τρέχουμε
makepkg -s --asroot
η εγκατάσταση των dependancies και τυχόν compilations μπορεί να πάρουν αρκετή ώρα οπότε απλά..περιμένουμε :]

4.5.1) μετά κάνουμε
makepkg -U pacman -U gimp-gap-2.6.0-1-x86_64.pkg.tar.xz

και η εγκατάσταση ολοκληρώνεται!

hyperworks