Monday, November 19, 2007

ΠΩΣΚΑΝΩ map ένα φάκελο απο XP σε Vista

Και σιγά μη δούλευε out-of-the-box. Τέσπα. Έχουμε κα λέμε

Τα XP έχουν μία λειτουργία, η οποία ονομάζεται simple file sharing. Στα Ελληνικά πρέπει να είναι κάτι σαν "Απλό δια μοίρασμα φακέλων" ή κάτι τέτοιο... Φαντάζομαι. Η λειτουργία αυτή προτείνεται (τρομάρα της) για να "απλοποιήσει" την διαδικασία διαμοιρασμού φακέλων. Αμ δε.. αντί να την απλοποιεί πιο δύσκολη την κάνει. Anywayz αν αυτή η λειτουργία είναι απενεργοποιημένη τα Vista αρνούνται πεισματικά να κάνουν map οποιοδήποτε share.

Για να το απενεργοποιήσεις ανοίγεις ένα File Explorer παράθυρο ή το My Computer και επιλέγεις με τη σειρά Tools -> folder options -> view. Πας κάτω κάτω και ενεργοποιείς την επιλογή "Simple File Sharing". Στην συνέχεια κάνεις share όποιο φάκελο θέλεις και είσαι έτοιμος. Σχεδόν. Θα πρέπει να ορίσεις στα permissions του φακέλου οτι μπορεί ο καθένας να το κάνει map επιλέγοντας για χρήστη τον Everyone.

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


Φάκεν windoze

Tuesday, July 17, 2007

ΠΩΣΚΑΝΩ mount ένα XP Samba share και βλέπω Ελληνικά

Εχουμε το ακόλουθο θέμα.
Υπάρχει ένας υπολογιστής με Windoze XP ο οποίος μοιράζει ένα φάκελο με αρχεία ή/και υποφάκελους σε ένα δίκτυο. Κάποια ή όλα από τα αρχεία και τους υποφακέλους είναι γραμμένα με Ελληνικούς χαρακτήρες.
Θέλω τώρα απο ένα Linux PC να κάνω mount (να αναρτήσω? μπλιάχ) τον μοιραζόμενο φάκελο. Προφανώς θα χρησιμοποιήσουμε samba. Πώς όμως θα καταφέρω να βλέπω τα Ελληνικά αρχεία και φακέλους? Η κωδικοσελίδα των XP ειναι η 737 συνήθως και αν είστε σωστοί θα χρησιμοποιείτε utf8 στο Linux PC. Η εντολή για να γίνει mount το συγκεκριμένο share είναι η ακόλουθη:

# mount -t smbfs -o codepage=cp737,iocharset=utf8 //winxp/share /local/foo

με άλλα λόγια, στο codepage δηλώνουμε την κωδικοσελίδα του win PC και στο iocharset την κωδικοσελίδα που χρησιμοποιούμε στο Linux PC.

Friday, June 22, 2007

Optimizing Linux Kernel Boot times for embedded devices II

Συνεχίζοντας το προηγούμενο post σε συνάρτηση με το καινούριο podcast απο την timesys, γράφω εδώ τις σημειώσεις που κράτησα. Δεν είναι τα πάντα, απλώς αυτά που βρήκα ενδιαφέροντα.

Το podcast μπορείτε να το ακούσετε εδώ ενώ η ιστοσελίδα είναι εδώ. Θα βρείτε επίσης και κάποια links που είναι αρκετά ενδιαφέροντα.

Πάμε λοιπόν.

Reducing boot times (cont.)
  • Generally a small memory footprint ensures a faster boot time
  • By using CONFIG_EMBEDDED inlining is turned-off, and performance is improved
  • Another thing that CONFIG_EMBEDDED does is to reduce kernel static buffer sizes
  • Prelinking executables saves a lot of time, since the linker does NOT need to find where all the symbols are. You must use prelink
  • Profiling is also a nice way for performance debugging
A note on flash file systems
There are 2 widely used flash filesystems, jffs2 and yffs2. The first (jffs2) is very hard on compression while yffs2 is not. Depending on the trade off between speed and size, a decision must be made on which to use.
Finally bare in mind that when flash storage is reaching its limits the wear algorithms used might make writes take a long time. RAM caching and flushing might be a good idea for non critical data.

Execute in place (XIP)
XIP means that apps are NOT first copied to RAM and then executed, they are executed in place (dhaaaa). In place being usually the flash filesystem. Especially for apps that do not need to be run frequently this might be a big improvement. I wonder what happens when an app 'lives' on a ramdisk? Is it copied to RAM again, or is it run in place anyway?

