ช่วงนี้วุ่นวายอยู่กับ Single Board Computer หรือ SBC มาพักใหญ่จนเอา Debian ไปยัดใส่ให้มันทำงานได้แล้ว SBC ที่ผมเอามาเล่นคือรุ่น TS-7200 ที่เคยเขียนถึง การใช้งาน debian บน SBC ที่มี ARM9 เป็น CPU ก็ถือว่าทำได้ดีในงานที่ต้องการขนาดระบบที่เล็ก แต่ผมดันลืมทำ swap ให้มันซะนี่

การทำ swap ส่วนใหญ่ผมจะเข้าใจว่าต้องทำโดยการแบ่งพาติชั่นเป็นหลัก และครั้งนี้ลืมไปเลยว่าต้องทำ swap ด้วย จนเอามาใช้งานก็ติดๆขัดๆเรื่องของ memory บ่อยอยู่เหมือนกัน ทีแรกว่าจะ fdisk ใหม่แต่ก็กลัวพลาด (เป็นบ่อย) เลยหาวีธีเซฟๆหน่อย

เลยได้เป็นการทำ swap file ไม่ต้องทำเป็น swap patition เริ่มการทำเลย

1. ก่อนอื่นต้องสร้าง block ขึ้นมาใน harddisk หรือ compact flash ขนาดก็ดูจาก memory หลักคูณด้วยสอง SBC ผมมีRAM ขนาด 32 MB ผมก็สร้าง swap file ขนาด 64 MB ด้วยคำสั่ง dd ดังนี้

# dd if=/dev/zero of=/swapfile bs=1024 count=64k
# mkswap /swap
Setting up swapspace version 1, size = 67104 kB
no label, UUID=7cde6930-7f70-44ac-8f96-d847f20a7b0b

2. เริ่มการใช้งาน swap file ที่สร้างขึ้น

# swapon /swap
Adding Swap: 65528k swap-space (priority -1)

3. ตรวจดูการใช้งานของ swap file ที่สร้างขึ้น

# cat /proc/swaps
Filename                        Type            Size    Used    Priority
/swap                           file            65528   0       -1

หรือใช้คำสั่ง top

top - 22:27:45 up 1 day,  8:01,  3 users,  load average: 0.00, 0.00, 0.15
Tasks:  24 total,   1 running,  22 sleeping,   1 stopped,   0 zombie
Cpu(s):   0.7% user,   1.0% system,   0.0% nice,  98.4% idle
Mem:     28572k total,    27632k used,      940k free,      348k buffers
Swap:    65528k total,        0k used,    65528k free,    19068k cached
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
23959 root      17   0  1048 1048  844 R  1.6  3.7   0:00.24 top
    1 root       8   0   144  144   92 S  0.0  0.5   0:01.40 init
    2 root       9   0     0    0    0 S  0.0  0.0   0:00.08 keventd
    3 root      19  19     0    0    0 S  0.0  0.0   0:00.01 ksoftirqd_CPU0
    4 root       9   0     0    0    0 S  0.0  0.0   1:15.98 kswapd
    5 root       9   0     0    0    0 S  0.0  0.0   0:00.00 bdflush
    6 root       9   0     0    0    0 S  0.0  0.0   0:00.23 kupdated
    7 root       9   0     0    0    0 S  0.0  0.0   0:00.00 mtdblockd
  122 root       9   0     0    0    0 S  0.0  0.0   0:00.00 khubd
  254 daemon     9   0   124  124   48 S  0.0  0.4   0:00.02 portmap
  338 root       9   0   112  112   52 S  0.0  0.4   0:00.05 inetd
  346 root       8   0   324  320  204 S  0.0  1.1   0:00.06 sshd
  359 root       9   0   140  140   52 S  0.0  0.5   0:00.05 rpc.statd
  370 root       8   0   332  332  168 S  0.0  1.2   0:00.47 cron
  426 root       9   0   300  300   52 S  0.0  1.0   0:00.11 login
  427 root       9   0   868  868  584 S  0.0  3.0   0:00.15 bash
  575 root       9   0   632  624  340 S  0.0  2.2   0:15.45 sshd
  576 root       9   0   296  296   52 S  0.0  1.0   0:00.10 login
  577 root       8   0   816  816  504 S  0.0  2.9   0:01.59 bash
  903 root       9   0   628  620  340 S  0.0  2.2   0:01.40 sshd
  925 root       9   0   296  296   52 S  0.0  1.0   0:00.09 login
  926 root       9   0  1232 1232  672 S  0.0  4.3   0:00.27 bash
14986 root       9   0  1560 1560   52 T  0.0  5.5   0:01.70 zip
30177 root       9   0   260  260  184 S  0.0  0.9   0:00.22 syslogd

ถ้าได้อย่างนี้แล้วก็คือใช้งานได้แล้ว

4. สุดท้ายเอาไปเพิ่มไว้ไนไฟล์ fstab เพื่อให้ใช้งานได้เองหลังจากบูทเครื่องทุกครั้ง

proc             /proc         proc    defaults                 0    0
none            /dev/pts        devpts        gid=5,mode=620    0 0
/swap           none    swap    sw      0       0
/dev/sdcard0/disc0/part3        /       ext2    defaults,noatime,sync   1 1