That's it.

Friday, June 8, 2007

Optimizing Linux Kernel Boot times for embedded devices

Παρακολούθησα το παρκάτω podcast απο την timesys και το βρήκα πολύ ενδιαφέρον. Τα περισσότερα είναι βασικά για κάποιον που ασχολείται με embedded linux αλλά όταν τα ακους όλα μάζι είναι καλύτερα. Επίσης κάποια αν οχι όλα έχουν νόημα και σε full linux εκδόσεις.

http://lldn.timesys.com/files/Episode_011_LinuxLink_Radio.mp3

Κράτησα κάποιες σημειώσεις κατα τη διάρκεια και τις παραθέτω παρακάτω, στα Αγγλικά

Actual Boot Time Reduction
  • Remove default options from the kernel and use ONLY what is necessary
  • Use static network parameters
  • Remove usb drivers (they can be loaded later)
  • Remove component waitstates wherever applicable (kernel hacking)
  • Suppress boot messages (don't just redirect them to the serial)
  • Use busybox instead of a full SysV
  • Init can start an app directly by using "init=/" in the kernel params. Make sure the app always starts and NEVER exits cause you will get kernel panic
  • Statically link boot critical apps.
Perceived Boot Time Reduction
  • Use stage booting with initrd or initramfs in order to load "human interface drivers*" quickly. Show that something IS happening.
  • In addition to the above the app can be broken up so that it initializes in then initramfs (or initrd) and the rest of the facilities are initialized later.
(*)"human interface drivers": The term is not to be confused with USB HID. It means all the drivers that initialize and make usable those devices that can be perceived by human senses, be it LED's, beepers, screens etc.


General points
  • Initramfs can be tricky because if care is not taken when writing to disk, it can grow and eventually fill up the whole available ram.
  • Don't use runlevels
  • When using an app as an init replacement be extra careful
  • Nash is a lightweight shell for busybox.

The above does not cover the whole podcast nor is intended to do so. It's merely a personal reminder. Hope you find it useful

Friday, May 18, 2007

Exporting server home directories

In order to preserve permissions on the home directories of users on *nix server, while exporting them using NFS, they must be exported with the following options:

Assume we have user foo(uid=505) who is part of group foobar(gid=501). His home directory is obviously /home/foo.

In order to export it foo's PC with IP 10.10.10.10 the following line is added to /etc/exports:

/home/foo 10.10.10.10(rw,sync,all_squash,anonuid=505,anongid=501)

Reload/Restart the nfs daemon and mount the directory on foo's machine.

Doing an ls on foo's PC you might see odd user and group id's but these depend solely on foo's /etc/passwd and /etc/group number associations.

That's it

Thursday, May 3, 2007

Linux _syscallX macros removed in kernel 2.6.x

It seems that as of kernel version 2.6.x (which x? does anybody know?) the macros _syscallX (where X=1,2,3,4,5,6) have been removed. Now what is a poor developer to do in order to get a system call to work?

I haven't been able to find a proper written document describing the "Novo ordo seclorum" of the kernel but what I did is simple and seems to work (compiling at least).


The _syscallX macros produced a wrapper function for the standard glibc function syscall(). This is what I did also but without the macro.

Let's say you want to use

int sys_foo(char* arg1,int arg2,struct bar* arg3).


Back in the old kernel days you whould put the following in your C source file:

_syscall3(int, sys_foo, char*, arg1, int, arg2, struct bar*, arg3) /* mind the comma's */

and you would use sys_foo normally as being defined in the same source file.

Observe to what this macro expands:

int sys_foo (char* arg1, int arg2, struct bar* arg3)
{
return syscall( __NR_sys_futex, arg1, arg2, arg3);
}

Case solved. Use the above function prototype as a guide and you will be rubbing your eyes*



(*) Direct greek translation of the expression "τρίβω τα μάτια μου". It is meant as a greek joke. All foreign speaking visitors please ignore and replace with "you will be astonished" or something similar.

Monday, April 30, 2007

Let's see if Greek works

Για να δούμε πώς φαίνονται τα Ελληνικά

First post EVER (whoaaaaaa!!)

Here it is... my first blog place and my first post to it. My friend and colleague papo got me into it (lot of spanking involved) and i finally made it. Let's see if I'm gonna maintain it

Cheers